Egy Android emulátor sok mindenre jó. Nem csak fejlesztéshez, de pl. nem kell megvenni egy tabletet csak azért, hogy az ember játsszon, kipróbáljon alkalmazásokat, esetleg egyéb disznóságokat kövessen el. Én sem akartam, fizikai Android eszközöm meg már csak pár nagyon régi van; és ismerősöknél is volt kérés, hogy pl. Honfoglalót akartak PC-n játszani, de már csak Android app van.
Fogja az ember az x86-os Androidot... (nem most, régebben). Felteszi egy virtuális gépre... nagy nehezen elindul az egyik... (azt most hagyjuk, hogy Qemu/KVM-en mi hajlandó ebből futni, mert az egyik 9-es AOSP alapún kívül nálam semmi nem megy, se Lineage, se Bliss, se semmi - végül a mostani teszten a Bliss mégis ment) Google Play, app feltesz, és hopp, ez az app nem x86-ra van fordítva, hanem Arm-ra, tehát fel se települ
Fejlesztéshez persze ez nem gond, mert az Android Studio úgyis arra fordít, amin futtatni akarjuk a progit, tehát a Studio saját x86 emulátora + pár fizikai eszköz elég. Na de mi van, ha használna valami appot az ember?
Elvileg az Android Studio emulátora (az is Qemu alapú ) is tud Arm emulációt, de az egyrészt lassú, másrészt olyan lassú, hogy örülsz, ha elindul. (Nem mellesleg a Studio-s gépem virtuális, így nested virtualizációban persze, hogy lassú az Arm emuláció.)
Mint kiderült, az Android 11 óta x86-on létezik kódfordítás, tehát az Arm appoknak is kéne futnia, az Android megoldja.
Ki is próbáltam, a Studio-s (Google-s) emulátoron tényleg feltelepült nem x86-os APK, de az elindulással már gondjai voltak; nem mellesleg nekem meg az egész sebességével is.
Adja magát, hogy akkor egy standalone Android emulátor; ott van a virtuálhost/NAS gépem, ott van erő, el is fér, távolról elérhető, így akárhonnan lehet játsza futtatni Arm-os Android appokat.
Mi legyen ez? Mondjuk a Genymotion; persze lenne még pár lehetőség, de az elég kiforrott, kényelmes. És otthonra ingyenes.
Feltelepít, nem nehéz, létrehozni egy eszközt... x86 only Az app mondjuk feltelepült (sőt, SAI-val apk-ből telepítve ki is lehetett választani, hogy milyen variáns legyen), csak el nem indult.
Egy másik fehérvári buszmenetrend Genymotion-os emulátoron
Nagy mákkal megtaláltam a libhoudini-s okosságot; szóval a Genymotion-ben valamiért hiányzik a cucc a system image-ből, de bele lehet tenni. Nem különösebb macera.
Ami fontos, hogy az ingyenes Genymotion-ben elvileg nincs rootolás. Viszont pl. a Sony Xperia Tablet Z image-ben meg van... Illetve kelleni fog egy ADB.
- letöltöd a system.zip-et
- adb devices
- adb root
- adb -s 127.0.0.1:6555 shell
-> ezzel nyitsz egy shellt az emulátorra; a címet az emulátor ablak fejlécében találod
- su mount -o rw,remount /
- a frissen nyílt shellben hozzá kell adni az ABI listát a build.prop-hoz : echo 'ro.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi ro.product.cpu.abilist64=x86_64,arm64-v8a ro.vendor.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi ro.vendor.product.cpu.abilist32=x86,armeabi-v7a,armeabi ro.vendor.product.cpu.abilist64=x86_64,arm64-v8a ro.odm.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi ro.odm.product.cpu.abilist32=x86,armeabi-v7a,armeabi ro.odm.product.cpu.abilist64=x86_64,arm64-v8a ro.dalvik.vm.native.bridge=libhoudini.so ro.enable.native.bridge.exec=1 ro.enable.native.bridge.exec64=1 ro.dalvik.vm.isa.arm=x86 ro.dalvik.vm.isa.arm64=x86_64 ro.zygote=zygote64_32' | tee -a /system/build.prop >> /system/vendor/build.prop
- belehúzni a system.zip-et az emulátorba; az emulátor felismeri, hogy ez egy flashelhető zip, és felhúzza magára
- emulátor újraindít
És elvileg kész is...
Innentől csont nélkül működnek az alkalmazások. Még csak Android 11-en próbáltam - jó lenne valami supportált cuccon is - de alapvetően működik. A fordítást nyilván a későbbi Android verziók is tudják, de ilyesmihez nem láttam okosítást.
A fehérvári buszmenetrend a Bliss 16 asztali módjában, Qemu/KVM-en futtatva (ugyanaz a gép, mint amin az emulátor is futott)
Alternatívaként olyan x86 Android, ami hajlandó is működni, az pl. a Bliss OS, amin pl. OTA update is van, szóval éles OS-nek is használható. Ez feltehető virtuális gépre, eddig jó. Az egy baj, hogy pl. egy virtuális gép kijelzőjét nem lehet forgatni, míg az emulátort igen Tehát ha valami önhatalmúlag fekvőben indul, az nem lesz igazán jó, mert fekvő állásban adja a képet (Tegyük hozzá, a Bliss telepíthető fizikai gépre is, ha egy olyan tabletre kerül, amiben van megfelelő szenzor, és érintő, akkor nincs ilyen gond.) (Virtuálison meg az volt a baj, hogy mezei UEFI kell alá, és a boot menüben HW gyorsítás nélkül kell indítani.)
Fizikai gépre a Chrome OS is jó lehet, de abból a teljesen ingyenes Flex ha jól tudom, nem futtat Android appokat.
Az a lényeg, hogy nem ördögtől való ez a dolog, szóval ha valami olyat kéne kipróbálni, amit nem szívesen tesz az ember a nappi használatú eszközre, vagy más miatt nincs alkalmas Android alapú cucc, akkor megoldás lehet a virtuális eszköz. Egy átlagos mai gépen szépen futnak ezek.