在Application.mk中更改APP_OPTIM会导致完全重建

时间:2014-03-26 18:06:01

标签: android build android-ndk compiler-optimization

我猜测Eclipse或NDK构建系统没有使用单独的文件夹来进行有关调试版本和版本构建的编译器输出,但无论出于何种原因,它都会进行来回切换以进行调试,因为调试非常慢它每次都进行完全重建。这种(坏)行为有补救措施吗?

2 个答案:

答案 0 :(得分:1)

有两件事可能导致这种情况发生:

1)如果您更改Application.mk文件,make系统将触发完全重建。我不确定这是否是gnu make的标准或与android如何使用make有关。

解决方案:
使用两个单独的make文件进行发布与调试,以防止完全重建。

<小时/> 2)用于发布和调试的目标文件的输出文件夹是冲突的。

**Note:** This is not an issue with V9 of the NDK. I was seeing this behavior with V8* NDK V9 seems to always us the APP_OPTIM when determining an output object folder.

这与ndk_build参数NDK_DEBUG

有关

当您在没有NDK_DEBUG=0|1的情况下调用ndk_build时,它将检查项目的AndroidManifest.xml。如果存在android:debuggable标志,则会将NDK_DEBUG=1设置为true,如果为false则设置为NDK_DEBUG=0。如果debuggable为true,则文件夹为local/*abi*/objs。如果为false,则文件夹为local/*abi*/objc-debug

解决方案是从清单中删除debuggable标志(如果您的目标是SDK r8或更高版本,则不需要这样做)。接下来,如果要调试天真代码,请为调试ndk_build调用指定NDK_DEBUG=1标志。

<小时/> 祝好运!

答案 1 :(得分:0)

问题是ndk-build将 Application.mk 标记为所有内容的先决条件。它无法知道只有NDK_DEBUG发生了变化。

您可以在命令行上安全地提供NDK_DEBUG参数。在Eclipse中,您可以创建两个单独的构建配置,只需单击一下即可进行切换。