web-dev-qa-db-ja.com

ビルド後のエミュレーターの実行Android from source

最新のAndroidソースコードをUbuntu仮想マシン32ビット(ホスト:Windows 7 64ビット)にプルダウンできます。ビルドはエラーなしで完了します。

それから これらの指示 に従い、ソースコードのルートでエミュレータを実行する必要があると述べました。しかし、それを試してみると、このコマンドが見つからないというエラーが表示されます。

そこで、out/Host/linux-x86/binフォルダーに移動しましたが、emulator*のファイルがいくつかあることがわかりました。

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

ここでemulatoremulator-x86を入力したときも機能しません。ここに私が得ているエラーがあります:

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

したがって、./emulator-x86 -help-disk-imagesを実行すると、次のように表示されます。

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.

これは自分で作成したので、Android_PRODUCT_OUTは環境変数に設定されていると思いますが、表示されません。そのため、他のシェルスクリプトを実行してそのセットを取得する必要があると思います。

imgファイルを見て、out/target/product/genericの場所でカップルを見ました:

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

誰かがこれに少し光を当てて、私が次に何をすべきかを助けてくれますか?私はAndroidが初めてで、これについていくつか調査しましたが、同様の問題は見つかりませんでした。

24
windfly2006

ビルドを行う製品はわかりませんが、エミュレータを実行するには、次のコマンドを使用できます。

out/Host/linux-x86/bin/emulator -sysdir out/target/product/generic/-system out/target/product/generic/system.img -ramdisk out/target/product/generic/ramdisk.img -data out /target/product/generic/userdata.img -kernel prebuilt/Android-arm/kernel/kernel-qemu -sdcard sdcard.img -skindir sdk/emulator/skins -skin WVGA800 -scale 0.7 -memory 512 -partition-size 1024

これを.shファイルにAndroidソースフォルダーのルートにコピーしてこのファイルを実行します。または、実行することもできますが、Android =最初はソースフォルダーのルート。

また、コマンドmksdcardを使用して、ルートフォルダーにSDカードイメージを作成することを忘れないでください。

26
Yury

多くの困惑させ、同じ問題の多くに遭遇した後、私はすべてを新しい環境で動作させる方法を見つけました。

環境

まず、環境を~/.bashrcthat Android Recommendeds )に変更して設定してください。以下を含む:

export USE_CCACHE=1
ccache -M 10G

まだダウンロードしていない場合は、 Android source )をダウンロードするための手順に従います。

次に、環境にいくつかの機能を設定します。

$ . build/envsetup.sh

これらの関数の1つを実際に実行して、パスを正しく設定する必要があります(Pingzhong Liが指摘したように、これはAndroid build instructions!)では言及されていません!):

$ set_stuff_for_environment

最初のビルド

構築を始めましょう!例えば:

$ lunch full-eng
$ make -j4

(ここでは、4つのスレッドが私のマシンに最適です。必要に応じて変更してください。)

ビルドが完了したら、単にエミュレーターを起動します。

$ emulator

後続のビルド

system.imgを再構築するには、次のファイル/ディレクトリを削除する必要があることがわかりました。

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

その後、単に繰り返します:

$ make -j4
$ emulator
25
Paul Lammertsma

参考のために、このような問題があり、別のことを試してみたところ、ソリューションがlunch(envsetup.shを実行した後)を実行し、この場合はターゲットを選択することがわかりましたaosp_arm-eng。新しいシェルを起動するたびにこれを行う必要があります。これは、エミュレータがavdを実行するために必要な特定の環境変数を設定するためです。ターゲットをビルドした場合。

4
redbandit

ステップバイステップのエミュレーターの実行方法ダウンロードしたエミュレーターの実行Android AOSPソースコードは以下の通りです:-

  • ステップ1

ビルドを完了し、現在実行中のターミナル(Ubuntu)でシステムイメージを正しく生成した場合は、順方向に進みます。端末で次のコマンドを入力するだけです:-emulator

ステップ2システムイメージを以前に生成し、新しいターミナル(Ubuntu)を起動した場合は、次のコマンドを1つずつ実行します。source build/envsetup.sh 2. lunch 1ここで1は私のランチタイプです。あなたのような(7、8など)と最後の3に置き換えてくださいemulator

それはあなたのエミュレータを正しくランチします。おかげでみんなハッピーコーディング!!!!

3
SAURABH_12
#!/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
3
JP Ventura

Macでは、次の行を〜/ .bash_profileファイルに追加できます。それに応じて、ディスクイメージとsrcフォルダーを変更します。

# 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;  }

その後、新しいターミナルを作成して入力します:

startEmulator

エミュレータを起動できます。これはMacで動作します。

2
user2985730

シェルでemulatorと入力するだけで、シェルのPATH変数にパスが設定されているため、最新ビルドのエミュレーターが起動します。

1
Sai Kiran

マシンに「Android SDK」がある場合は、「out」ではなく「emulator」をそこからピックアップできます。 「自分の」エミュレータで作業する場合は、「Android sdk」ディレクトリの名前を変更できます。次に、「エミュレータ」が選択されます。

これがお役に立てば幸いです!

よろしく

0
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

上記は私のenv設定です。 Android_BUILD_TOPが解決しました

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

私のマシンで

0
harris

私はこのように行いました

./build/envsetup.shファイルを変更しました。set_stuff_for_environmentのみを変更しました

function set_stuff_for_environment()
{
    setpaths
    set_sequence_number

    export Android_BUILD_TOP=$(gettop)
    # With this environment variable new GCC can apply colors to warnings/errors
    export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
    export ASAN_OPTIONS=detect_leaks=0

    export Android_PRODUCT_OUT=/var/www/Android/out/target/product/generic_x86_64
    echo $Android_PRODUCT_OUT
}

プロジェクトのルートで、start.shという名前のファイルを作成しました

#!/usr/bin/env bash

Android_BUILD_OUT=/var/www/Android/out
Android_SDK_LINUX=/opt/Android-studio/sdk
Android_BUILD=${Android_BUILD_OUT}/target/product/generic_x86_64

Sudo chmod -R 777 /dev/kvm

source build/envsetup.sh

set_stuff_for_environment

./prebuilts/Android-emulator/linux-x86_64/emulator \
    -debug-init -logcat '*:v' -verbose \
    -sysdir ${Android_BUILD} \
    -system ${Android_BUILD}/system.img \
    -ramdisk ${Android_BUILD}/ramdisk.img \
    -skindir ${Android_SDK_LINUX}/platforms/Android-28/skins \
    -skin WVGA800 \
    -partition-size 2000
    -scale 0.7 \
    -memory 2000 \
    -data ${Android_BUILD}/userdata.img \
0