Cocos2dx 3.x的android studio项目之间.so库、资源移植
来源:互联网 发布:2002文泰刻绘软件下载 编辑:程序博客网 时间:2024/06/07 03:01
如果你被下面这个报错困扰了好久,这篇文章也许会给你提供帮助。
java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList
正文:
有时候,我们可能需要把Cocos2dx的proj.android-studio项目中编译好的.so库移植到我们某个android studio项目中进行使用,但经常会遇到本文将详细介绍整个移植过程。
图1是cocos2dx项目中AS平台的工程。通过编译(cocos compile -p android –android-studio),已经产生了.so库文件。现在,我想将A中产生的动画效果或是资源转移到我已有的android项目中(AS项目)。那么需要如何操作呢?
图1.已经编译产生so库的cocos2dx AS项目A
图2.需要导入cocos2dx资源的AS项目B
1、在项目B中,File->New->Import Moudle, 将Cocos2dx项目中的libcocos2dx库工程导入,我的库工程目录如下图。(注意:libcocos2dx库工程不在proj.android-studio目录下,而在原始的Cocos2dx的cocos2d\cocos\platform\android\java下)。
成功导入后,项目B如下所示:
在项目B中,File->Project Structure,给app添加libcocoss2dx项目依赖。
2、将项目A中libs下的armeabi以及其中的libcocos2dcpp.so一同copy到项目B的libs文件夹下。
3、将项目A中的assets文件夹及其子文件,拷贝到项目B的app目录下(如果你的项目中已经有assets目录,你可以直接copy子文件到里面去)。
4、在app的AndroidManiFest.xml文件中加入如下代码(Cocos2dxActivity会根据这个名称来加载so库,也可以不加这个代码,在activity初始化时用System.loadLibrary(“cocos2dcpp”)来加载.so库):
<meta-data android:name="android.app.lib_name" android:value="cocos2dcpp"/>
5、最重要的一部,正确的指定.so库和assets。在app的build.gradle中加入如下代码:
sourceSets { main { jniLibs.srcDirs = ['libs'] assets.srcDirs = ['assets'] } }
app的build.gradle的完整代码:
重点说明一下,jniLibs.srcDirs = [‘libs’]就是指向armeabi/*.so的所在处,assets.srcDirs = [‘assets’]指向assets文件夹的所在处。所以,.so和assets的不一定非要放在固定的地方,如果更改位置,只要修改这里即可。[‘libs’]是以app目录为参考的(libs在app根目录下),举例:如果你把assets文件夹放在src目录下,那么就修改assets.srcDirs = [‘assets’]为 assets.srcDirs = [‘src/assets’],libs同理。(注意:每次修改build.gradle之后,要rebuild project来保证修改生效)
6、以上就是整体的移植配置工作,然后新建MainActivity.java , 继承Cocos2dxActivity, 就能运行你在.so中封装的各种功能、动画了。要想深入研究,看Cocos2dxActivity的代码,顺藤摸瓜,就能更好的将C++和Java混合使用了,这里不多做介绍。
MainActivity.java代码
import android.os.Bundle;import org.cocos2dx.lib.Cocos2dxActivity;public class MainActivity extends Cocos2dxActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
以下是我.so中库中的效果:
有错误或是问题,欢迎留言讨论。
- Cocos2dx 3.x的android studio项目之间.so库、资源移植
- cocos2dx项目移植android平台使用第三方so库被删掉的问题
- cocos2dx项目移植android平台使用第三方so库被删掉的问题
- cocos2dx项目移植android平台使用第三方so库被删掉的问题
- cocos2dx 3.x 移植android
- visual studio 10 cocos2dx项目移植到eclipse的android项目
- Cocos2dx 3.x移植Android及打包
- visual studio 10 cocos2dx项目移植到eclipse的android项目(配置请参照上一篇文章开发环境搭建)
- Cocos2dx项目移植Android平台
- cocos2dx项目向Android移植
- Cocos2dx项目移植Android平台
- android studio 项目添加so库
- cocos2dx 3.x android平台移植 apk打包教程
- cocos2dx 3.x 之移植到android平台
- cocos2dx转到android项目,使用第三方so库文件
- Cocos2dx 3.2的使用及其Android项目移植
- Cocos2dx 3.2的使用及其Android项目移植
- Eclipse ADT 与Android Studio 在放置jar库-资源文件-so文件的区别
- Http请求
- C++ function bind及策略模式
- VIM常用命令
- CodeForces 660D Number of Parallelograms(水题)
- Apache搭建多个站点方法详解
- Cocos2dx 3.x的android studio项目之间.so库、资源移植
- 浅析网站流量趋势预测
- 219. Contains Duplicate II
- C语言中 sqlite3 的 一些调用方式
- Android Studio 全屏问题
- MAVEN工程的构建与命令使用
- NSPredicate的用法使用情况
- Spring Mvc - 用户注册服务端生成默认头像实现
- shell脚本中判断文件是否存在