2.4.3,先确保4.2.2+API34能正常出包,然后gradle升级到8.5.0,ndk26/28试过都行,出包编译各种C++报错,主要是:int-float精度问题、库问题,这个照着2.4.14引擎版本改就行,android库直接拷过来用,挨个改完就能正常出包了,暂时自救出包成功,等后续进一步看看运行有没有问题
我没有使用cocos2.x,使用的是3.7.4,可以参考一下
1、先升级Android studio到最新版,老版本不支持
2、gradle.properties:修改PROP_COMPILE_SDK_VERSION=35、PROP_TARGET_SDK_VERSION=35,PROP_BUILD_TOOLS_VERSION=35.0.0,即使用的sdkVersion和toolsVersion修改为对应版本;同时记得去SDK Manager下载对应版本的build-tools,顺便ndk下载26.1.10909125;PROP_NDK_PATH改为 26.1.10909125,即ndk构建版本修改为最低支持的26.1.10909125
3、project级build.gradle:修改 classpath’com.android.tools.build:gradle:8.6.0’ AndroidGradlePlugin(AGP)升级到8.6,对应Gradle升级到8.7,即gradle-wrapper.properties里修改为distributionUrl=https://services.gradle.org/distributions/gradle-8.7-bin.zip
4、libcocos和libservice添加 namespace’com.cocos.lib’ namespace"com.cocos.service";原因 Google要求所有module都需要namespace了
5、命令行构建,Java升级到21(看构建提示17应该也可以,不过Android studio升级后自带的是21,直接就升级到21了)
6、native/engine/android/CMakeLists.txt文件添加 add_definitions(-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) ;原因 :cocos部分c++文件语法不支持,即会报错No template named ‘unary_function’ in namespace ‘std’; did you mean ‘__unary_function’?;根据iOS的经验结合AI说是在cmakeLists添加支持就可以了,结果一次成功
7、cocos引擎文件:CocosTouchHandler.java引入 importcom.google.androidgamesdk.BuildConfig; BuildConfig现在需要进入才能使用
8、命令行构建提示现在震动需要添加相应的权限声明,在libcocos2dx下的androidmanifest.xml添加uses-permissionandroid:name=“android.permission.VIBRATE”/;在自己项目下添加也行,不过为了通用添加在引擎侧添加
9、命令行构建提示CocosLocalStorage.java下getColumnIndex方法使用方式错误,根据AI提示改为getColumnIndexOrThrow,也可以自行修改使用方法
最近SDK升级到35了。NDK只能升到26.3.XXX,升级到27的时候,C++代码构建有报错。
问题已解决,此贴终结。
话说最终采用哪种方案解决的?
我用2.4.3 各种找AI配合着改的能打包出来了,但是一运行直接崩溃了,所以是必须要升级到2.4.14么?
我现在是能打包,但是一运行直接就崩溃,所以是需要创建个2.4.14的项目然后替换么
大佬,想请教一下:
cocos creator 构建用的是哪个版本的ndk?
Android Studio 里的NDK我升级到了你同样的版本,26.1.10909125
可是构建出apk后,libcocos.so还是没有对齐16KB
CMakeList.txt是修改的项目构建后,native/engine/android/CMakeLists.txt
想请教下还有哪里需要修改?
这里只说了升级35,对齐16kb的话需要升级到28.1.13356709;升级之后好像还需要修改:jsb_global_init.cpp xxteaKey 声明改为staticstd::vectorxxteaKey,具体构建的时候报错问一下AI就行;
CMakeList.txt应该就是修改构建后的;不过后续我们改成了修改引擎的engine/native/CMakeLists.txt,按照官方在3.8.6上的修改在80几行左右添加了
if(NOT WINDOWS)
add_definitions(-DBOOST_NO_CXX98_FUNCTION_BASE)
endif()
好的,我试下,cocos creator 里配置NDK,会提示版本支持21-23,不知道您是不是仍然选择配置了r28版本?
cocos里的配置21不用管啊,最终出包肯定是用Android studio出包,安卓工程里的gradle.properties里PROP_NDK_PATH配置28;一般来说初次构建成安卓项目后,安卓项目里面的东西不用动了,后面构建只需要打包游戏工程的js代码和资源
好的,谢谢大佬,我再试试
我是Android Studio构建过程中,哪里报错就对着2.4.14的引擎代码改当前项目引擎代码而已,你这个都能出包了,得看奔溃日志查找问题
已经解决了,用2.4.14替换库,然后改以下gradle就能跑了,已经上架成功了
哥 ,你简直就是神!!! 全部按照你的来能运行了。虽然现在还没有接goole play 但问题应该不大了
mark一下,马上要用到了