Intereting Posts
Просмотр всего содержимого ScrollView в графическом макете Eclipse Установка текста на несколько раздутых EditTexts заставляет все заполнять одним и тем же текстом после вращения Принуждение adjustPan в активности, содержащей ScrollView Как создать ссылку на номер телефона на Android, которая включает в себя расширение Android: Unit Тестирование службы Android Threading: этот класс обработчика должен быть статическим или может возникнуть утечка Use-feature overruling uses-permission? Веб-просмотр внутри списка: конфликты с событиями событий. Таким образом, невозможно отключить Zoom IN / OUT в android Как заставить FAB не перемещаться в ViewPager, но быть частью фрагмента внутри? Байт-массив изображения в изображение Android AlarmClock ACTION_SET_ALARM заставляет исключение Удалить значок паролей в Android N Android: закрытие базы данных SQLite Пока еще не установлена ​​ошибка. Android Studio говорит: «тестов не было найдено» Как поддерживать все различные разрешения продуктов Android

Компиляция и тестирование ядра Android с помощью Android Emulator

Кто-нибудь успешно скомпилировал ядро ​​Android и протестировал его в эмуляторе Android, и если да, то что-то особенное, что нужно сделать?

Документация для SDK превосходна, однако документация по компиляции ядра и настройка настраиваемой машины в эмуляторе мне трудно найти.

Solutions Collecting From Web of "Компиляция и тестирование ядра Android с помощью Android Emulator"

С августа 2009 года ядро ​​больше не является частью стандартного манифеста repo, который вы получаете, когда следуете инструкциям по загрузке исходного кода для проекта с открытым исходным кодом Android. Шаги, необходимые для успешной загрузки, сборки и запуска определенного ядра в эмуляторе, следующие:

  • Получите ядро ​​Android, добавив его в свой манифест репозитория или вручную, запустив:
    git clone https://android.googlesource.com/kernel/goldfish.git
  • Проверьте правильную ветку для работы с эмулятором, то есть золотую рыбу:
    git checkout -t origin/android-goldfish-2.6.29 -b goldfish
  • Сгенерируйте конфигурацию эмулятора (эмулятор qemu запускает код руки, то есть конфигурацию arm):
    make ARCH=arm goldfish_defconfig
    • Если это не работает, попробуйте make ARCH=arm goldfish_armv7_defconfig
  • Теперь создайте ядро ​​с помощью инструментов кросс-компиляции, распространяемых вместе с проектом с открытым исходным кодом:
    make ARCH=arm CROSS_COMPILE=mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
  • Ядро, построенное таким образом, должно попасть в папку arch / arm / boot вашего дерева ядра (где вы поместите код из git clone)
  • Для запуска эмулятора с вашим ядром есть две альтернативы, либо скопируйте его в предварительно созданную папку ядра проекта с открытым исходным кодом, чтобы заменить стандартное ядро. Другой вариант – запустить эмулятор с помощью опции ядра:
    emulator -kernel mydroid/kernel/common/arch/arm/boot/zImage

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

Дополнительная информация. В стандартном дистрибутиве с открытым исходным кодом Android ядро ​​распределяется как предварительно построенный двоичный файл в mydroid/prebuilt/android-arm/kernel а исходный код не включен. Исход ядра был удален из манифеста по умолчанию по двум причинам. Один из них заключается в том, что для компонент платформы требуется много полос пропускания и дискового пространства, с которыми большинство людей не будет работать. Другая причина заключается в том, что, поскольку ядро ​​построено с помощью системы сборки ядра, а не как часть системы сборки aosp, имеет смысл ее разделить. Общая ветвь для ядра – та, которая используется эмулятором. Существуют также ветви для экспериментальных, msm (платформы Qualcomm) и Omap (платформа TI) и, возможно, еще несколько. Если вы хотите использовать ядро ​​Android с оборудованием, это может быть более интересно для вас.

Чтобы исправить несколько вещей из сообщения BMB (что было очень полезно для меня, это спасло мой проект):

  • Git clone git: //android.git.kernel.org/kernel/common.git ( ядро пропущено);
  • Git checkout -t origin / android-goldfish-2.6.29 -b золотая рыбка (то же самое);
  • Make ARCH = arm goldfish_defconfig (idem);
  • Make ARCH = arm CROSS_COMPILE = mydroid / prebuilt / linux-x86 / toolchain / arm-eabi-4.2.1 / bin / arm-eabi- (idem)
  • Emulator -avd my_avd -kernel mydroid / kernel / common / arch / arm / boot / zImage (здесь я добавил в команду avd , для меня это не сработало).

Это обновление для ответов BMB и Arnaud LM.
Кажется, золотые рыбки были изменены с 2011/03/03. При проверке ветки золотой рыбкой используйте следующее:

 git checkout -t origin/archive/android-gldfish-2.6.29 -b goldfish 

Обратите внимание на отсутствие «o» в android-gldfish-2.6.29!

Надеюсь, это сэкономит время для кого-то.

Начиная с 2012 года, загрузка ядра хорошо документирована на сайте source.google.com, однако я нашел компиляцию, и потребовалось несколько попыток. Вот команды, которые я использовал для сборки ядра для эмулятора ARM:

 cd /kernel/source/root make mrproper adb pull /proc/config.gz # from the emulator gunzip config mv config .config # now you have a (perhaps slightly outdated kernel .config) make ARCH=arm silentoldconfig # update the .config - take the defaults if prompted make ARCH=arm menuconfig # make any further changes time make -j4 ARCH=arm CROSS_COMPILE=/path/to/android/source/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- 2>&1 | tee ../../logs/$(date +%Y%m%d-%H%M)-make-kernel.log emulator -kernel /kernel/source/root/kernel/goldfish/arch/arm/boot/zImage -avd myAVD & 

Спасибо всем, кто ответил на этот вопрос – я смог сделать это с помощью кусочков и ответов. Амаунд «вам нужен AVD» был последним, что вызвало у меня проблемы.

Это легко. Следуйте инструкциям на странице http://source.android.com/download для получения и компиляции исходного кода для всего Android. Это требует времени, но это не так сложно.

Построив это, вы получите результат в каталоге <android>/out . К тому же помимо изображений ПЗУ имеется множество инструментов, включая эмулятор. Мой эмулятор находится в <android>/out/host/linux-x86/bin/emulator . Просто установите переменную среды с именем ANDROID_PRODUCT_OUT на <android>/out/target/product/generic , а затем запустите эмулятор без каких-либо параметров, запустив скомпилированный ПЗУ.

По состоянию на май 2012 года я обнаружил, что вы не можете использовать «goldfish_defconfig» для компиляции ядра. Вам нужно использовать goldfish_armv7_defconfig '. Это объясняет, почему работает метод JonnyLambada по извлечению конфигурации из эмулятора (для предварительно созданного ядра), и это необходимо.

Goldfish_defconfig настраивает ядро ​​для работы на процессоре ARM 926, но эмулятор настроен на запуск в виде Coretex A8 (который является процессором ARM V7). Поэтому вам нужно использовать новый defconfig, если вы хотите, чтобы он работал (или вытащил конфигурацию из эмулятора).

Просто FYI.

То, как я смог загрузить AOSP rom, я скомпилировал, чтобы скопировать файл system.img, который был скомпилирован в ~ / .android / avd / Froyo.avd / Но, когда я извлекаю system.img и добавляю корневую версию su И busybox, а затем переделать system.img, эмулятор не загружается. Я все еще пытаюсь понять эту часть: S