ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

cocos creator3.x项目打包成aar 加入到已有的Android工程

2026/9/26 2:26:27 拓冰建站 浏览量
cocos creator3.x项目打包成aar 加入到已有的Android工程

Cocos crearor版本:  3.4.2

Android Studio Flamingo | 2022.2.1 Patch 2

1、配置构建安卓项目

2、 运行编译无报错

出现问题可尝试修改Gradle版本

 修改jdk版本

3、对libservice打包成aar

打包完后 再build/outputs找到aar

如果看不到Tasks模块,在File -> Settings -> Experimental 选项,取消勾选 Do not build Gradle task list during Gradle sync 选项

Android Studio 右侧 Gradle 不显示 tasks 模块_右侧gradle更新完成后才会出现模块吗-CSDN博客

4、对libcocos2dx打包成aar

5、对app游戏内容打包成aar

修改游戏项的build.gradle,本身导出安卓项是打包apk的,所以需要gradle,将内容改成library,并去掉无用项,

修改后

import org.apache.tools.ant.taskdefs.condition.Os//将game工程作为library
apply plugin: 'com.android.library'RES_PATH = RES_PATH.replace("\\", "/")
COCOS_ENGINE_PATH = COCOS_ENGINE_PATH.replace("\\", "/")buildDir = "${RES_PATH}/proj/build/$project.name"
android {//有baseFeature 的话也注掉//baseFeature truecompileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger()buildToolsVersion PROP_BUILD_TOOLS_VERSIONndkPath PROP_NDK_PATHcompileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}defaultConfig {//去掉applicationId // applicationId APPLICATION_IDminSdkVersion PROP_MIN_SDK_VERSIONtargetSdkVersion PROP_TARGET_SDK_VERSIONversionCode 1versionName "1.0.0.1"externalNativeBuild {cmake {targets "cocos"arguments "-DRES_DIR=${RES_PATH}", "-DCOCOS_X_PATH=${COCOS_ENGINE_PATH}", "-DANDROID_STL=c++_static", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_LD=gold"cppFlags "-frtti -fexceptions -fsigned-char"}ndk { abiFilters PROP_APP_ABI.split(':') }}}sourceSets.main {java.srcDirs "../src", "src"res.srcDirs "../res", 'res'jniLibs.srcDirs "../libs", 'libs'manifest.srcFile "AndroidManifest.xml"assets.srcDir "${RES_PATH}/assets"jniLibs {// Vulkan validation layer// srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs"}}externalNativeBuild {cmake {path "../CMakeLists.txt"buildStagingDirectory "${RES_PATH}/proj/build"}}signingConfigs {release {if (project.hasProperty("RELEASE_STORE_FILE") && !RELEASE_STORE_FILE.isEmpty()) {storeFile file(RELEASE_STORE_FILE)storePassword RELEASE_STORE_PASSWORDkeyAlias RELEASE_KEY_ALIASkeyPassword RELEASE_KEY_PASSWORD}}}buildTypes {release {debuggable falsejniDebuggable falserenderscriptDebuggable falseminifyEnabled true//作为library不能设置这个参数//shrinkResources trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'if (project.hasProperty("RELEASE_STORE_FILE")) {signingConfig signingConfigs.release}// resValue  "string", "app_name", PROP_APP_NAME}debug {debuggable truejniDebuggable truerenderscriptDebuggable true// resValue  "string", "app_name", "${PROP_APP_NAME}-dbg"// applicationIdSuffix ".debug"}}
}dependencies {//去掉其他aar的添加//implementation fileTree(dir: '../libs', include: ['*.jar','*.aar'])//implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])//implementation fileTree(dir: "${COCOS_ENGINE_PATH}/cocos/platform/android/java/libs", include: ['*.jar'])implementation project(':libservice')implementation project(':libcocos')
}

修改AndroidManifest,去掉启动 

编译出aar 

 

6:其他项目组安卓工程,导入游戏aar资源,并加载呈现游戏

 在lib中加入导出的aar包

 在build.gradle中引入,game-release.aar不知道为啥引入失败,所以单独添加了

 MainActivity继承AppActivity就能使用了,如果本身游戏有其他安卓项需求,也可在AppActivity中实现再打包到aar中