Запуск эмулятора после сборки Android из исходного кода - PullRequest
24 голосов
/ 26 января 2012

Я могу загрузить последнюю версию исходного кода 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 установлено в моих переменных окружения, но я этого не вижу. Поэтому я думаю, что мне нужно запустить какой-нибудь другой сценарий оболочки, чтобы получить этот набор.

Я посмотрел img файлов, увидел пару в расположении out/target/product/generic:

  • ramdisk.img
  • system.img
  • userdata.img

Может ли кто-нибудь пролить свет на это и помочь мне с тем, что мне делать дальше? Я новичок в Android, и я провел некоторые исследования по этому вопросу, но я не смог найти подобных проблем.

Ответы [ 10 ]

26 голосов
/ 26 января 2012

Я не знаю, для какого продукта вы строите, но для запуска эмулятора вы можете использовать следующую команду:

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 -встроенная сборка ядра / android-arm / kernel / kernel-qemu -sdcard sdcard.img -skindir sdk / эмулятор / скины размер 1024

Просто скопируйте его в файл .sh в корень вашей исходной папки Android и запустите этот файл. Или вы можете просто запустить его, но сначала вы должны запустить chdir в корневой каталог вашей папки Android.

И не забудьте создать образ sdcard в корневой папке с помощью команды mksdcard.

25 голосов
/ 07 ноября 2012

После долгих недоумений и столкнувшись с множеством одних и тех же проблем, я нашел способ заставить все работать из новой среды.

Среда

Прежде всего, убедитесь, что вы установиливаша среда с изменениями ~/.bashrc , которые Android рекомендует , в том числе:

export USE_CCACHE=1
ccache -M 10G

Выполните шаги для загрузки источника Android , если вы этого не сделалиуже сделали это.

Затем настройте некоторые функции для среды:

$ . build/envsetup.sh

Теперь вам нужно выполнить одну из этих функций, чтобы правильно установить пути (как указывал Пинчжун Ли,это не упоминается в инструкциях по сборке 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
4 голосов
/ 12 февраля 2014

Просто для справки, у меня была похожая проблема, и после попытки разных вещей я обнаружил, что решение запускает lunch (после запуска envsetup.sh) и выбирает цель в этом случае aosp_arm-eng.Вы должны делать это каждый раз, когда запускаете новую оболочку, потому что она устанавливает определенные переменные среды, необходимые эмулятору для запуска avd. При условии, что вы создали цель.

3 голосов
/ 18 января 2017

Как запустить пошаговое руководство по эмулятору. Запуск эмулятора в загруженном исходном коде AOSP для Android выглядит следующим образом: -

  • Шаг 1

Если вы закончили свою сборку и сгенерировали образ системы правильно в текущем работающем Терминале (Ubuntu), то он страгит вперед. Просто введите команду ниже в вашем терминале: - Эмулятор

Шаг 2 Если вы сгенерировали образ системы ранее и запустили новый терминал (Ubuntu), то выполните одну за другой следующую команду: - 1. исходная сборка / envsetup.sh 2. ланч 1 здесь 1 - мой тип ланча, вы можете заменить его на свой (7, 8 и т. Д.) И в последнем 3. эмулятор

Вот так оно и будет правильно обедать в вашем эмуляторе. Спасибо, ребята, Happy Coding !!!!

3 голосов
/ 16 октября 2013
#!/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
2 голосов
/ 26 ноября 2013

На 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.

1 голос
/ 20 июля 2012

Просто введите эмулятор в вашей оболочке, и он запустит эмулятор последней сборки, поскольку его путь установлен в переменную PATH вашей оболочки.

0 голосов
/ 28 февраля 2019

Я выполнил таким образом

Я изменил файл ./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 \
0 голосов
/ 01 июля 2013
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"

на моей машине

0 голосов
/ 28 марта 2012

Если у вас есть «android sdk» на вашей машине, то ваш «эмулятор» может быть выбран оттуда вместо / out / .... dir. Если вы хотите работать со своим «собственным» эмулятором, вы можете переименовать каталог «android sdk». Тогда ваш «эмулятор» будет поднят.

Надеюсь, это поможет вам!

С уважением Sammoh

...