it-swarm.com.ru

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

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

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

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

22
windfly2006

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

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

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

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

23
Yury

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

Среда

Прежде всего, убедитесь, что вы установили свою среду с изменениями ~/.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
25
Paul Lammertsma

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

4
redbandit

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

  • Шаг 1

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

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

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

2
SAURABH_12
#!/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
JP Ventura

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

2
user2985730

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

1
Sai Kiran

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

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

С уважением Sammoh

0
Sammoh
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
harris

Я выполнил этот путь

Я изменил файл ./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 2G \
    -data ${Android_BUILD}/userdata.img \
0
Jonatas Rodrigues