CocosCreator工程打包成aar

为什么要打包成AAR

  1. 减少接入SDK的工作量
  2. 便于扩展渠道
  3. 与外部对接更安全,无需提供源码

步骤

构建

  1. 打开CocosCreator,打开构建面板,选择Android平台,配置好 Target Api Level 即可,如下图

  1. 构建完后,用AndroidStudio打开工程,目录如下,我们只需要关注 app 目录

修改Module的build.gradle

build.gradle至少有两个,一个是 Project 的gradle文件,其他的都是 Module 的gradle文件,我们此次要修改的,就是app目录下的。

  1. 将工程变成模块,当然可以给个开关
// 开关
boolean isLib = false
if (isLib) {
    apply plugin: 'com.android.library'
} else {
    apply plugin: 'com.android.application'
}
  1. 去掉applicationId
if (!isLib) {
    applicationId "org.cocos2d.demo"
}
  1. 取消资源压缩,将 shrinkResources true 语句删除
  2. 拷贝资源代码修改
if (isLib) {
    android.libraryVariants.all { variant ->
        // 直接拷贝原有的代码块
    }
} else {
    android.applicationVariants.all { variant ->
        // 直接拷贝原有的代码块
    }
}

至此,build.gradle修改完毕

打包

  1. 找到 Gradle 栏目中对应的 module 依次查找到 Tasks ——> build ——> assembleRelease ,点击 assembleRelease

  1. 执行结束,在module目录下的 build/outputs/aar/ 下找到生成的aar文件即可。

  1. 因为工程本身还依赖了 libcocos2dx ,所以该模块也需要打包成aar,按照上一步选择libcocos2dx模块执行 assembleRelease

如果主工程已经附带了引擎自带的jar包,可以修改如下语句,请注意,如果是jsb-link模式,这样修改,是修改的全局的,在其它工程记得修改回来。

dependencies {
    //implementation fileTree(include: ['*.jar'], dir: '../java/libs')
    compileOnly fileTree(include: ['*.jar'], dir: '../java/libs')
}

该aar文件如果是jsb-link模式,则在引擎目录下,否则在工程目录下的 frameworks/cocos2d-x/cocos/platform/android/libcocos2dx/build/outputs/aar

最后,将两个aar提供给需求方,即可。

END

更多文章,可以关注我的公众号
wx_gh
或者访问我的个人博客

如果文章对您有所帮助,可以给个赞助
wechat

10赞

mark !!!

mark++

感谢分享,已经置顶。

你好,我按照这个打包的aar导入其他项目启动的时候报错,请指教一下,谢谢
Caused by: java.lang.IllegalArgumentException: Unable to find native library using classloader: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.example.cj-8M0xChVjfoRgOPRNHR94KA==/base.apk”],nativeLibraryDirectories=[/data/app/com.example.cj-8M0xChVjfoRgOPRNHR94KA==/lib/arm64, /data/app/com.example.cj-8M0xChVjfoRgOPRNHR94KA==/base.apk!/lib/arm64-v8a, /system/lib64, /product/lib64, /prets/lib64]]]
at com.google.androidgamesdk.GameActivity.onCreate(Unknown Source:217)
at com.cocos.lib.CocosActivity.onCreate(CocosActivity.java:66)
at com.cocos.game.AppActivity.onCreate(Unknown Source:0)
at com.example.cj.MyActivity.onCreate(MyActivity.java:13)
at android.app.Activity.performCreate(Activity.java:7458)
at android.app.Activity.performCreate(Activity.java:7448)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)

更新项目aar包的时候打出来的aar包还是老代码
除了清理缓存重新Build之外还有什么方法吗

估计没什么办法