【问题标题】:How to make debug build of specific module under AOSP tree?如何在 AOSP 树下进行特定模块的调试构建?
【发布时间】:2014-02-22 05:39:10
【问题描述】:

我构建了 AOSP 树的 eng 风格并安装在设备上。我喜欢单步调试模块的代码(比如 libinput.so)。我想用作为 CFLAGS 的一部分传递的“-O0 -g”来构建这个模块。但我不想更改此模块的 Android.mk 文件。

假设这个模块位于 aosppath/frameworks/base/service/input。
在采购 build/envsetup.sh 后,我 cd 到此文件夹。

我试过“mm -B LOCAL_STRIP_MODULE=false”。当我单步执行 eclipse gdb 时,我看到执行顺序是曲折的。
然后我尝试了“mm -B LOCAL_STRIP_MODULE=false LOCAL_CFLAGS="-O0 -g"
现在 gdb 能够顺利通过。但这似乎不适用于其他项目。我有一个使用skia和opengl的模块。当我在命令行上传递 LOCAL_CFLAGS 时构建失败。

在 AOSP 树下制作特定 .so 或 exe 的调试风格的建议方法是什么?

谢谢

【问题讨论】:

  • 您有什么特别的原因不想更改 .mk 文件吗?这通常是您设置构建类型条件的地方。
  • 如果我更改 .mk 文件,那么我必须记住我不应该签入它们。

标签: android-ndk android-source


【解决方案1】:

因此,由于您不想更改 Android.mk 的主要原因是您不必将其签入,因此这里的替代方法是使用 .repo/local_manifests 文件夹来更改模块归安卓所有,归你所有。

这是一个示例 my_manifest.xml 文件,它可以为您执行此操作:

<manifest>
  <remote name="origin"
           fetch="ssh://git@github.com/YourRepoHere/" />

  <remove-project name="platform/frameworks/base"/>
  <project path="frameworks/base" remote="origin" name="frameworks-base" revision="your-branch-name"/>

</manifest>

这将从 android 清单树中删除 frameworks/base,并将其替换为您自己的清单树(您需要将其 fork 到您自己的存储库中)。

之后,您可以在 Android.mk 文件中使用条件,如下所示:

ifeq ($(TARGET_BUILD_VARIANT),userdebug)
    CONDITIONAL_CHANGES_HERE
endif

再次,我意识到您不想修改 Android.mk 文件,但由于您还要求建议的方法来制作一个以构建变体为条件的模块,所以无论如何我都会将此答案包含在没有比这更好的了。这确实是您想做的事情的建议方式,因为您的项目现在将由 repo 工具维护。

【讨论】:

  • 谢谢安德鲁!这似乎很涉及。我期待类似于“mm DEBUG = true”的东西会导致 CFLAGS 具有正确的调试值。没有这样的套路吗?
  • 嗯,看起来你所说的方式很好,因为 STRIP_MODULE 似乎对你有用。这意味着您可以通过 mm 命令设置环境变量,Android.mk 文件是否有可能自己重新定义或更改 LOCAL_CFLAGS?
  • external/skia 文件夹是当我将 LOCAL_CFLAGS 作为 mm 的一部分传递时失败的文件夹。我搜索了所有 .mk 文件。我在任何地方都看不到 LOCAL_CFLAGS:= 类型分配。都是预期的 += 类型赋值。
  • 啊,是的,但看到它包含以下行:include $(CLEAR_VARS)。如果您查看 build/core 中的 clear_vars.mk,您会看到 LOCAL_CFLAGS 作为此定义的一部分被清除。我很好奇这是否会在通过 mm 传递变量时破坏您的尝试,但我不知道为什么 STRIP_MODULE 会做出任何改变
  • 大多数 .mk 文件的顶部都有这个包含。我认为它不会影响从命令行传递的变量。构建良好的模块也将其包含在顶部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 2019-06-17
  • 2017-06-21
  • 2020-07-18
  • 2018-10-13
  • 1970-01-01
  • 2020-05-29
相关资源
最近更新 更多