Создание Android от источника - эмулятора и AVD
Я создал источник Android для эмулятора. Я прочитал в Документацию по Android для Android, что путь к эмулятору добавляется автоматически при успешной сборке. Однако у меня есть два вопроса:
-
Если я открою новую оболочку или закрою существующую оболочку, "эмулятор" больше не будет найден. Конечно, мне не нужно создавать каждый раз, когда я хочу запустить эмулятор?
-
Если эмулятор требует AVD, как мне создать и управлять ими, если на моей машине Android SDK нет?
Спасибо,
Джек
РЕШЕНИЕ к части 2.
Мне нужно было создать переменную окружения ANDROID_PRODUCT_OUT. Из следующей команды:
emulator -help-build-images
Я читал...
Эмулятор обнаруживает, что вы работаете из сборки Android системы, просмотрев переменную ANDROID_PRODUCT_OUT в вашем окружающая среда.
Если он определен, он должен указывать на каталог, специфичный для продукта который содержит сгенерированные системные образы.
Затем я выполнил поиск "system.ing" в моем "вне" каталоге. поскольку я создаю для эмулятора изображение:
out/target/product/generic
Я добавил следующую строку в мой .bashrc файл:
export ANDROID_PRODUCT_OUT=/home/jack.wootton/code/out/target/product/generic
Затем я смог запустить эмулятор:
/home/jack.wootton/code/out/host/linux-x86/bin
РЕШЕНИЕ к части 1.
Я не знаю об Android Virtual Devices, поэтому этот вопрос все еще стоит, но мне не нужно было запускать эмулятор после успешной сборки и установки переменной среды ANDROID_PRODUCT_OUT.
Обновление решений
По-видимому, переменные, такие как ANDROID_PRODUCT_OUT, должны автоматически создаваться во время сборки и использовать envSetup.sh script. Я думаю, что что-то пошло не так с моей настройкой среды, чтобы этого не произошло.
Ответы
Ответ 1
Вы поделились этим:
По-видимому, переменные, такие как ANDROID_PRODUCT_OUT, должны автоматически создаваться во время сборки и использовать envSetup.sh script. Я думаю, что что-то пошло не так с моей настройкой среды, чтобы этого не произошло.
Я ТАКЖЕ ПОПЫТАЕМ, ЧТОБЫ ПОЛУЧИТЬ это, И УЧИТЕЛ, что:
-
lunch full-eng
устанавливает все соответствующие env
- чтобы проверить его, просто запустите:
env | grep ANDROID
и вы увидите все соответствующие настройки переменных env.
Они локальны только для текущей оболочки!
-
emulator
затем делает то, что должно.
Когда я вернулся в оболочку позже, я просто запустил обед full-eng снова, чтобы восстановить свою среду.
Надеюсь, это поможет и другим!
Ответ 2
Просто выполните следующие действия:
source build/envsetup.sh or . build/envsetup.sh
setpaths
Это трюк. Убедитесь, что вы запустили его из исходного каталога.
Ответ 3
Чтобы проверить мои встроенные источники для эмулятора, я создал следующий script в корневой папке проекта. Я запускаю его из другой командной строки, и ему не нужно постоянно запускать команды . build/envsetup.sh
и lunch full-eng
. Вы можете отредактировать этот script для своих нужд, и если вам нужно запустить другое устройство - просто смените папку.
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
Ответ 4
Вы можете добавить их в свой .bashrc файл
export ANDROID_PRODUCT_OUT=$ANDROID_SRC/out/target/product/generic
export ANDROID_BIN=$ANDROID_SRC/out/host/linux-x86/bin
PATH=$ANDROID_BIN:$PATH
Ответ 5
Фактически, эмулятор программы - это просто оболочка для реального эмулятора-qemu, такого как эмулятор-манипулятор или эмулятор-x86. Выбранный "эмулятор" будет собирать аргументы, которые вы ввели, и найти правильный эмулятор qemu для выполнения.
Проблема, с которой вы столкнулись, заключается в том, что вы явно не указали, какой образ /avd вы хотите запустить. Вы можете использовать переменную окружения "@avd YOUR-AVD_NAME" или "ANDROID_PRODUCT_OUT", чтобы установить каталог, в котором размещен ваш avd. BTW, avd dir содержит некоторые файлы, чтобы описать, как выглядит это устройство.
". build/envsetup.sh" - это script, который устанавливает переменные среды для процесса сборки Android. Поэтому легко понять, почему в это время будет установлено значение "ANDROID_PRODUCT_OUT". Его значение по умолчанию должно быть "PATH/TO/ANDROID/out/target/product/generic".
PS: Если вы хотите узнать больше, вы можете обратиться к исходному файлу: "PATH/TO/ANDROID/external/qemu/android/main-emulator.c". Здесь вы можете найти главный эмулятор.