Eseguire l'emulatore dopo la creazione di Android dalla sorgente

Sono in grado di abbattere il codice sorgente Android più recente in una macchina virtuale a Ubuntu a 32 bit (Host: Windows 7 a 64 bit). La costruzione completa senza alcun errore.

Poi ho cercato di seguire queste istruzioni , where mi riferisco che dovrei eseguire l'emulatore sulla radice del mio codice sorgente. Tuttavia, quando l'ho provato, ho un errore che indica che questo command non è stato trovato.

  • getContentResolver () openOutputStream (uri) Nessun file supportto dal provider
  • Pulsanti mancanti su AlertDialog | Android 7.0 (Nexus 5x)
  • Aggiunta di libreria esterna in studio Android 0.3.6
  • Come posso get il colore primario dal mio tema dell'applicazione?
  • leggere i dati dal database e mostrarlo in GridView in android
  • "Hello, WebView" tutorial apre l'indirizzo richiesto nel browser Android e non nel mio webview
  • Così sono andato alla cartella out/host/linux-x86/bin e ho scoperto che ci sono file di coppia per l' emulator* :

    • emulator
    • emulator-arm
    • emulator_renderer
    • emulator-ui
    • emulator-x86

    Quando ho digitato l' emulator e l' emulator-x86 qui, anche questo non funziona. Ecco l'errore che sto ottenendo:

     xxxx/out/host/linux-x86/bin$ ./emulator-x86 emulator: ERROR: You did not specify a virtual device name, and the system directory could not be found. If you are an Android SDK user, please use '@<name>' or '-avd <name>' to start a given virtual device (see -help-avd for details). Otherwise, follow the instructions in -help-disk-images to start the emulator 

    Quindi quando ./emulator-x86 -help-disk-images , vedo quanto segue:

     If you are building from the Android build system, you should have ANDROID_PRODUCT_OUT defined in your environment, and the emulator shall be able to pick-up the right image files automatically. See -help-build-images for more details. 

    Ho costruito questo, quindi penso che ANDROID_PRODUCT_OUT sia impostato nelle variables di ambiente, ma non lo vedo. Quindi penso che dovrei eseguire un altro script shell per get quel set.

    Ho guardato i file img , ho visto la coppia nella posizione out/target/product/generic :

    • ramdisk.img
    • system.img
    • userdata.img

    Qualcuno potrebbe far luce su questo e assistere a ciò che dovrei fare dopo? Sono nuovo a Android e ho fatto qualche ricerca su questo ma non ho trovato problemi simili.

  • Rilegatura al servizio in onCreate () o in onResume ()
  • Android: java.land.NoSuchFieldError dopo l'aggiornamento a SDK 23
  • Android rimuove i pulsanti Fastforward e riavvolti da mediaplayer
  • Come impostare l'effetto Ripple su un programma LinearLayout?
  • statica null variabile quando si torna all'app
  • Come get il numero di telefono del dispositivo in modo programmato
  • 9 Solutions collect form web for “Eseguire l'emulatore dopo la creazione di Android dalla sorgente”

    Non so per quale prodotto fai la tua build ma per eseguire l'emulatore puoi usare il seguente command:

    out / target / product / generic / system.img -ramdisk fuori / target / product / generic / ramdisk.img -data fuori / host / linux-x86 / bin / emulator /target/product/generic/userdata.img kernel preinstallato / android-arm / kernel / kernel-qemu -sdcard sdcard.img -skindir sdk / emulatore / pelli-pelle WVGA800 -scale 0.7 -memory 512 -partition-size 1024

    Basta copiarlo in file .sh nella directory principale della cartella sorgente Android e eseguire questo file. Oppure è ansible eseguirlo, ma dovresti iniziare alla tua directory principale di origine Android.

    E non dimenticare di creare un'image sdcard nella cartella principale con il command mksdcard .

    Dopo molto sconcertanti e incontrando molti degli stessi problemi, ho trovato un modo per get tutto funzionando da un nuovo ambiente.

    Ambiente

    Innanzitutto, assicurati di impostare l'ambiente con le modifiche a ~/.bashrc che Android consiglia , tra cui:

     export USE_CCACHE=1 ccache -M 10G 

    Seguire i passaggi per scaricare l'origine Android , se non l'hai ancora fatto.

    Quindi impostare alcune funzioni per l'ambiente:

     $ . build/envsetup.sh 

    Ora dovresti effettivamente eseguire una di quelle funzioni per get i routes impostati correttamente (come ha sottolineato Pingzhong Li, questo non è menzionato nelle istruzioni per la creazione di Android!):

     $ set_stuff_for_environment 

    Prima build

    Inizia la costruzione! Per esempio:

     $ lunch full-eng $ make -j4 

    (Qui, 4 thread è l'ideale per la mia macchina, cambia come si vede bene.)

    Quando la build finisce, lancia semplicemente l'emulatore:

     $ emulator 

    Successive costruisce

    Ho trovato che per get il system.img per ribuild, è necessario rimuovere i seguenti file / directory:

     out/target/product/generic/obj/PACKAGING/ out/target/product/generic/system.img 

    Poi ripeti semplicemente:

     $ make -j4 $ emulator 
     #!/usr/bin/env bash ANDROID_BUILD_OUT=/path/to/android/build/output/ ANDROID_SDK_LINUX=/path/to/android/sdk ANDROID_BUILD=${ANDROID_BUILD_OUT}/android/target/product/generic ${ANDROID_SDK_LINUX}/tools/emulator \ -sysdir ${ANDROID_BUILD} \ -system ${ANDROID_BUILD}/system.img \ -ramdisk ${ANDROID_BUILD}/ramdisk.img \ -data ${ANDROID_BUILD}/userdata.img \ -kernel ${ANDROID_SDK_LINUX}/system-images/android-18/armeabi-v7a/kernel-qemu \ -skindir ${ANDROID_SDK_LINUX}/platforms/android-18/skins \ -skin WVGA800 \ -scale 0.7 \ -memory 512 \ -partition-size 1024 

    Su un Mac, è ansible aggiungere le seguenti righe nel file ~ / .bash_profile. Modificare di conseguenza le proprie cartelle di disco e cartelle.

     # start emulator function startEmulator { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; cd /Volumes/android/AndroidSrc; source build/envsetup.sh; lunch aosp_arm-eng; /Volumes/android/AndroidSrc/out/host/darwin-x86/bin/emulator; } 

    Successivamente creare un nuovo terminal e digitare:

     startEmulator 

    È ansible avviare l'emulatore. Questo funziona su mac.

    Proprio per riferimento ho avuto questo problema simile e dopo aver provato diverse cose ho trovato la soluzione per essere in esecuzione il lunch (dopo eseguire envsetup.sh) e raccogliendo l'objective in questo caso aosp_arm-eng . Bisogna farlo each volta che si avvia una nuova shell perché imposta alcune variables di ambiente che l'emulatore deve eseguire l'avd.Provided che hai creato il target.

    Basta digitare emulatore sulla shell e lancerà l'emulatore dell'ultima build, poiché il suo path è impostato sulla variabile PATH della shell.

    Come eseguire la guida passo per passo dell'emulatore. L'emulatore in esecuzione nel codice sorgente di AOSP android scaricato è come sotto: –

    • Passo 1

    Se hai finito la tua build e hai generato correttamente l'image di sistema nel terminal in esecuzione corrente (Ubuntu), allora è stragiht in avanti. Digita sotto il command nel tuo terminal: – emulatore

    Passo 2 Se hai generato l'image di sistema in precedenza e hai iniziato un nuovo terminal (Ubuntu), esegui il seguente command uno per uno: – 1. source build / envsetup.sh 2. pranzo 1 qui 1 è il mio tipo di pranzo, puoi sostituirlo con i tuoi come (7, 8 etc) e nell'ultimo emulatore 3

    Quel che sarà il pranzo il tuo emulatore correttamente. Grazie ragazzi di codifica felice !!!!

    Se hai la "android sdk" sulla tua macchina, allora il tuo "emulatore" potrebbe essere prelevato da lì invece di / out / …. dir. Quando si desidera lavorare con l'emulatore "proprio", è ansible rinominare la directory "android sdk". Quindi il tuo "emulatore" verrà raccolto.

    Spero che questo ti aiuti!

    Saluti Sammoh

     export MY_PWD=/work/ABC/Google_Android export ANDROID_BUILD_TOP=/work/ABC/Google_Android export PATH=$PATH:$MY_PWD/prebuilts/gcc/linux export ANDROID_PRODUCT_OUT=$MY_PWD/out/target/product/generic 

    Quanto sopra è la mia impostazione env. ANDROID_BUILD_TOP ha risolto il problema

     "emulator: ERROR: You did not specify a virtual device name, and the system directory could not be found" 

    sulla mia macchina

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.