cocos2dx游戏项目,集成到其他安卓项目工程之中!

这篇具有很好参考价值的文章主要介绍了cocos2dx游戏项目,集成到其他安卓项目工程之中!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

公司,想优化掉,在app中,以webview方式,加载游戏的方式。以安卓项目为例,改成:游戏项目导出安卓工程,可直接使用的aar资源。

第一步:cocos项目,构建安卓工程

安装配置原生开发环境,可以参考官方文档:https://docs.cocos.com/creator/2.4/manual/zh/publish/setup-native-development.html
备注:本人使用cocoscreator版本为:2.4.11版本,在构建发布页面,选择Android选项,构建成功后,不要点击后面的编译、运行按钮。直接用androidstudio打开构建好的安卓工程即可。

第二步:构建成功的安卓工程,导出aar资源

1、将CocosCreator导出的安卓工程,用AndroidStudio打开,并修改JDK版本。

cocos2dx游戏项目,集成到其他安卓项目工程之中!

2、将依赖库工程libcocos2dx打包成aar

cocos2dx游戏项目,集成到其他安卓项目工程之中!

3、修改instantapp工程下的build.gradle、AndroidManifest.xml文件

3.1、build.gradle文件修改后如下:

import org.apache.tools.ant.taskdefs.condition.Os
//apply plugin: 'com.android.application'
// 将工程作为library
apply plugin: 'com.android.library'
android {
    
    compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger()
    buildToolsVersion PROP_BUILD_TOOLS_VERSION

    defaultConfig {
        minSdkVersion PROP_MIN_SDK_VERSION
        targetSdkVersion PROP_TARGET_SDK_VERSION
        versionCode 1
        versionName "1.0"

        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("/Applications/Creator/2.4.11/CocosCreator.app/Contents/Resources/cocos2d-x"),
                                        project.file("/Applications/Creator/2.4.11/CocosCreator.app/Contents/Resources/cocos2d-x/cocos"),
                                        project.file("/Applications/Creator/2.4.11/CocosCreator.app/Contents/Resources/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 {
        java.srcDirs "../src", "src"
        res.srcDirs "../res", 'res'
        jniLibs.srcDirs "../libs", 'libs'
        manifest.srcFile "AndroidManifest.xml"
    }

    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 {
            debuggable false
            jniDebuggable false
            renderscriptDebuggable false
            minifyEnabled true
            //作为library不能设置这个参数
            //shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (project.hasProperty("RELEASE_STORE_FILE")) {
                signingConfig signingConfigs.release
            }

            externalNativeBuild {
                ndkBuild {
                    arguments 'NDK_DEBUG=0'
                }
            }
        }

        debug {
            debuggable true
            jniDebuggable true
            renderscriptDebuggable true
            externalNativeBuild {
                ndkBuild {
                    arguments 'NDK_DEBUG=1'
                }
            }
        }
    }

}
//将applicationVariants,改成libraryVariants
android.libraryVariants.all { variant ->
    // delete previous files first
    delete "${buildDir}/intermediates/merged_assets/"

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

        copy {
            from "${sourceDir}"
            include "assets/**"
            include "src/**"
            include "jsb-adapter/**"
            into outputDir
        }

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

dependencies {
    //注释掉这些依赖,不然打成aar后会运行会报冲突
//    implementation fileTree(dir: '../libs', include: ['*.jar','*.aar'])
//    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
//    implementation fileTree(dir: "/Applications/Creator/2.4.11/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/platform/android/java/libs", include: ['*.jar'])
    implementation project(':libcocos2dx')
}

3.2、AndroidManifest.xml文件修改如下:
cocos2dx游戏项目,集成到其他安卓项目工程之中!
3.3、同步gradle,然后将工程打包成aar。截图如下:
cocos2dx游戏项目,集成到其他安卓项目工程之中!

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

cocos2dx游戏项目,集成到其他安卓项目工程之中!
cocos2dx游戏项目,集成到其他安卓项目工程之中!

cocos2dx游戏项目,集成到其他安卓项目工程之中!
cocos2dx游戏项目,集成到其他安卓项目工程之中!
cocos2dx游戏项目,集成到其他安卓项目工程之中!
cocos2dx游戏项目,集成到其他安卓项目工程之中!
cocos2dx游戏项目,集成到其他安卓项目工程之中!
cocos2dx游戏项目,集成到其他安卓项目工程之中!
至此,结束。文章来源地址https://www.toymoban.com/news/detail-447921.html

到了这里,关于cocos2dx游戏项目,集成到其他安卓项目工程之中!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cocos2dx ​​Animate3D(二)

    扭曲旋转特效 源码 示例 瓷砖晃动特效 源码 示例 破碎的3D瓷砖特效 源码 示例 瓷砖洗牌特效 源码 示例 FadeOutTRTiles :淡出效果,从左下角到右上角 FadeOutBLTiles :淡出效果,从右上角到左下角 FadeOutUpTiles :折叠效果,从下到上 FadeOutDownTiles :折叠效果,从上到下 示例 方块消

    2024年02月05日
    浏览(38)
  • 《入门级-Cocos2d 4.0塔防游戏开发》---第二课:游戏加载界面开发

    目录 一、开发环境介绍 二、开发内容 2.1 修改窗口的大小。 2.2 添加加载场景相关代码 2.3 添加资源 三、显示效果 四、知识点  4.1 Sprite 4.2 定时器 操作系统:UOS1060专业版本。 cocos2dx:版本 环境搭建教程: 统信UOS下配置安装cocos2dx开发环境_三雷科技的博客-CSDN博客        游

    2024年02月15日
    浏览(62)
  • Pygame和Cocos2d

    Pygame和Cocos2d都是 Python 中常用的游戏引擎,但它们的设计目标、特点和使用场景略有不同。 Pygame与Cocos2d,目前是使用人数最多的两个Python游戏库。根据某知名产品点评网站的数据显示,Cocos2d排名第一,Pygame排名第二。 Pygame是一种基于SDL(Simple DirectMedia Layer)的Python库,主要

    2024年01月21日
    浏览(47)
  • cocos2D插件转3D插件

    cocos2D插件转3D插件

    2024年02月16日
    浏览(48)
  • Cocos2d-x实现文字颜色渐变

    更改CCLabel文件的updateColor()函数中的顶点颜色即可,代码如下: 效果图:  

    2024年02月12日
    浏览(44)
  • cocos2d-x C++与Lua交互

    Cocos版本: 3.10 Lua版本: 5.1.4 环境: window Visual Studio 2013 Lua 作为一种脚本语言, 它的运行需要有 宿主 的存在,通过 Lua虚拟栈 进行数据交互。 它的底层实现是 C 语言,C语言封装了很多的API接口,使得C/C++与Lua之间可以很方便的通信交互。 Lua的官网: https://www.lua.org/ 在coc

    2024年02月08日
    浏览(46)
  • 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目。 在Cocos2d-x被整合到Cocos引擎之前,我们可以不那么方便地在我们创建的工程里调试Cocos2d-x的代码,当我们使用了整合后的Cocos引擎,调试

    2024年02月12日
    浏览(58)
  • cocos2d-x Android原生平台与Lua交互

    版本: cocos2d-x 语言: C++/Java/Lua cocos2d-x原生平台Android 接入第三方SDK, 需要了解 LuaJavaBridge 的使用。 它封装了用于 Java 和 Lua 的相互调用, 其调用通过 C++ 为中介,简要的流程: Lua调用Java: Lua - C++ - Java Java调用Lua: Java - C++ - Lua 以此方式来实现数据的交互, 接下来我们分别说下

    2024年02月08日
    浏览(49)
  • cocos2d-x 3.17 推箱子 0.1

    此版本为推箱子游戏的基础版本, 后续添加如下功能 人物动画 TiledMap 解析 射线碰撞检测 下一步提示, C++算法解析 道具, 可以回退一步 通过 cocos 命令新建一个项目, 将本项目的 Reources 目录和 Classes 目录复制过去即可 使用图集绘制 Sprite , 然后手动处理碰撞检测 游戏学论著翻译

    2024年02月08日
    浏览(49)
  • 绑定证书的cocos2d程序如何对wss长连接抓包

    点击上方 ↑ ↑ ↑ 蓝字[ 协议分析与还原 ]关注我们 “  解决在应用内绑定了证书的cocos2d应用wss长连接抓包的问题。 ” 在分析应用的过程中,不可避免地需要抓包。 没加密的还好说,随便找个工具抓下就可以分析了,有些应用数据使用tls加密了,但用的是系统内置的证书,

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包