android嵌入cocos进行二次开发

首先配置

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复制过来就可以直接运行了

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容