【问题标题】:Integrating custom Android kernel builds with SDK将自定义 Android 内核构建与 SDK 集成
【发布时间】:2012-02-18 21:36:49
【问题描述】:

我正在扩展一个源自 2.2 的自定义 Android 内核分支 Froyo 内核。构建过程本身没有问题;只需输入“制作” 并完成。但我不确定我需要做什么来制作新的 Android SDK 中其他工具已知的内核;特别 模拟器、adb 和 Eclipse 调试器。

我尝试了各种方法,例如使用 -system 运行模拟器和 -userdata 命令行上的参数,这些似乎有效, 虽然我遇到了让我不确定的零星问题。一个常见的问题 我看到的是,有时应用程序“挂起”,显示他们的用户界面,但 即使单击主页或菜单按钮也拒绝离开。我有 尝试关闭缓存。但这里真正的问题是我不 对内核构建应该如何传达给 开发工具包。

我应该将构建结果(.img 文件)复制到 ~/.android/ 也许?或者去某个地方 SDK 文件夹?

一个有效的食谱会很好,但更好的是 了解内核构建和 SDK 工具如何协同工作。 例如http://source.android.com/source/using-eclipse.html 是 非常适合食谱,但我仍然不知道 adb 和模拟器是如何知道的 从哪里加载 .img 文件。

【问题讨论】:

    标签: android android-2.2-froyo android-source


    【解决方案1】:

    当您构建了 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 源代码根文件夹中创建的。

    附: Kernel 通常是指 Android 的 Linux 内核。就你而言,我认为你已经改变了 Android 框架。

    【讨论】:

    • 是的,我使用的 fork 包括他们称为“中间件”的 linux 内核和 java 位。我所说的内核是指组合。
    • 但我仍然看不到新的模拟器(来自您的 cmd 行)如何被 eclipse 和 AVD 构建器等工具拾取和使用。我是否需要在那里配置一些东西,或者eclipse是否注意环境。我似乎记得从终端运行 eclipse 会选择这个,但运行 Eclipse.app 不会。顺便说一句,这一切都在 Mac OSX 上。
    • 要构建工具,您必须运行 make sdk 命令。但是我不知道如何将它们与eclipse联系起来。您可以将它们与 eclipse 分开运行。
    【解决方案2】:

    我根据 Yury 提供的宝贵线索撰写了完整的答案。解决方案是将这些设置添加到我的 .bashrc 中。 eclipse 中的工具(模拟器、adb、ddms)使用这些设置从 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
    

    最后,将 wiki 上记录的 SDK 提供的 .classpath 复制到内核分发的根目录中,然后将现有文件“导入”到 Eclipse 中。现在,所有 Java 组件都应该在包资源管理器中打开并正确构建。非常便于探索,但不要忘记您必须使用普通的 make 才能真正构建这些东西。

    /Volumes/DroidImg 是我为 MAC-OS 工作制作的保留大小写的磁盘映像;更改这部分路径以适应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多