Интеграция пользовательских сборок ядра Android с SDK - PullRequest
0 голосов
/ 19 февраля 2012

Я расширяю пользовательскую ветвь ядра Android, которая возникла как 2.2 Фройо ядро. Сам процесс сборки не проблема; просто наберите "make" и это сделано. Но я не уверен, что мне нужно сделать, чтобы сделать новый ядро известно другим инструментам в Android SDK; в частности эмулятор, adb и отладчик Eclipse.

Я пробовал разные вещи, такие как запуск эмулятора с -system и -userdata аргументы в командной строке, и они, кажется, работают, хотя я сталкиваюсь со споратическими проблемами, которые оставляют меня неуверенным. Общая проблема Я видел, что иногда приложения "зависают", отображая их интерфейс, но отказ от ухода, даже когда нажаты кнопки домой или меню. Я попытался отключить кеширование. Но настоящая проблема здесь в том, что я не иметь хорошую ментальную модель того, как сборки ядра должны передаваться SDK.

Должен ли я копировать результаты сборки (файлы .img) в ~ / .android / возможно? Или где-то в Папка SDK?

Рабочий рецепт был бы неплох, но еще лучше был бы понимание того, как инструменты сборки ядра и SDK работают вместе. Например, http://source.android.com/source/using-eclipse.html отлично подходит для рецептов, но я до сих пор не понимаю, как ADB и эмулятор знают откуда загружать файлы .img.

Ответы [ 2 ]

1 голос
/ 19 февраля 2012

Когда вы создали изображение для Android, веб-страница android рекомендует запустить его с помощью команды emulator.Но вы можете запустить встроенный образ таким способом, потому что команда android envsetup уже указала несколько путей.Например, чтобы проверить мой встроенный образ, я запускаю команду:

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

Так что, как вы видите, я явно указываю все изображения и все пути.Это команда для запуска образа в эмуляторе.Папка Out создается во время сборки в корневой папке исходного кода Android.

PS Ядро обычно ссылается на ядро ​​Linux Android.В вашем случае, я думаю, вы изменили платформу Android.

0 голосов
/ 29 февраля 2012

Я написал полный ответ, основываясь на бесценных подсказках, предоставленных Юрием.Решением было добавить эти настройки в мой .bashrc.Инструменты (эмулятор, adb, ddms) в eclipse используют эти настройки, чтобы получать данные из ANDROID_TARGET_OUT вместо того, чтобы получать их из готовых копий внутри SDK.Материал CACHE является стандартной рекомендацией.

# Android SDK Build settings
export ANDROID_HOME="/Volumes/DroidImg/android-sdk-macosx"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export ANDROID_SDK_BASE="$ANDROID_HOME"
export ANDROID_SDK_HOME="$ANDROID_HOME"
export ANDROID_TARGET_OUT="/Volumes/DroidImg/Droid-Kernel/out/target/product/generic"
export USE_CCACHE=1
export CCACHE_DIR="/Volumes/DroidImg/CCACHE_DIR"
ulimit -S -n 1024

Наконец, скопируйте .classpath, поставляемый с SDK, как описано в вики, в корень дистрибутива ядра и «импортируйте существующие файлы» в Eclipse.Все компоненты Java теперь должны открываться и правильно собираться в проводнике пакетов.Очень удобно для изучения, но не забывайте, что вы должны использовать обычную make для создания этого материала по-настоящему.

/ Volumes / DroidImg - это сохраняющий регистр образ диска, который я сделал для работы с MAC-OS;измените эту часть пути, чтобы удовлетворить.

...