cocos打android包升级apiLevel和gradle

📅 发布时间:2026/7/7 8:38:03 👁️ 浏览次数:
cocos打android包升级apiLevel和gradle
背景 出于谷歌渠道审核需要升级apiLevel至33。参考1. 根据android studio官网说明升级gradle版本至7.3.3as中File-Project Structure中修改 / 手动编辑gradle/wrapper/gradle-wrapper.properties文件修改distributionUrl值可能存在部分maven使用非安全域名升级gradle后会提示报错对应maven处添加allowInsecureProtocol true2. 升级agp版本使之匹配gradle7.3.3的gradle使用7.2.2as中File-Project Structure中修改 / 手动修改project级build.gradle文件中classpath com.android.tools.build:gradle:$agp_version3. 项目原先是在local.properties文件中定义ndk路径升级后删除对应项在app级build.gradle中编辑android{ ndkVersion xxxx }4. 修改项目目录下app/jni/Android.mk文件如图否则编译无法通过。5. 修改诸如:variant.packageApplication - variant.getPackageApplicationProvider().get()variant.mergeAssets.doLast - variant.mergeAssetsProvider.get().doLast等2026.03.04更新背景出版社要求送审之前的送审包需要更新送审包在单独的分支在as里打开提示此时最低要gradle版本升至8.5和之前一样升级gradle8.5查表参照上图agp插件版本升级至8.3.2JDK版本选择17全局搜索compileOptions修改其内的sourceCompatibility、targetCompatibility值为JavaVersion.VERSION_17笔者这里遇到个问题通过as-Setting设置JDK版本后需要在gradle.properties中显示指定# 强制 Gradle 使用 Android Studio 自带的 JDKJava 21避免使用系统 Java 11 导致 AGP 8.x 报错 org.gradle.java.home/Applications/Android Studio.app/Contents/jbr/Contents/HomeNDK选择25.1.8937393同之前可能需要注释local.properties中的本地ndk路径设置如果本地ndk版本不对的话AGP到8.0之后自动优化dexing全局搜索删除之前的dexOptions同8.0后新特性若只用buildConfig字段需要在app级build.gradle文件下// 从 AGP 8.0 起BuildConfig 生成默认关闭需要显式开启否则会报错。 buildFeatures { buildConfig true }同8.0后新特性需要在各build.gradle文件中显式指定包名AndroidManifest文件内的没用了buildTool版本使用34.0.0config.gradle中androidBuildToolsVersion和gradle.properties中PROP_BUILD_TOOLS_VERSIONNDK升级后编译各种隐式类型转换会弹出报错。这里有好几种改法理论上根据报错找到指定文件行将隐式类型转换改为显式也可以解决需要上线发布长期维护则建议升级引擎版本毕竟这是官方团队的生成代码太老了后再根据编译log进行适配此处只是送审包仅做最低限度的修改app层级下Application.mk文件新增# NDK 25 对隐式 int/float 转换等更严格Cocos 2.4.9 原生代码未适配此处降级为警告避免大量报错 APP_CPPFLAGS -Wno-errorimplicit-const-int-float-conversion -Wno-errorimplicit-int-float-conversion APP_CFLAGS -Wno-errorimplicit-const-int-float-conversion -Wno-errorimplicit-int-float-conversion另一处需要修改的文件路径直接见下图在该Android.mk文件新增NDK 25 将隐式 int→float 等视为错误旧第三方库大量触发仅在此模块降级为警告以兼容 LOCAL_CFLAGS -Wno-errorimplicit-const-int-float-conversion -Wno-errorimplicit-int-float-conversion一个之前升级7.3.3时忘记写的部分这次又遇到了同这个问题简单说打包过程移动了apk文件的话会导致ide在预期位置找不到导致报错笔者理解像这个链接一样注释移动输出apk 理论上可以解决这个问题但是实操下来不行最终还是简单屏蔽对应的task了// AGP 7/8 的 ListingFileRedirectTask 会在固定路径找 output-metadata.json若项目改了 APK 输出路径会报错。 // 该 task 主要给 IDE 用打 release/debug 包可不需要直接禁用以避免 input file does not exist参考 CSDN 127392262 tasks.whenTaskAdded { task - if (task.name.contains(ApkListingFileRedirect)) { task.enabled false } }