版本: v3.8.0
环境: Mac
介绍
曾编写过一篇文章: cocosCreator笔记 之 Android打包 使用的版本是: v3.4.0
在官方发布最新版本3.8.0后,就编写了Demo尝试打包发布下,结果一路的报错问题。
写此博客,用于将问题及升级流程汇总记录下。
升级
3.8.0版本的Android打包,需要对一些工具升级:
- JDK版本需要升级到17, JDK17 下载成功后,通过
java -version
来验证下 - AndroidStudio需要使用到 Android Studio 2022.2.1, [Android Studio]
- AnroidStudio下载成功后, 关于NDK需要的版本:
版本在: 18.1 ~ 21.4之间,配置NDK的时候,将目录设定到21.4, 比如: ../ndk/21.4.7075529
-
升级
Gradle
版本,在AndroidStudio打包的时候,会进行自动升级,到8.0.2
版本。如果想自己升级的话,Gradle distributions 下载 gradle-8.0.2-bin.zip
下载很慢, 请慢慢等待。
配置
在3.4版本Android包构建后, 会修改: ../Project/build/android/proj/build.gradle
buildscript {
repositories {
// 将原有的镜像修改为阿里云的镜像
// google()
// jcenter()
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/jcenter'}
maven { url 'http://maven.aliyun.com/nexus/content/groups/public'}
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
}
// 如果没有,新增下
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/jcenter'}
maven { url 'http://maven.aliyun.com/nexus/content/groups/public'}
}
}
apply from: NATIVE_DIR +"/build.gradle"
是因为镜像为国外,导致打包会报错。
但是在3.8版本后,注意: 不要修改 ,且保持版本: 8.0.2
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.2'
}
}
apply from: NATIVE_DIR +"/build.gradle"
如果添加修改源的话,会有报错:
Execution failed for task ‘:libcocos:parseReleaseLocalResources’.
如果gradle版本非8.0.2的话,会提示类似错误:
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:78)
at org.gradle.wrapper.Install.createDist(Install.java:47)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:219)
at java.util.zip.ZipFile.<init>(ZipFile.java:149)
at java.util.zip.ZipFile.<init>(ZipFile.java:163)
at org.gradle.wrapper.Install.unzip(Install.java:160)
at org.gradle.wrapper.Install.access$400(Install.java:29)
另外注意一个问题:
在 ../native/engine/android/app/build.gradle
中的修改 applicationId 为 namespace
compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger()
buildToolsVersion PROP_BUILD_TOOLS_VERSION
ndkPath PROP_NDK_PATH
+ namespace APPLICATION_ID
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -17,7 +18,6 @@ android {
}
defaultConfig {
- applicationId APPLICATION_ID
minSdkVersion PROP_MIN_SDK_VERSION
targetSdkVersion PROP_TARGET_SDK_VERSION
versionCode 1
尤其下面标红的配置要检测下,是否已经去掉。
如果单纯的使用3.8.0版本打包, 应该不需要此处配置的问题, 应该是没有的, 但是依然存在。
本问题已反馈给官方,看他们的反馈吧: 论坛反馈
微信小游戏打包
注意下appId
的设定,不要使用官方自己的测试ID, 请使用自己的小游戏appId
否则,在打包完成,通过微信开发者工具运行的时候,会提示:
未找到app.json文件
该问题的原因是appId使用不同,打开默认的程序设置也不同, 比如游戏是game.js