Cocos Creator Android原生项目升级gradle版本

gradle 版本

原来版本 :4.10.3(插件3.2.0

升级后版本: 5.6.4(插件3.6.3

gradle路径:jsb-default/frameworks/runtime-src/proj.android-studio/gradle/wrapper/gradle-wrapper.properties

插件路径:jsb-default/frameworks/runtime-src/proj.android-studio/build.gradle

#Fri Oct 27 10:18:28 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

插件路径:jsb-default/frameworks/runtime-src/proj.android-studio/build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:3.6.3'


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

修改后 可以通过 File–>Project Structure 查看

![image-20210106182021197](Cocos Creator Android原生项目升级gradle版本/image-20210106182021197.png)

![image-20210106182038185](Cocos Creator Android原生项目升级gradle版本/image-20210106182038185.png)

修改文件

setting.gradle 修改

原因:构建失败

路径:

jsb-default/frameworks/runtime-src/proj.android-studio/setting.gradle

修改前 :

include ':libcocos2dx',':game', ':instantapp'

修改后:

include ':libcocos2dx'

修改原因:不需要game,用不到 这个模块是给Google Instant使用的,也可以直接屏蔽对应模块

CocosAndroid.mk 修改

原因:构建失败

路径:

jsb-default/frameworks/runtime-src/proj.android-studio/jni/CocosAndroid.mk

修改前 :

LOCAL_MODULE := cocos2djs_shared

修改后:

LOCAL_MODULE := cocos2djs

修改原因:构架报错,找不到target “cocos2djs”

app/build.gradle(资源复制丢失)

原因:构建失败

路径:

jsb-default/frameworks/runtime-src/proj.android-studio/app/build.gradle

修改前 :

android.applicationVariants.all { variant ->
    // delete previous files first
    delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"

    variant.mergeAssets.doLast {
        def sourceDir = "${buildDir}/../../../../.."

        copy {
            from "${sourceDir}/assets"
            into "${outputDir}/assets"
        }

        copy {
            from "${sourceDir}/src"
            into "${outputDir}/src"
        }

        copy {
            from "${sourceDir}/jsb-adapter"
            into "${outputDir}/jsb-adapter"
        }

        copy {
            from "${sourceDir}/main.js"
            from "${sourceDir}/project.json"
            into outputDir
        }
    }
}

修改后:

android.applicationVariants.all { variant ->
    // delete previous files first
    delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"
       //修改 报警错误 API 'variant.getMergeAssets()' is obsolete and has been replaced with 'variant.getMergeAssetsProvider()'.It will be removed at the end of 2019.                          
//  variant.mergeAssets.doLast {
    variant.mergeAssetsProvider.get().doLast{
        def sourceDir = "${buildDir}/../../../../.."

        copy {
            from "${sourceDir}/assets"
            into outputDir.dir("assets")
            into outputDir.dir("assets")
        }

        copy {
            from "${sourceDir}/src"
            into "${outputDir}/src"
            into outputDir.dir("src")
        }

        copy {
            from "${sourceDir}/jsb-adapter"
            into "${outputDir}/jsb-adapter"
            into outputDir.dir("jsb-adapter")
        }

        copy {
            from "${sourceDir}/main.js"
            from "${sourceDir}/project.json"
            into outputDir
        }
    }
}

修改原因:基本上就是把 into “${outputDir}/x” 改成 into outputDir.dir(“x”)

PS 如果 gradle 下载失败 可以参考我的另外一篇博客:CocosCreator导出Android项目采坑指南

47赞

@jare 建议放到官方文档里面去, 如何升级gradle

马克,学习~~~~~~~~

creator 2.4.x 有效~感谢大神

2.4.4按上面流程把game/instantapp模块注释掉后出包体积是原来的两倍,有谁知道是什么原因?AS用的是4.1.1,同时用creator3.0版本出包测试了一个空项目,同等条件下包体积和用2.4.x的差不多;另外解压缩包发现包内资源大小差异不大,所以怀疑是不是出包的过程中压缩的问题导致的,这个要怎么处理。

未改之前出包体积大概35m,改完后是70m

看看是不是某些资源重复了 看你描述感觉是资源重复

我解压缩和之前出的包对比了下 整体包内资源没多大变化 左边是原先出的包apk都是35m 解包出来80m ;右边是改变后apk是65m,解包出来也是80m左右,右图上少了5m是取消了一些模块才减少的

晚点我用一个空项目测试下看还是不是这样

\color{red}{当初就是靠这个文档的 }

creator2.4.4 as用的是3.5.3 gradle升级到5.6.4 插件版本 : ‘com.android.tools.build:gradle:3.4.3’ 包体正常, 正好接入的第三方sdk也正常;之前为了适配第三方sdk直接升级as到4.1,从而导致包体积异常;经过测试,即使使用一个新的cocos工程,作了“资源重复”的操作也是会导致包体积异常(通过解包比对发现,应该不是资源重复导致的,具体原因不清楚,初步怀疑是压缩的问题导致的),所以建议不要直接升级到4.x.x以上。

有用,靠谱 :+1:

工程AndroidManifest.xml配置的中添加android:extractNativeLibs=true属性试试

好的 有空试下 :yum:,之前怀疑是so库没压缩导致的

1赞

就是.so库的问题。解压后比没升级的大100m,大佬有解决方案吗?

你按image 说的试下,看行不,我现在gradle用的是5.6.4 可以正常出包

Mark!

@jare 建议放到官方文档里面去, 如何升级gradle

不看这篇文章真的无从下手

马克一下,很有用