最新のAndroidソースコードをUbuntu仮想マシン32ビット(ホスト:Windows 7 64ビット)にプルダウンできます。ビルドはエラーなしで完了します。
それから これらの指示 に従い、ソースコードのルートでエミュレータを実行する必要があると述べました。しかし、それを試してみると、このコマンドが見つからないというエラーが表示されます。
そこで、out/Host/linux-x86/bin
フォルダーに移動しましたが、emulator*
のファイルがいくつかあることがわかりました。
emulator
emulator-arm
emulator_renderer
emulator-ui
emulator-x86
ここでemulator
とemulator-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が初めてで、これについていくつか調査しましたが、同様の問題は見つかりませんでした。
ビルドを行う製品はわかりませんが、エミュレータを実行するには、次のコマンドを使用できます。
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カードイメージを作成することを忘れないでください。
多くの困惑させ、同じ問題の多くに遭遇した後、私はすべてを新しい環境で動作させる方法を見つけました。
まず、環境を~/.bashrc
that 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
参考のために、このような問題があり、別のことを試してみたところ、ソリューションがlunch
(envsetup.shを実行した後)を実行し、この場合はターゲットを選択することがわかりましたaosp_arm-eng
。新しいシェルを起動するたびにこれを行う必要があります。これは、エミュレータがavdを実行するために必要な特定の環境変数を設定するためです。ターゲットをビルドした場合。
ステップバイステップのエミュレーターの実行方法ダウンロードしたエミュレーターの実行Android AOSPソースコードは以下の通りです:-
ビルドを完了し、現在実行中のターミナル(Ubuntu)でシステムイメージを正しく生成した場合は、順方向に進みます。端末で次のコマンドを入力するだけです:-emulator
ステップ2システムイメージを以前に生成し、新しいターミナル(Ubuntu)を起動した場合は、次のコマンドを1つずつ実行します。source build/envsetup.sh 2. lunch 1ここで1は私のランチタイプです。あなたのような(7、8など)と最後の3に置き換えてください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
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で動作します。
シェルでemulatorと入力するだけで、シェルのPATH変数にパスが設定されているため、最新ビルドのエミュレーターが起動します。
マシンに「Android SDK」がある場合は、「out」ではなく「emulator」をそこからピックアップできます。 「自分の」エミュレータで作業する場合は、「Android sdk」ディレクトリの名前を変更できます。次に、「エミュレータ」が選択されます。
これがお役に立てば幸いです!
よろしく
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"
私のマシンで
私はこのように行いました
./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 \