Запуск эмулятора после создания Android из источника
Я могу вытащить последний исходный код Android в 32-битную виртуальную машину Ubuntu (хост: 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
задан в моих переменных окружения, но я этого не вижу. Поэтому я думаю, что я должен запустить другую оболочку script, чтобы получить этот набор.
Я посмотрел файлы img
, я увидел пару в месте out/target/product/generic
:
-
ramdisk.img
-
system.img
-
userdata.img
Может ли кто-нибудь пролить свет на это и помочь мне в том, что я должен делать дальше? Я новичок в Android, и я сделал некоторые исследования по этому вопросу, но я не мог найти подобных проблем.
Ответы
Ответ 1
Я не знаю, для какого продукта вы выполняете сборку, но для запуска эмулятора вы можете использовать следующую команду:
out/host/linux-x86/bin/emulator -sysdir out/target/product/generic/-система 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- размер 1024
Просто скопируйте его в файл .sh в корень исходной папки Android и запустите этот файл. Или вы можете просто запустить его, но сначала вы должны chdir в корневой каталог исходных файлов Android.
И не забудьте создать образ sdcard в корневой папке с помощью команды mksdcard
.
Ответ 2
После многих озадачивающих и сталкивающихся со многими из тех же проблем, я нашел способ получить все, что работает из новой среды.
Окружающая среда
Прежде всего, убедитесь, что вы установили среду с изменениями ~/.bashrc
которые рекомендует Android, в том числе:
export USE_CCACHE=1
ccache -M 10G
Следуйте инструкциям для загрузки источника Android, если вы еще этого не сделали.
Затем настройте некоторые функции для среды:
$ . build/envsetup.sh
Теперь вы должны выполнить одну из этих функций, чтобы правильно установить пути (как указывал Pingzhong Li, это не упоминается в инструкциях по сборке Android!):
$ 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
Ответ 3
Просто для справки у меня возникла подобная проблема, и, попробовав разные вещи, я нашел решение для запуска lunch
(после запуска envsetup.sh) и выбора цели в этом случае aosp_arm-eng
. Вы должны делать это каждый раз, когда вы запускаете новую оболочку, потому что она устанавливает определенные переменные среды, которым эмулятор должен запускать avd.Provided, что вы создали цель.
Ответ 4
#!/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
Ответ 5
На 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.
Ответ 6
Как запустить эмулятор пошагового руководства.
Запуск эмулятора в загружаемом исходном коде AOSP для Android приведен ниже: -
Если вы закончили свою сборку и сгенерировали изображение системы правильно в текущем запущенном терминале (Ubuntu), тогда он будет расторгнут вперед. Просто введите команду ниже в своем терминале:
Эмулятор
Шаг 2
Если вы создали изображение системы ранее, и вы запустили новый терминал (Ubuntu), выполните следующую команду один за другим:
1. source build/envsetup.sh
2. обед 1 здесь 1 мой тип ланча, вы можете заменить его своим (7, 8 и т.д.) И последним
3. эмулятор
Это будет нормально обедать ваш эмулятор. Спасибо, ребята, Happy Coding!!!!
Ответ 7
Просто нарисуйте эмулятор на своей оболочке, и он запустит эмулятор последней сборки, так как его путь задан переменной PATH вашей оболочки.
Ответ 8
Если у вас есть "android sdk" на вашем компьютере, тогда ваш "эмулятор" можно взять там вместо /out/.... dir.
Когда вы хотите работать с вашим собственным эмулятором, вы можете переименовать каталог "android sdk". Тогда ваш "эмулятор" будет поднят.
Надеюсь, это поможет вам!
Отношения
Sammoh
Ответ 9
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"
на моей машине