如何在AOSP树下进行特定模块的调试构建?

时间:2014-01-30 04:13:30

标签: android-ndk android-source

我构建了AOSP树的eng风格并安装在设备上。我喜欢单步执行模块的代码(比如libinput.so)。我想构建这个模块,其中“-O0 -g”作为CFLAGS的一部分传递。但我不想更改此模块的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的调试风格的建议方法是什么?

由于

1 个答案:

答案 0 :(得分:1)

因为你不想对Android.mk进行更改的主要原因是你不必检查它,这里的另一种选择是使用.repo / local_manifests文件夹来更改模块。由android拥有并归你所有。

以下是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,并将其替换为您自己的清单树(您需要将其分叉到您自己的存储库中)。

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

ifeq ($(TARGET_BUILD_VARIANT),userdebug)
    CONDITIONAL_CHANGES_HERE
endif

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