Подтвердить что ты не робот

Создание 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. Я думаю, что что-то пошло не так с моей настройкой среды, чтобы этого не произошло.

4b9b3361

Ответ 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". Здесь вы можете найти главный эмулятор.