Google släppte GSI: er av den andra Android Q-betan. Dessa systembilder kan installeras på Project Treble-kompatibla enheter för apptestning. Här är hur.
När vi går närmare och närmare den slutliga versionen av Android Q, förkortas tiden för utvecklare att uppdatera sina applikationer. Även om Android 9 Pie (API-nivå 28) ännu inte har nått de allra flesta enheter, måste Google Plays API-nivåkrav, som du bör redan vara väl medveten om, kommer att tvinga dig att rikta in dig på API-nivå 29 2020. Om du inte redan har uppdaterat din app för att rikta in dig på Android 9 Pie, sedan du har fram till augusti om du planerar att lansera en ny app eller till november om du planerar att uppdatera en befintlig app. För dig som vill komma igång med att utveckla för nästa Android-version kan du redan testa din app på Android Studio emulator eller på fysisk hårdvara om du äger vilken Google Pixel-smartphone som helst. I år erbjuder Google dock utvecklare ett annat sätt att testa sina appar mot den senaste Android-versionen: blinkande en Android Q beta GSI på en Project Treble-kompatibel enhet.
Projekt Treble är ett stort initiativ för att förbättra hastigheten med vilken tillverkare av smartphoneenheter kan skicka ut mjukvara och säkerhetsuppdateringar. I ett nötskal kräver Treble att enhetstillverkare separerar programvaran som får hårdvaran att fungera från mjukvaran bakom operativsystemet. Detta gör att enhetstillverkare kan starta upp nya Android-utgåvor på sina befintliga enheter så att de kan börja den mödosamma uppgiften att portera sin befintliga kodbas ovanpå den nya Android-källkodsversionen. Kompletterande till CTS är VTS, eller Vendor Test Suite, en uppsättning tester som enhetstillverkare använder för att verifiera att deras enhet uppfyller Project Trebles krav. En av de viktigaste kontrollerna för enhetstillverkare att testa är förmågan för en diskantkompatibel smartphone att starta upp det som kallas en GSI eller Generic System Image. En GSI är en omodifierad version av AOSP som är avsedd för enhetstillverkare att se om de har implementerat Treble korrekt. Bortom OEMs, dock Google tror att GSI: er kan användas av utvecklare för kompatibilitetstestning av Android-appar.
Om du till exempel inte äger en Google Pixel är det enda sättet för dig att testa din app beteende under de förhållanden som bäst matchar Googles dokumentationen är för dig att antingen skaffa en egen Pixel-enhet, starta upp Android Studio-emulatorn eller titta på ett molntestning service. Var och en av dessa har sina för- och nackdelar, men om du har en befintlig diskantkompatibel enhet och inte vill spendera några pengar eller ta itu med begränsningarna hos en emulator, varför inte lägga en GSI på den? Om din app fungerar på en GSI bör den fungera på nästan alla enheter som kör den Android-versionen.
Det är tankeprocessen bakom Googles beslut att släppa Android Q GSI, eller det är åtminstone vad vi tror. Källkoden för Android Q kommer inte att finnas tillgänglig förrän i augusti, så Googles officiella GSI-binärfiler är det enda sättet just nu att testa Android Q på riktig hårdvara som inte är Pixel. Så här kommer du igång.
Krav
Innan du ens överväger att installera Android Q beta bör du kontrollera om din enhet är Project Treble-kompatibel och kan acceptera blinkande systembilder från starthanteraren.
Krav:
- Din enhet MÅSTE ha en upplåsbar bootloader. Snapdragon Samsung-smarttelefoner som säljs i USA, Huawei-märkta enheter, Honor-märkta enheter och HMD Globals Nokia-märkta enheter (förutom Nokia 8) kvalificerar sig inte här.
- Du har de senaste ADB- och Fastboot-binärerna installerade på din PC, som du kan hitta här. Föråldrade versioner av Fastboot kan resultera i felaktiga blinkningar.
- Din enhet MÅSTE träffa ett av följande kriterier för att betraktas som Project Treble-kompatibla:
- Enheten LANSERAS med Android 9 Pie. Om så är fallet kan du hoppa över att bekräfta diskantkompatibilitet efter att ha nått slutet av det här avsnittet.
- Enheten lanserades med Android 8.0 Oreo eller Android 8.1 Oreo men uppdaterades till Android 9 Pie med VNDK-isolering och system-as-root. Vi beskriver hur du tar reda på det i avsnittet nedan.
Innan vi går vidare är det värt att nämna att flashning av en GSI kräver att du utför en fullständig rensning av användardatapartitionen. Detta innebär att du kommer att förlora alla foton, videor, musik, dokument eller något annat på enhetens interna och externa (/data/media) lagring. Därför rekommenderas starkt att göra en säkerhetskopia utanför enheten innan du går vidare.
Tänk sedan på att dessa GSI: er inte har klarat CTS, så om din app använder SafetyNet Attestation API för att kontrollera enhetens integritet med en CTS-profilmatchning, kommer det inte att fungera. Dessa byggen är inte heller avsedda för daglig användning, så bli inte förvånad om en eller flera grundläggande hårdvarufunktioner inte fungerar utöver de redan dokumenterade buggarna i Android Q. Google har redan listat några kända problem med GSI, som du kan hitta här. Alla nya buggar som du hittar bör arkiveras här.
Bekräftar diskantkompatibilitet
Kör följande kommando:
adbshellgetpropro.treble.enabled
Om svaret är falsk, då är din enhet inte Project Treble-kompatibel, och du bör inte fortsätta. Om svaret är Sann, då är du fri att gå vidare.
Kontrollera sedan om det finns stöd för flera versioner genom att köra dessa kommandon:
adb shell
cat /system/etc/ld.config.28.txt | grep -A 20"\[vendor\]"
Leta efter avsnittet i utgången [Säljare], och leta sedan efter i det avsnittet namespace.default.isolated. Om värdet för det attributet är Sann, då bör din enhet stödja uppstart av Android Q GSI ovanpå en Android 9 Pie-leverantörsbild. Om värdet är falsk, då kan din enhet bara använda GSI för samma enhetsversion av operativsystemet.
Slutligen måste du bekräfta om din enhet är system-as-root, där ramdisken slås samman med systemavbildningen. System-as-root är inte obligatoriskt för enheter som uppgraderar till Android 9 Pie, men är nödvändigt för att stödja en OTA för endast system, till exempel vid flashning av en ny OS-version via GSI. Kör följande kommandon och kontrollera att utdata matchar "system-as-root":
adb shell
cat /proc/mounts | grep -q /dev/root && echo"system-as-root" || echo"non-system-as-root"
Nu när du vet att din enhet är diskantkompatibel måste du ta reda på vilken version av GSI-binären du ska ladda ner, eftersom det finns olika bilder för olika arkitekturer. För att se vilken arkitektur din enhet har, kör följande kommando:
adbshellgetpropro.product.cpu.abi
Anteckna resultatet här, eftersom du behöver det när du laddar ner GSI.
Laddar ner GSI
Nedladdningslänkar för officiella versioner av Android Q beta GSI är tillgängliga från Google här. Du bör ladda ner lämplig version baserat på din enhets arkitektur, vilket du fick reda på i föregående steg. Nedladdningen blir ganska stor om du laddar ner builden med GMS, eller Google Mobile Services, något vi starkt rekommenderar så att du kan testa din app på en build med Google Play Services.
När filen har laddats ned kan du packa upp den. Inuti finns två filer, system.img, och vbmeta.img.
GSI blinkar
- Starta om till enhetens starthanterare med antingen en knappkombination eller genom att utfärda kommandot:
adb reboot bootloader
- Därefter måste vi inaktivera Android Verified Boot (AVB). Du kan göra detta genom att ange följande kommando:
fastbootflashvbmetavbmeta.img
- Låt oss sedan torka systempartitionen:
fastboot erase system
- Vi kan äntligen flasha Android Q GSI med:
fastbootflashsystemsystem.img
- När det är gjort, torka användardatapartitionen med:
fastboot -w
- Starta om din enhet med antingen strömbrytaren eller genom att ange:
fastboot reboot
Förhoppningsvis bör den starta efter några minuter. Dessa steg validerades på en Pixel 3 XL, men bör fungera universellt. Vi kan verifiera att Android Q beta 2 GSI inte startar på OnePlus 6T, men den startar på Xiaomi Mi 9. Det kan fungera på Sony Xperia XZ3, men vi får veta att det inte startar på Moto G7. Din körsträcka kan variera eftersom Googles krav endast bekräftar GSI-kompatibilitet med samma OS-version.