新建lua空项目,在编译时出现 “xx.h file not found” 或者 "xx.o file not found"时,一般是由于window下路径过长而导致的。
3.17 修改了gradle的配置, 删除了在gradle中配置NDK_MODULE_PATH参数的配置,在android.mk文件中使用了"call import-add-path"来导入模块路径。
我也不清楚使用参数传入NDK_MODULE_PATH与在android.mk文件中import有什么差别,有清楚的大佬请回复下.
在NDK编译时,使用NDK_MODULE_PATH传入参数传入模块路径,编译成功,以下是把3.17 gradle 修改到3.16后的代码,编译成功。
注释 jni/android.mk 中的模块导入语句
`#$(call import-add-path, $(LOCAL_PATH)/../../../cocos2d-x`
注释cocos/scripting/lua-bindings/proj.android/android.mk中的模块导入语句
#$(call import-add-path,$(LOCAL_PATH)/../../../..)
#$(call import-add-path,$(LOCAL_PATH)/../../../../external)
编辑模块gradle文件
...
import org.apache.tools.ant.taskdefs.condition.Os
...
externalNativeBuild {
if (PROP_BUILD_TYPE == 'ndk-build') {
ndkBuild {
/* 3.17 arguments */
// targets 'cocos2dlua'
// arguments 'NDK_TOOLCHAIN_VERSION=clang'
// arguments '-j' + Runtime.runtime.availableProcessors()
/* 使用3.16配置 ndk_module_path,解决文件路径过长的问题 */
if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
// skip the NDK Build step if PROP_NDK_MODE is none
targets 'cocos2dlua'
arguments 'NDK_TOOLCHAIN_VERSION=clang'
// arguments 'APP_PLATFORM=android-'+PROP_APP_PLATFORM
def module_paths = [project.file("../../../../cocos2d-x").absolutePath,
project.file("../../../../cocos2d-x/cocos").absolutePath,
project.file("../../../../cocos2d-x/external").absolutePath]
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
// should use '/'
module_paths = module_paths.collect {it.replaceAll('\\\\', '/')}
arguments 'NDK_MODULE_PATH=' + module_paths.join(";")
}
else {
arguments 'NDK_MODULE_PATH=' + module_paths.join(':')
}
arguments '-j' + Runtime.runtime.availableProcessors()
}
}
}
else if (PROP_BUILD_TYPE == 'cmake') {
cmake {
arguments "-DCMAKE_FIND_ROOT_PATH=", "-DANDROID_STL=c++_static", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE", \
"-DUSE_CHIPMUNK=TRUE", "-DUSE_BULLET=TRUE", "-DBUILD_LUA_LIBS=TRUE"
cppFlags "-frtti -fexceptions"
// prebuilt root must be defined as a directory which you have right to access or create if you use prebuilt
// set "-DGEN_COCOS_PREBUILT=ON" and "-DUSE_COCOS_PREBUILT=OFF" to generate prebuilt, this way build cocos2d-x libs
// set "-DGEN_COCOS_PREBUILT=OFF" and "-DUSE_COCOS_PREBUILT=ON" to use prebuilt, this way not build cocos2d-x libs
//arguments "-DCOCOS_PREBUILT_ROOT=/Users/laptop/cocos-prebuilt"
//arguments "-DGEN_COCOS_PREBUILT=OFF", "-DUSE_COCOS_PREBUILT=OFF"
}
}
}