Utilizarea Android Studio#

Android Studio este un mediu de dezvoltare (IDE) pentru dezvoltarea aplicațiilor Android, bazat pe IntelliJ. Acest program îți compilează codul, creând un program apk, care este instalat pe Robot Controller: fie pe Control Hub, fie pe un telefon Android legal.

Descărcarea Android Studio#

Dacă deja ai descărcat Android Studio, poți sări la următorul pas, care este pregătirea SDK-ului.

Pașii pentru descărcarea și pregătirea Android Studio sunt:

  1. Verifică dacă sistemul tău este suficient de performant: cerințe necesare

  2. Instalează cea mai recentă versiune de Android Studio de la https://developer.android.com/studio/index.html

  3. Rulează programul executabil, urmează pașii, și folosește orice sau toate kit-urile recomandate de dezvoltare.

Pregătirea SDK-ului#

Acum că ai instalat Android Studio, trebuie să îti pregătesti SDK-ul (prescurtat de la software developement kit / kit-ul de dezvoltare software) al sezonului curent cu care îți vei scrie codul robotului.

Descărcarea SDK-ului#

SDK-ul este publicat pe un repository (un loc unde este stocat online cod-ul) pe GitHub în fiecare sezon. SDK-ul sezonului curent poate fi găsit pe FtcRobotController.

Descărcarea ZIP-ului#

  1. Când ești pe repository, apasă pe butonul verde numit „code”, apoi selectează „Download ZIP”.

    Apasă pe opțiunea de "Download ZIP"
  2. Apoi, salvează-l la locația dorită pe calculatorul tău.

    Fișierul ZIP ar trebui să se numească FtcRobotController-master
  3. După ce s-a salvat, extrage conținutul ZIP-ului și pune-l în ce locație dorești. Ar trebui să vezi conținutul SDK-ului în locația folder-ului.

Utilizarea GitHub Desktop#

  1. Instalează GitHub Desktop

  2. Deschide repository-ul SDK-ului într-un browser.

  3. Apasă butonul verde „code” și apoi selectează „Open with GitHub Desktop.”

    Apasă pe opțiunea Open with GitHub Desktop (Deschidere cu GitHub Desktop)
  4. Clonează proiectul.

    Clonează repository-ul în folder-ul tău de resurse

Din Terminalul de Comandă#

  1. Instalează git

  2. Deschide terminalul (probabil bash) în locația dorită a resurselor.

  3. Folosește $ git clone https://github.com/FIRST-Tech-Challenge/FtcRobotController.git

Deschiderea SDK-ului în Android Studio#

  1. Deschide Android Studio. Dacă ai deja un alt proiect deshis, închide-l.

    Un meniu ar trebui să apară cu o opțiune de a configura setări și importarea unui proiect.
  2. Verifică dacă există actualizări. Apasă pe meniul „configure” și selectează „check for updates”. Dacă nu ai cea mai recentă versiune, descarcă actualizările.

    Dacă nu există actualizări, ar trebui să scrie că ai cea mai recentă versiune instalată.
  3. Selectează „Import Project”. Navighează unde ai salvat SDK-ul pe calculatorul tău. Selectează registrul care are logo-ul Android.

    Doar selectează folder-ul cu logo-ul Android
  4. Schimbă modul de vizualizare în „project view”. În colțul din stânga sus ar trebui să fie un meniu care îți permite să schimbi modul în care te uiți la proiectul tău.

    Schimbă modul de vizualizare în "project view"
  5. Așteaptă ca Gradle să termine build-ul. Acest indicator ar trebui să fie localizat în partea de jos a ferestrei implicit.

    Un build Gradle in desfășurare

Aspect#

Android Studio poate arăta intimidant la prima vedere, însă sunt doar câteva caracteristici necesare pentru a-l folosi corect.

Aspectul Android Studio

Crearea Claselor#

Primul lucru de reținut în „proiect view” este lista de elemente cu numele proiectului. Dacă apeși pe listă, vei vedea toate fișierele Gradle și registrele. Navighează la folder-ul TeamCode, unde vei vedea un pachet org.firstinspires.ftc.teamcode.

TeamCode > src > main > java > org.firstinspires.ftc.teamcode

Aici este locul unde vei crea cod pentru robot. Pentru a crea o clasă nouă Java, click-dreapta pe pachet, selectează New, și apoi alege „Java Class”.

New > Java Class

Alternativ, poți selecta opțiunea „Package” dacă vrei să creezi un subfolder pentru scopuri organizaționale. Apoi, poți crea clase în acele pachete.

Terminalul și Logcat#

Aproape de colțul din stânga-jos al aplicației, vei găsi tab-uri pentru terminalul local și logcat-ul. Acestea sunt unelte folositoare pentru programul tău.

Tab-ul terminalului și logcat-ul aproape de colțul din stânga-jos

Niște informații folositoare în legătură cu folosirea logcat-ului pot fi găsite aici.

Notă

Îți poți construi (build) programul prin linia de comandă prin terminalul local. Apasă pe tab-ul terminalului și apoi scrie gradlew :TeamCode:clean :TeamCode:build. Aceasta comandă va șterge fișierele compilate anterior și va construi un nou modul TeamCode.

Instalarea Programului Tău#

Pentru a-ți instala programul pe Robot Controller, va trebui să folosești butonul „play” localizat aproape de colțul din dreapta sus al ferestrei aplicației.

Butonul "play" de lângă lista de device-uri

Lângă acesta vei vedea o listă de dispozitive. Când îți conectezi Robot Controller-ul la calculator (prin cablul corect), device-ul ar trebui să apară în listă dupa ceva timp. Apoi, apasă pe butonul play iar programul tău se va instala pe dispozitiv.

Sfat

Ocazional, aplicația nu va reusi să pornească pe robot controller, lăsând driver station-ul într-o stare deconectată. Dacă acest lucru se întamplă, dechide terminalul și scrie comanda

adb shell am start -n com.qualcomm.ftcrobotcontroller/org.firstinspires.ftc.robotcontroller.internal.PermissionValidatorWrapper

pentru a porni de la distanță aplicatia Robot Controller

Dacă intervine orice problemă în acest proces, citește documentația oficială `REV b<https://docs.revrobotics.com/duo-control/>`_. Câteva pagini folositoare de pe site-ul REV sunt:

If you’re still stuck you can ask for help in the FTC|reg| Discord.

Gradle#

Gradle este o unealtă de construcție pentru dezvoltarea software-ului. În scopul FTC, este folosit pentru a construi și organiza dependențele (dependencies) proiectului tău.

Când îți actualizezi fișierele Gradle trebuie să faci o sincronizare Gradle, care îți sincronizeaza proiectul cu schimbările făcute și îl reconstruiește. În build.common.gradle, vei găsi informații despre cum aplicația pentru Robot Controller este construită.

Reconstruirea#

Îți poți reconstrui proiectul cu ușurință în meniul „build”.

Meniul "build" în partea superioară a ecranului

Pentru a reconstrui de la un proiect „curat”, selectează „clean project”. Această opțiune îți șterge fișierele compilate din proiect pentru a-ți putea reconstrui complet proiectul. Îți curăță orice fișiere de producție, fișiere generate, etc. Această opțiune este folositoare pentru a te asigura că artefactele vechi nu îți strică proiectul atunci când îți construiești codul. Când îți construiesti următorul proiect, îl va face de la 0 fără fișiere compilate anterior de la care se poate „inspira”. Pentru a-ți reconstrui proiectul, apasă pe opțiunea „rebuild”.

Invalidează și Restartează#

Uneori poți să primești erori după ce muți lucrurile din loc, refactorizezi, etc. Primul pas este să încerci să îți cureți proiectul și să îl reconstruiești. Dacă această metodă nu merge, s-ar putea să fi pus Android Studio în „ceață” deoarece stochează informații despre structura proiectului tău.

Cea mai comună metodă de a rezolva aceste erori este de a invalida erorile și de a restarta aplicația. În meniul „file”, ar trebui să fie o opțiunea „Invalidate and Restart”. Această opțiune curață cache-ul și restartează Android Studio, care ar trebui să realizeze un Gradle rebuild.

Adăugarea Dependențelor#

Dacă vrei să adaugi dependențe proiectului tău, poți face acest lucru în fișierul build.gradle din registrul TeamCode.

Ar trebui să fie un bloc de dependențe la sfârșitul fișierului.

// Include common definitions from above.
apply from: '../build.common.gradle'
apply from: '../build.dependencies.gradle'

dependencies {
     implementation project(':FtcRobotController')
     annotationProcessor files('lib/OpModeAnnotationProcessor.jar')
}

Unele dependențe au nevoie de schimbări la alte fișiere Gradle. Asigură-te că ai citit instrucțiunile de instalare pentru orice dependențe pe care vrei să le adaugi proiectului.

Apoi, adaugi o linie de cod în blocul de dependențe pentru a implementa dependența. Acest lucru se face în general cu implementation 'com.package.name'.

dependencies {
    implementation project(':FtcRobotController')
    annotationProcessor files('lib/OpModeAnnotationProcessor.jar')

    implementation 'com.package.name:name:version'
}

Citește instrucțiunile pentru orice librărie folosești pentru a adăuga numele și versiunea corectă a pachetului.

În final, realizează o sincronizare Gradle.

Actualizarea la Java 8#

Implicit, versiunea SDK-ului Java este setată la 7. Java 8 este de asemenea compatibilă. Probabil vei vrea să actualizezi versiunea Java de la 7 la 8 pentru a folosi funcții precum lambda sau generice. Unele librării de asemenea vor avea nevoie de o versiune Java actualizată.

Pentru a actualiza la Java 8, navighează la fișierul build.common.gradle, iar mai jos vei găsi acest bloc:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

Schimbă 7 în 8, așa:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

Apoi, realizează o sincronizare Gradle.

Depanarea Android (ADB / Android Debug Bridge)#

Notă

Pe macOS, Linux, sau Powershell Windows vei fi nevoit să schimbi orice comandă care începe cu adb ca să înceapă cu ./adb dacă ești în registrul platform-tools.

Logcat#

Logcat is extremely useful for debugging issues with your code at runtime or figuring out what went wrong. For example, if your app activity crashes and you pull up the log seeing 5000 lines of the same error, there is probably infinite recursion in your code!

Pentru a folosi logcat, conectați-vă dispozitivul prin cablu (sau ADB). Apoi, selectează aplicația pentru care vrei să vizualizezi istoricul (log). Fereastra ta ar trebui să arate așa:

Un dispozitiv selectat și aplicația cu mesajele de erori

If you have an issue you don’t understand, you can take a screenshot of the log or select and copy the error and ask a question in the FTC discord.

Comunicare Wireless#

Depanarea Android (ADB) este o unealtă prin terminalul de comandă care îți permite să comunici wireless cu Robot Controller-ul (telefon sau Control Hub).

ADB ar trebui să vină implicit cu uneltele din Android Studio. Navighează în fișierul local.properties în root-ul (fișierul de bază) proiectului tău și ar trebui să vezi un drum către Android SDK-ul instalat pe calculatorul tău, precum C:\Users\Woodie\AppData\Local\Android\Sdk. Apoi navighează către platform-tools, iar o aplicatie numită adb ar trebui să fie acolo. Pentru a o folosi, deschide CLI (precum Powershell sau terminalul de comandă) și rulează adb devices sau ./adb devices.

Pentru mai multe informații despre ADB, te poți uita pe pagina pentru dezvoltatori.

Pregătirea ADB-ului#

  1. Asigură-te că depanarea USB este activată pe dispozitivul tău și este în modul de dezvoltator.

  2. Asigură-te că ai ADB instalat. Dacă nu îl ai, urmează instructiunile la acest link

Notă

Poți folosi logcat via ADB prin comanda adb logcat. Această comandă este foarte folositoare pentru depanare deoarece îți permite să te uiți la istoric wireless, ceea ce salvează timp. Reține, logcat este cea mai bună metodă să îți depanezi software-ul.

Adaugă ADB la PATH#

Adăugarea variabilelor în PATH

Dacă vrei să folosești ADB din orice registru, adaugă-l în PATH. Urmează un tutorial online pentru adăugarea în PATH și setează PATH la registrul platform-tools . Odată ce faci asta, poți rula comenzi ADB de oriunde pe sistemul tău.

Conectarea Wireless la un Telefon#

  1. Conectează telefonul conectat la robot în calculator.

  2. Rulează comanda adb devices în registrul platform-tools și vezi dacă îți apare telefonul.

  3. Rulează adb usb, apoi adb tcpip 5555. Acum poți deconecta telefonul.

  4. Conectează-te la aceeași rețea WiFi la care dispozitivul este conectat sau găzduiește. Rețeaua WiFi Direct creată de telefon ar trebui să se numească „TEAMNUMBER-RC” sau alte variante asemănătoare. Poate include și litere în plus dacă ai mai multe dispozitive pe echipe. Uită-te în acticolul RS01 din Game Manual Part 1 pentru mai multe detalii în legatură cu standardul de numire al rețelelor.

  5. Conectează-te la telefon prin comanda adb connect 192.168.49.1:5555. Dacă aceasta nu merge, verifică adresa IP a telefonului și încearcă cu adresa IP respectivă dacă este diferită.

Conectarea Wireless la un Control Hub#

  1. Conectează-te la hotspot-ul WiFi găzduit de Control Hub. Hotspot-ul ar trebui să fie numit „TEAMNUMBER-RC” sau asemănător. S-ar putea să includă și litere în plus dacă ai mai multe dispozitive în echipă. Citește Game Manual Part 1 pentru mai multe detalii în legătură cu standardul de numire.

  2. Odată ce esti conectat la rețeaua Control Hub-ului, pur și simplu te conectezi la el prin comanda adb connect 192.168.43.1:5555.

Odată ce o conexiune este stabilită, ar trebui să apară în lista de dispozitive în Android Studio.

Configurare Wireless#

Îți poți face o configurație în Driver Station sau Robot Controller în mod normal. Totuși, îți poți crea și o configurație validă printr-un fișier XML în TeamCode/src/main/res/xml. Îți poți găsi fișierele de configurare în folder-ul /sdcard/FIRST sub formă de fișier XML cu acelaș nume al configurației.

Pentru a lua aceste fișiere XML wireless, poți folosi adb pull /sdcard/FIRST/config.xml /fully/qualified/path/res/xml.

Dacă o configurație validă dintr-un fișier XML este în res/xml, aceasta va apărea în lista de configurații și o poți folosi pe robot când o încarci pe Robot Controller sau pe Control Hub.

Administratorul SDK-ului#

Poți găsi administatorul SDK-ului (SDK manager) în meniul din colțul din dreapta-sus în Android Studio.

Un meniu cu o sageată îndreptată în jos

Aceptarea Licențelor#

Dacă primești o eroare în legătură cu licențele ce nu pot fi aceptate, urmează acești pași:

  1. Du-te în „SDK manager” și în „SDK Platforms”

  2. Selectează versiunea cu nivelul API specificat de eroare

  3. Apasă pe „Apply” și asteaptă să se instaleze componentele.

  4. Odată ce s-a terminat, apasă pe „Finish”, apoi „Ok”. Așteaptă ca Android Studio să indexeze dacă face acest lucru.

  5. Restartează Android Studio.

Instalarea Uneltelor SDK#

Pentru a instala uneltele SDK, precum uneltele pentru platformă sau pentru build, deschide SDK manager și du-te la SDK Tools. Selectează uneltele pe care vrei sa le instalezi și instalează-le în acelas fel în care ai instalat platformele SDK.

Version Control (Jurnal)#

Version Control este o unealtă foarte folositoare. Îți permite să te uiti (și să revii) la versiuni anterioare ale codului, colaborare facilă, multiple versiuni ale codului care pot fi combinate împreună, etc.

Noi recomandăm git, în special când este folosit cu un meniu interactiv (GUI) precum uneltele VCS ale Android Studio sau GitHub Desktop. Deși un tutorial de git nu este documentat în Game Manual 0, aici sunt câteva resurse git: