iOS&Android

android嵌入cocos进行二次开发

2023-05-15  本文已影响0人  阿狸清纯的容颜

首先配置

As版本: 2021.1.1.11

ndk: 19.2.5345600

target: 安卓33

安卓api区间: 23~33

jdk1.8.0_361 ( jre1.8.0_361)

接入的版本得跟cocos打出来的包版本差不多才能进行相互移植

一,Android方面的环境

这个是Cocos安装配置原生开发环境  sdk下载

https://docs.cocos.com/creator/2.4/manual/zh/publish/setup-native-development.html?h=%E5%AE%89%E5%8D%93

androidNDK下载

以及java jdk的安装以及下载

完成之后如果你是7.0的Gradle  需要换成4.x.x的gradle 不然会有很多问题 我尝试了三次换成4.x多的配置之后就成功了

到此我们android原生方面的环境就配置好了

二,cocos的环境搭建

下来对cocos项目进行拉取

下载cocos开发软件:    https://www.cocos.com/

我的cocos环境版本是2.4.10

项目打开之后会让你选择版本点击那个版本就直接进去了

点击项目->构建发布->进入构建发布弹框

下来点击构建就可以了

点击三个点就能找到自己刚刚构建的项目

这个就是刚才构建的项目

可以使用android studio运行下面这个proj.android-studio这个项目

运行完成之后就能看到你的游戏

cocos的环境也准备完成

三,对cocos打的android项目迁移进入自己创建的项目

    1,将我们构建的cocos项目的

cocos2d-x复制到我们创建的android项目的根目录下面

        2,打开settings.gradle 然后将 礼包cocos2dx进行依赖

rootProject.name ="DesktopMeow"

include':app'

include':libcocos2dx'

project(':libcocos2dx').projectDir =new File('cocos2d-x\\cocos\\platform\\android\\libcocos2dx')

3,打开local.properties文件  对sdk跟ndk 跟 cocos构建的android项目进行对比

ndk.dir=C\:\\Users\\HXC401\\AppData\\Local\\Android\\Sdk\\ndk\\19.2.5345600

sdk.dir=C\:\\Users\\HXC401\\AppData\\Local\\Android\\Sdk

4,gradle.properties 文件跟cocos构建的android项目对比复制

org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8

android.useAndroidX=true

kotlin.code.style=official

android.nonTransitiveRClass=true

# cocos ???

PROP_COMPILE_SDK_VERSION=33

PROP_MIN_SDK_VERSION=16

PROP_TARGET_SDK_VERSION=33

PROP_BUILD_TOOLS_VERSION=28.0.3

#PROP_APP_ABI=armeabi-v7a:arm64-v8a:x86:x86_64

PROP_APP_ABI=armeabi-v7a:arm64-v8a

#RELEASE_STORE_FILE=C\:/ProgramData/cocos/editors/Creator/2.4.10/resources/static/build-templates/native/debug.keystore

#RELEASE_STORE_PASSWORD=123456

#RELEASE_KEY_ALIAS=debug_keystore

#RELEASE_KEY_PASSWORD=123456

#android.injected.testOnly=false

我进行了注释以及不必要的都删除掉了

5,将 build-cfg.json文件复制过来了并修改里面的路径(我不知道这个文件干嘛的看到有就复制过来了 有小伙伴知道的可以评论告诉我)

修改之后的:

{ "ndk_module_path": [ "./cocos2d-x", "./cocos2d-x/cocos", "./cocos2d-x/external" ], "copy_resources": []}

6,打开根目录下的build.gradle文件增加一行代码 

7,app下面增加jni文件

    

根目录下面增加jni文件

对复制过来的跟目录下的CocosAndroid.mk文件进行修改

增加两个jni文件

8,打开app下的build.gradle文件

import org.apache.tools.ant.taskdefs.condition.Os

plugins{

    id'com.android.application'

    id'org.jetbrains.kotlin.android'

}

android{

    compileSdk32

    defaultConfig{

        applicationId"com.example.desktopmeow"

        minSdk23

        targetSdk32

        versionCode1

        versionName"1.0"

        testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner"

        externalNativeBuild{

            ndkBuild{

                if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') !=0) {

// skip the NDK Build step if PROP_NDK_MODE is none

                    targets'cocos2djs'

                    arguments'NDK_TOOLCHAIN_VERSION=clang'

                    def module_paths = [project.file("../cocos2d-x"),

project.file("../cocos2d-x/cocos"),

project.file("../cocos2d-x/external")]

if (Os.isFamily(Os.FAMILY_WINDOWS)) {

arguments'NDK_MODULE_PATH=' + module_paths.join(";")

}else {

arguments'NDK_MODULE_PATH=' + module_paths.join(':')

}

arguments'-j' + Runtime.runtime.availableProcessors()

}

}

            ndk{

                abiFilters PROP_APP_ABI.split(':')

}

}

}

    sourceSets{

        main{ jniLibs.srcDirs = ['libs']}

}

    packagingOptions{

        exclude'META-INF/proguard/coroutines.pro'

        exclude'META-INF/proguard/okhttp3.pro'

    }

    externalNativeBuild{

        ndkBuild{

            if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') !=0) {

// skip the NDK Build step if PROP_NDK_MODE is none

                path"jni/Android.mk"

            }

}

}

    signingConfigs{

        release{

            if (project.hasProperty("RELEASE_STORE_FILE")) {

storeFile file(RELEASE_STORE_FILE)

storePassword RELEASE_STORE_PASSWORD

keyAlias RELEASE_KEY_ALIAS

keyPassword RELEASE_KEY_PASSWORD

}

}

}

    buildTypes{

        release{

            debuggablefalse

            jniDebuggablefalse

            renderscriptDebuggablefalse

            minifyEnabledtrue

            shrinkResourcestrue

            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'

            if (project.hasProperty("RELEASE_STORE_FILE")) {

signingConfig signingConfigs.release

}

externalNativeBuild{

                ndkBuild{

                    arguments'NDK_DEBUG=0'

                }

}

}

        debug{

            debuggabletrue

            jniDebuggabletrue

            renderscriptDebuggabletrue

            externalNativeBuild{

                ndkBuild{

                    arguments'NDK_DEBUG=1'

                }

}

}

}

    compileOptions{

        sourceCompatibility JavaVersion.VERSION_1_8

        targetCompatibility JavaVersion.VERSION_1_8

    }

    kotlinOptions{

        jvmTarget ='1.8'

    }

}

android.applicationVariants.all{ variant->

    delete"${buildDir}/intermediates/merged_assets/"

    variant.mergeAssets.doLast{

        def sourceDir ="${buildDir}/../../.."

        copy{

            from"${sourceDir}"

            include"assets/**"

            include"res/**"

            include"src/**"

            include"jsb-adapter/**"

            into outputDir

}

        copy{

            from"${sourceDir}/main.js"

            from"${sourceDir}/project.json"

            into outputDir

}

}

}

dependencies{

    implementation'androidx.core:core-ktx:1.3.1'

    implementation'androidx.appcompat:appcompat:1.2.0'

    implementation'com.google.android.material:material:1.4.0'

    implementation'androidx.constraintlayout:constraintlayout:2.0.4'

    testImplementation'junit:junit:4.13.2'

    androidTestImplementation'androidx.test.ext:junit:1.1.3'

    androidTestImplementation'androidx.test.espresso:espresso-core:3.4.0'

    implementation fileTree(dir:'../libs',include: ['*.jar','*.aar'])

implementation fileTree(dir:'libs',include: ['*.jar','*.aar'])

implementation fileTree(dir:"../cocos2d-x/cocos/platform/android/java/libs",include: ['*.jar'])

implementation project(':libcocos2dx')

}

基本上就是复制过来然后修改路径 下来我说一下哪些地方需要修改

第一个

修改下面这个路径的时候需要你把cocos下面的一些文件复制到你的项目上一层文件或者你写绝对路径指到你的本地cocoso项目目录也行

这个直接找你那个cocos2d-x的文件路径就行了

9

9,下来设置清单文件

将Activity以及sdkWrapper复制过来就可以直接运行了

上一篇下一篇

猜你喜欢

热点阅读