1. 环境准备:搭建安卓构建的基石
第一次用Cocos Creator 3.x打包安卓APK时,我像大多数开发者一样直接跳进了构建环节,结果被各种SDK报错教做人。后来才发现,环境配置就像盖房子的地基,偷工减料迟早要还。这里分享我踩坑后总结的完整配置方案。
Android Studio的安装看似简单,但有几个隐藏细节需要注意。首先建议下载2021.3.1以上版本,这个版本区间与Cocos Creator 3.x的兼容性最稳定。安装时务必勾选以下组件:
- Android SDK Platform 31(对应Android 12)
- NDK (Side by side) 版本建议选择r21e
- CMake 3.10.2
- Android SDK Build-Tools 30.0.3
安装完成后需要配置三个关键环境变量:
# 在~/.bashrc或~/.zshrc中添加 export ANDROID_HOME=/Users/你的用户名/Library/Android/sdk export NDK_ROOT=$ANDROID_HOME/ndk/21.4.7075529 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home注意:JDK必须使用8u版本,更高版本会导致构建时出现D8工具链错误。我在Mac上测试过OpenJDK 11会导致资源编译失败。
验证环境是否就绪可以运行:
adb version javac -version这两个命令能正常输出版本信息说明基础环境OK。接下来在Cocos Creator的"偏好设置→原生开发环境"中,需要手动指定NDK路径(就是刚才配置的NDK_ROOT路径),这一步官方文档没强调,但如果不设置会导致后续构建报"NDK not configured"错误。
2. 构建配置:避开版本兼容的暗礁
点击Cocos Creator的"项目→构建发布"时,新手最容易栽在SDK版本兼容问题上。经过十几次测试,我总结出这些黄金参数组合:
在"构建发布"面板的Android选项卡中:
- Target API Level设为31(对应Android 12)
- App ABI根据需求勾选,一般只需armeabi-v7a和arm64-v8a
- Min SDK Version建议设为21(Android 5.0)
- 勾选"调试模式"(首次构建建议开启)
重点来了!点击"构建"按钮前,务必先进行这两个操作:
- 删除项目目录下的build/android目录(旧构建残留会导致诡异错误)
- 关闭Android Studio(避免文件占用冲突)
构建过程中常见的两个坑点:
如果报"Failed to install the following Android SDK packages as some licences have not been accepted",需要运行:
cd $ANDROID_HOME/tools/bin ./sdkmanager --licenses然后一路按y确认
如果报"Unable to strip library",修改项目目录下的native/engine/android/app/CMakeLists.txt,在target_link_libraries里添加:
-Wl,--build-id=sha1
3. Android Studio调试:化解红色错误的艺术
用Android Studio打开构建生成的android目录时,你会看到满屏红色错误——别慌,这很正常。我总结了一套"消红"组合拳:
首先处理Gradle同步错误:
- 修改gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip - 修改build.gradle(Project):
classpath 'com.android.tools.build:gradle:4.0.1'
然后解决SDK版本警告:
- 打开File→Project Structure
- 将所有模块的Compile SDK Version改为31
- Build Tools Version改为30.0.3
实测发现:Gradle 6.1.1 + Android Gradle Plugin 4.0.1这个组合在Cocos项目中最稳定,新版反而容易出问题。
调试APK的生成技巧:
- 点击Build→Build Bundle(s)/APK(s)→Build APK
- 生成的apk在app/build/outputs/apk/debug目录
- 安装测试建议用真机调试,模拟器可能遇到GLES3兼容问题
4. Release签名:商业发布的通行证
发布正式版APK需要签名密钥库(keystore),很多开发者在这里犯致命错误——使用调试密钥发布。我在Google Play就见过因此被下架的游戏。正确的姿势是:
在Android Studio中生成密钥库:
- Build→Generate Signed Bundle/APK
- 选择APK→Next
- 点击"Create new..."按钮
- 密钥库路径建议放在项目根目录
- 别名(Alias)建议用项目英文名
- 有效期建议25年(Google Play要求至少到2033年)
关键参数设置:
- Key store password:包含大小写和特殊字符
- Key password:建议与store password不同
- Certificate信息可以随便填(但公司名要规范)
在Cocos Creator中配置签名:
- 取消勾选"使用调试密钥库"
- 密钥库路径选择刚才生成的.jks文件
- 填入密钥库密码和别名密码
- 再次构建项目
签名验证方法:
keytool -list -v -keystore your_keystore.jks输出中应有"SHA256withRSA"签名算法。
5. 图标定制:给游戏一张漂亮的脸
最后这个环节最简单但也最容易出错。我发现很多开发者的图标模糊就是因为没遵循安卓的多分辨率规范。正确的替换流程:
准备五种尺寸的PNG图标:
- 72x72 (hdpi)
- 48x48 (mdpi)
- 96x96 (xhdpi)
- 144x144 (xxhdpi)
- 192x192 (xxxhdpi)
替换路径:
native/engine/android/app/src/main/res/ ├── mipmap-hdpi ├── mipmap-mdpi ├── mipmap-xhdpi ├── mipmap-xxhdpi └── mipmap-xxxhdpi必须同时修改两个文件:
- AndroidManifest.xml中的android:icon属性
- build.gradle中的applicationIdSuffix
图标设计避坑指南:
- 不要包含透明通道(部分设备会显示黑边)
- 四角留10%空白(避免圆形裁剪时被切)
- 使用SVG矢量图源文件转换(保证清晰度)
快速生成多尺寸图标的技巧:
# 使用ImageMagick批量处理 for size in 48 72 96 144 192; do convert input.png -resize ${size}x${size} output_${size}.png done6. 进阶优化:让APK更专业
完成基础构建后,我通常会做这些优化:
缩减APK体积:
- 在build.gradle中启用资源压缩:
android { buildTypes { release { shrinkResources true minifyEnabled true } } } - 删除无用的ABI架构(比如只保留arm64-v8a)
混淆代码:
- 在proguard-rules.pro中添加Cocos专用规则:
-keep public class com.cocos.lib.* { *; } -keep public class org.cocos2dx.lib.* { *; }
渠道打包:
productFlavors { googleplay { dimension "store" } huawei { dimension "store" } }版本号自动化:
versionCode = (new Date().format('yyMMddHH').toInteger()) versionName = "1." + (new Date().format('MMdd'))