Cocos2d-x-3.11生成预编译库编译安卓报错的解决办法

使用命令“cocos gen-libs”生成预编译库报错信息如下:

cocos2d-x-3.11/tools/simulator/frameworks/runtime-src/proj.android/../../../../..//tools/simulator/libsimulator/proj.android/../lib/ProjectConfig/ProjectConfig.cpp:24: error: relocation overflow in R_ARM_THM_CALL
cocos2d-x-3.11/tools/simulator/frameworks/runtime-src/proj.android/../../../../..//tools/simulator/libsimulator/proj.android/../lib/ProjectConfig/ProjectConfig.cpp:26: error: relocation overflow in R_ARM_THM_CALL
collect2: error: ld returned 1 exit status
make: *** [obj/local/armeabi/libcocos2dlua.so] Error 1
make: Leaving directory `/Applications/Cocos/Cocos2d-x/cocos2d-x-3.11/tools/simulator/frameworks/runtime-src/proj.android'
Error running command, return code: 2.
Error running command, return code: 14.

NDK在Android 编译过程中,部分使用 thumb 模式,部分使用 arm 模式,应该是由于 thumb 模式是 16 位,链接地址不足导致的relocation overflow in R_ARM_THM_CALL错误,从log信息发现在编译cocos2d-x-3.11\tools\simulator\libsimulator\lib\ProjectConfig\ProjectConfig.cpp时报错,源头锁定。


1. 找到cocos2d-x-3.11\tools\simulator\libsimulator\proj.android\Android.mk文件,添加下面这句,使用arm模式编译
ifeq ($(COCOS_SIMULATOR_BUILD),1)
LOCAL_ARM_MODE := arm
endif
Cocos2d-x-3.11生成预编译库编译安卓报错的解决办法_第1张图片
cocos2d-x-3.11\tools\simulator\frameworks\runtime-src\proj.android\jni\Application.mk中已经定义了COCOS_SIMULATOR_BUILD := 1,所以上面LOCAL_ARM_MODE:=arm会被执行。修改后保存文件,再生成预编译库就不会报错了。

2.生成framework项目模板
cocos2d-x-3.11\templates下是没有framework项目模板的,需要执行“cocos gen-templates”,自动生成项目模板。
3.创建framework项目
cocos new PrejectName -p xxx -t binary -l cpp -d NEW_PROJECTS_DIR

你可能感兴趣的:(Cocos)