запуск эмулятора после сборки android из исходного кода

<p>я могу загрузить последнюю версию исходного кода android в 32-разрядную виртуальную машину ubuntu (хост: windows 7, 64-разрядная версия). сборка завершается без ошибок.</p><p>затем я попытался следовать <a href="http://source.android.com/source/building.html">этим инструкциям</a> , где упоминается, что я должен запустить эмулятор в корне моего исходного кода. однако, когда я пытался это сделать, я получаю сообщение о том, что эта команда не найдена.</p><p>поэтому я пошел в папку <code>out/host/linux-x86/bin</code> и обнаружил, что есть пара файлов для <code>emulator*</code>:</p><ul> <li><code>emulator</code></li> <li><code>emulator-arm</code></li> <li><code>emulator\_renderer</code></li> <li><code>emulator-ui</code></li> <li><code>emulator-x86</code></li> </ul><p>когда я набрал здесь <code>emulator</code> и <code>emulator-x86</code>, это также не работает. вот ошибка, которую я получаю:</p><pre><code>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 '@' or '-avd ' 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 установлен в моих переменных окружения, но я этого не вижу. поэтому я думаю, что мне нужно запустить какой-нибудь другой сценарий shell, чтобы получить этот набор.я посмотрел на img файлы, я увидел пару в расположении out/target/product/generic: ramdisk.img system.img userdata.img может ли кто-нибудь пролить свет на это и помочь мне с тем, что мне делать дальше? я новичок в android, и я провел некоторое исследование по этому вопросу, но я не мог найти каких-либо подобных проблем.

я не знаю, для какого продукта вы делаете свою сборку, но для запуска эмулятора вы можете использовать следующую команду:<blockquote> 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-kernel-qemu -sdcard sdcard.img -skindir sdk/emulator/skins -skin wvga800 -scale 0.7 -memory 512 -partition size 1024 </blockquote>просто скопируйте его в файл .sh в корень вашей исходной папки android и запустите этот файл. или вы можете просто запустить его, но сначала вы должны запустить chdir в корневой каталог вашей папки android.и не забудьте создать образ sdcard в корневой папке с помощью команды mksdcard.

после многих недоразумений и столкновения с одними и теми же проблемами я нашел способ заставить все работать в новой среде.средапрежде всего, убедитесь, что вы установили свою среду с изменениями ~/.bashrc <a href="http://source.android.com/source/downloading.html">которые рекомендует android , включая:export use_ccache=1 ccache -m 10g выполните шаги для <a href="http://source.android.com/source/downloading.html">загрузки источника android , если вы еще этого не сделали.затем настройте некоторые функции для среды:$ . build/envsetup.sh </code></pre><p>теперь вы должны выполнить одну из этих функций, чтобы правильно установить пути (как указывал пинчжун ли, это не упоминается в инструкциях по сборке android!):</p><pre><code>$ set_stuff_for_environment первая сборканачните строить! например:$ lunch full-eng $ make -j4 (здесь 4 темы идеально подходит для моей машины. изменяйте по своему усмотрению.)когда сборка завершится, просто запустите эмулятор:$ emulator </code></pre><h2>последующие сборки</h2><p>я обнаружил, что для восстановления <code>system.img</code> вам необходимо удалить следующие файлы/каталоги:</p><pre><code>out/target/product/generic/obj/packaging/ out/target/product/generic/system.img </code></pre><p>затем просто повторите:</p><pre><code>$ make -j4 $ emulator </code></pre>

<p>просто для справки, у меня была похожая проблема, и после попытки разных вещей я обнаружил, что решение запускает <code>lunch</code> (после запуска envsetup.sh) и выбирает цель в этом случае <code>aosp\_arm-eng</code>. вы должны делать это каждый раз, когда запускаете новую оболочку, потому что она устанавливает определенные переменные среды, необходимые эмулятору для запуска avd. при условии, что вы создали цель.</p>

<p><strong> как запустить пошаговое руководство по эмулятору. </strong> запуск эмулятора в загруженном исходном коде android aosp выглядит следующим образом: - </p><ul> <li>шаг 1</li> </ul><p>если вы закончили сборку и сгенерировали образ системы правильно в текущем работающем терминале (ubuntu), то он страгит вперед. просто введите команду ниже в вашем терминале: - <strong> <em>emulator</em> </strong></p><p>шаг 2 если вы сгенерировали образ системы ранее и запустили новый терминал (ubuntu), то выполните одну за другой следующую команду: - 1.<strong> <em>source build/envsetup.sh</em> </strong> 2.<strong> <em>lunch 1</em> </strong>здесь 1 - это мой тип обеда, вы можете заменить его на свой, например (7, 8 и т.д.) и в последнем 3.<strong> <em>emulator</em> </strong></p><p>вот так он будет правильно обедать на вашем эмуляторе. спасибо, ребята, happy coding !!!!</p>

<pre><code>#!/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 </code></pre>

<p>на mac вы можете добавить следующие строки в ваш файл ~/.bash\_profile. измените ваш образ диска и папки src соответственно.</p><pre><code># 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; } </code></pre><p>после этого создайте новый терминал и введите:</p><pre><code>startemulator </code></pre><p>ваш эмулятор может быть запущен. это работает на mac.</p>

<p>просто введите emulator в вашей командной консоли, и он запустит эмулятор последней сборки, поскольку его путь установлен в переменную path вашей оболочки.</p>

<p>если у вас есть «android sdk» на вашем компьютере, тогда ваш «эмулятор» может быть выбран вместо/out/.... dir . когда вы хотите работать со своим «собственным» эмулятором, вы можно переименовать в каталог «android sdk». тогда ваш «эмулятор» будет поднят.</p><p>надеюсь, это поможет вам!</p><p>с уважением sammoh</p>

<pre><code>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_environmentfunction 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 2g \ -data ${android\_build}/userdata.img \ </code></pre>