Intereting Posts
DrawBitmap: Как вы можете установить координаты и использовать матрицу? Как изменить цвет «маленького треугольника» в панели действий NAVIGATION_MODE_LIST Плохая панорама, масштабируемость на Android Webview с использованием HTML5 Canvas и KineticJS Увеличение размера кучи при создании исходного кода Android на Ubuntu 15.10 Диспетчер устройств Windows 8.1 теперь показывает устройство ACER, а не устройство Android для Google Nexus 7 Использование универсального класса для нескольких объектов (вкладки ActionBar) Android – Как получить приложение для приложения Flavor GoogleMap внутри фрагмента в ViewPager, сохраняйте все события касания в GoogleMap Android TextView: настройка фонового цвета динамически не работает Передавать файлы с android на компьютер через usb программно Android AlarmManager: есть ли способ отменить ВСЕ установленные тревоги? Библиотека распознавания изображений / API для iPhone / Android Как установить android: layout_columnWeight = "1" программно для элемента в поддержке android v7 Gridlayout Тестирование Android: запуск инструментария завершился неудачно из-за «java.lang.ClassNotFoundException» Упаковка android facebook sdk как апклиб с maven

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

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

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

    С августа 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