Göm menyn

TDDD80 Projekt: Mobila och sociala applikationer

Laboration A1 Komma igång


Komma igång med Android

I denna laboration kommer du jobba med att skapa en enkel android applikation.

Syfte: Att komma igång med android utveckling, skapa enkla grafiska gränssnitt (GUI), samt jobba med händelsestyrd programmering. Vi kommer att använda Android Studio för att genomföra labben

Android utveckling på IDA

För att starta Android Studio, ge följande kommandon i en terminal:

  • module add courses/TDDD80 (om ni inte har använt initadd i tidigare labbar)
  • studio.sh

Kör helst på telefon

Glöm inte att ta med USB-sladd till telefonen!

Det är beräkningsmässigt tungt att emulera en mobiltelefon, då Android Studio behöver emulera en kraftfull mobil, vid sidan om allt annat som ska köra på datorn. Därför rekommenderar vi att ni använder fysisk telefon för att köra er app om det är möjligt.

Kontrollera vad telefonen har för Android version installerad. Översätt telefonens OS-version till motsvarande API-nivå. Ange denna API-nivå när ni skapar nya projekt i Android Studio, för att säkerställa att er app går att köra smidigt på just er telefon. Eftersom varje SDK tar mycket minne, var sparsamma med vilka SDK (API-nivåer) ni installerar i Android Studio. Det bör räcka med en SDK, för den API-nivå ni ska arbeta med (target API-nivå i ert projekt).

I andra hand: kör på egen dator

Har ni ingen telefon, men har egen laptop som har dedikerat grafikkort, kan ni med fördel köra på egen dator (För inställningar för emulatorn: se Bra inställningar nedan). För att ladda ner Android Studio, gå till Android Studio download archives. Scrolla ner på sidan och klicka på den gröna knappen 'I agree to the terms' för att få tillgång till äldre versioner. Vi kör version Android Studio Dolphin | 2021.3.1 Patch 1 October 13, 2022.

I sista hand: kör på emulator

I sista hand (om ni inte har telefon/tablet till hands, och ingen laptop), kommer ni att kunna köra på en emulator i SU-pul. För att skapa en ny emulerad mobil, dvs. en AVD (Android Virtual Device), klicka i menyraden på ikonen som ser ut som en telefon (med en grön gubbe i högra-nedre hörnet). Detta tar upp AVD Manager, där ni kan se era AVD:n, och skapa nya. Det går även att välja/skapa AVD när man kör igång själva appen. Notera att det behövs ca. 10 GB minne på er hårddisk när den körs, och varje AVD som man har skapat tar ytterligare 1 GB. I praktiken är det bäst att bara ha en AVD definierad åt gången p.g.a. diskutrymme.

Bra inställningar

När ni skapar en AVD (Android Virtual Device), välj en mobil med liten skärm, och lågupplöst skärm (litet dpi). För labbarna är det bäst att använda en simulerad mobil som har Google API med-kompilerad (inte Google Play). Så, när du skapar en ny AVD, välj en API-image som inte har den lilla triangeln för Google Play bredvid sig. Ett bra val är t.ex. Pixel 5 med Google-API image. Fördelen med Google API mobiler är att de är tänkta för utveckling (inte sluttestning) och tillåter inställningar enligt nedan:

  • Emulated Performance: Graphics: Hardware
  • Show Advanced Settings:
    • Boot option: Cold boot
    • RAM: 4096 MB
    • VM heap: 512 MB

Köra igång och stoppa AVD

Kör igång AVD:n m.h.a. den lilla vita Run-knappen (ligger bredvid AVD:n i listan av skapade AVD:n). Notera eventuellt felmeddelande i terminalen där du startade upp Android Studio.

Stoppa AVD:n t.ex. genom att klicka i lilla kryssrutan i tabben som kommer att dyka upp i AVD-fönstret när AVD:n körs.

Rensa bort en AVD

Ni kan ta bort en AVD genom att klicka på de vertikala tre punkterna längst till höger vid AVD-definitionen i AVD-manager, och välja Delete.

Köra remote

Du ska helst sitta i SU-pul, för att inte emulatorn ska hacka eller upplevas långsam. Om du väljer att köra remote mot en SU-dator:

  • Logga först in på VPN
  • Logga sedan in via RDP (Remote Desktop Protocol)
    • Se vilka datorer som är lediga just nu. När du klickar på en ledig (grön) dator, kommer en inställningsfil att laddas ner till din dator.
    • Dubbelklicka på inställningsfilen som laddades ner, eller öppna den inifrån din RDP-klient. Du kommer då att få ange inloggningsuppgifter, och blir sedan uppkopplad mot den valda datorn.
    • Notera att någon annan som sitter i SU-pul kan senare komma att logga in på samma dator som du kör på...

Fel kring app:clean

Om ni får fel av typen: Error:Execution failed for task ':app:clean': Unable to delete directory: xxx

Detta är ett problem som uppstår på IDAs filsystem, då NFS håller kvar en låsning på en fil. Det släpper efter ett tag, alt. har Android Studio en process som ännu inte avslutats korrekt. Ni kan manuellt gå in och ta bort katalogerna/filerna xxx från terminalen. (För kommandon, se längst ner i listan nedan.)

Slut på diskutrymme?

Om Android Studio har installerat komponenter på ditt konto som du inte behöver, kan du rensa bort filerna så här:

  • För att se hur mycket diskutrymme du har kvar, skriv följande i ett terminalfönster:
    df -h
  • För att leta efter de största filerna:
    du -m * | sort -n
  • De mappar som Android Studio brukar skapa är:
    ~/.android/avd/ (ca 1 GB för varje avd som man har skapat inifrån Android Studio)
    ~/Android/sdk/ (upp till 50 GB om alla API-nivåer, och tools, har installerats i SDK-manager)
  • Ta bort valda mappar inklusive dess filer:
    rm -rf path_till_mappen
    (Notera att om man istället tar bort en mapp via grafiska filhanteraren, så hamnar mappen i Papperskorgen, och kommer fortfarande att ta upp utrymme - ända tills man tömmer papperskorgen.)

Problem med clean och build

Om du får problem med att din app inte går att bygga, och felmeddelandet har någonting att göra med Gradle:Clean så beror det nog på att Instant Run är igång (vars syfte är att undvika "onödig" clean och omkompilering vid omkörning av koden). Det går att stänga av Instant Run genom att gå in på:

File → Settings sen Build, Execution, Deployment → Instant Run, och sen avmarkera Instant run.

Länkar

Uppgift

Första steget i laborationen är att utforska (Googla) och skriftligt förklara viktiga grundbegrepp Det är viktigt att ni för varje svar lägger med de URL:er (länkar) som ni har bedömt vara trovärdiga och som ni har använt för att sammanställa ert svar. (Svaren lämnas in i README-fil i Gitlab, tillsammans med labb-koden):

  1. Vad är Androids 'R' för något, vad innehåller den för information, hur genereras den? Hur används den i Android-kod, t.ex. i onCreate i en Activity?
  2. Vad är Gradle? Vad innebär Gradle sync?
  3. Vad brukar man lägga med för inställningar i de build.gradle filer som finns i varje projekt, dvs. a) i build.gradle på projektnivå b) build.gradle på app-nivå

Laborationen genomförs i par. Ni ska skapa en enkel app för textinmatning. Text ska matas in i ett fält och sen flyttas och visas i ett annat. Exempelvis kan det se ut på följande vis: Texten "Hello world!" skrevs in tidigare. Sedan skrivs texten "And good day to you!" in. När sen knappen "Lägg till" klickas flyttas texten och läggs efter "Hello world!".

Krav

Icke-Funktionella krav

Du ska använda dig av:
  • Java (eller Kotlin) för att skapa en Android applikation
  • En .xml file för att definiera Gränssnitt
  • View Binding för att koppla layout-xml till koden som körs
  • Versionshantering av din kod (gitlab)

Funktionella krav

Din lösning ska innehålla:
  • Ett textfält för inmatning av ny text
  • Ett textfält för att visa tidigare inmatad text
  • En knapp för att flytta text från det ena fältet till det andra

Redovisa

  1. Muntligt redovisa/demonstrera er laboration för en assistent
  2. Ladda upp era sök-svar inkl. länkar, och er kod (alla relevanta filer för labben) (gärna kontinuerligt) till ert gitlab-projekt. Skapa gärna ett nytt repo för android-labbarna.
  3. Lägg till er assistent som Reporter på ert projekt
  4. Meddela er assistent att ni lagt upp koden genom att skicka ett mejl. Märk mejlet med TDDD80: Labb A1, och se till att det finns en länk till repot i mejlet.


Sidansvarig: Rita Kovordanyi
Senast uppdaterad: 2024-02-19