SDL中文论坛
标题:
Android Studio(2.0)
[打印本页]
作者:
ancientcc
时间:
2016-5-13 23:05
标题:
Android Studio(2.0)
Android的JNI开发主要有两种情况:一种是使用已经编译好的.so动态库(自用自写的Android.mk);一种是使用c/c++源代码开发(由gradle自动生成Android.mk),现阶段Rose是使用第一种方法。主要原因是第二种生成的“LOCAL_C_INCLUDES”会使编译变复杂并可能失败。
LOCAL_C_INCLUDES是Android.mk中可容许字段,指示C/C++可搜索的头文件目录。用gradle生成时,它不灵活是次要的,更重要是可能造成编辑失败。
举个例子,build.gradle有这样语句。
android {
sourceSets.main {
jni.srcDirs = ['src/main/jni',
'../../src-test']
}
}
复制代码
由它生成的Android.mk是以下语句。
LOCAL_SRC_FILES := \
C:\ddksample\MyApplication\app\src\main\jni\myCode.cpp \
C:\ddksample\src-test\plugin.cpp \
LOCAL_C_INCLUDES += C:\ddksample\MyApplication\app\src\main\jni
LOCAL_C_INCLUDES += C:\ddksample\src-test
复制代码
从以上看出,gradle会以每个srcDir生成对应一个LOCAL_C_INCLUDES,当项止存在同名头文件时,rose中就存在不少同名头文件,它会造成编译失败。
当然,自写Android.mk缺点是显而易见的,1)不易维护;2)不能调试NDK代码。但在gradle还不成熟情况下,Rose只能继续采用这种方法。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3