Android NDK中的Debug vs. Release版本

时间:2011-07-05 22:01:15

标签: android debugging makefile release android-ndk

我正在开发一款必须移植到Android的大型游戏引擎。所有代码都是C / C ++,所以我们通过NDK移植。我已经掌握了一切,但经过大量的淘汰后,我仍然不确定构建我们的.so文件的Debug vs. Release版本的最佳方法是什么。每次手工换东西都会变老。

每个目标都有不同的Application.mk文件吗?或者有没有办法在jni /目录下的单个Android.mk文件中包含多个目标?或许第三种选择可能是编写一个标准的makefile来设置Android.mk文件用来通知构建过程的环境变量?

最后,关于必须在AndroidManifest.xml文件中设置的android:debuggable标志的最后一个问题。这实际上对生成的复制到设备的本机代码有什么影响?

最好的,谢谢,

凯文

3 个答案:

答案 0 :(得分:10)

  

每个目标都有不同的Application.mk文件吗?

没有。单独的子目录,都有自己的Android.mk(共享和静态库),但对我来说只有一个Application.mk。

我的Application.mk只是:

APP_STL := gnustl_static
APP_OPTIM := debug
  

我仍然不确定构建我们的.so文件的Debug vs. Release版本的最佳方法是什么。每次手工换东西都会变老。

至少对我来说,使用jni / Android.mk + Application.mk布局有点散布。

Application.mk有APP_OPTIM := debug 然后在AndroidManifest.xml的application元素中我android:debuggable="true" 当您使用ndk-build构建时,它使用此清单标志来确定优化(这对于关闭或打开,关闭以进行性能分析等非常有用)。

(一点关闭话题)我最近遇到了

https://code.google.com/p/android-ndk-profiler/

当与http://code.google.com/p/jrfonseca/wiki/Gprof2Dot

结合使用时

生成一些漂亮的图像,以帮助我的小脑袋掌握手机本身的运行情况。

答案 1 :(得分:1)

您不需要使用Android.mk系统来构建.so。就个人而言,我使用自己的Makefile和我需要的目标,这允许非常标准化的调试与发布版本规范。

答案 2 :(得分:1)

我使用单个文件为不同的目标构建库。在Application.mk中添加这个“APP_ABI:= armeabi armeabi-v7a”它对我有用。