Cocos2D-X官网已经简单介绍了如何在OS X环境下搭建Cocos2D-X v2.x和v3.x的指南。具体链接为:http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/getting-started/setting-up-development-environments-on-mac-with-eclipse/zh.md

在此,我将进一步介绍如何将生产的项目用于Android Studio。

我们通过上述链接中所描述的过程生成完一个HelloWorld项目工程后可以先放在桌面或其它临时文件夹里。然后,打开Android Studio应用,选择“Import Non-Android Studio Project”,然后选择HelloWorldDemo/proj.android所在目录。然后点击几次Next之后即可进入正式项目工程界面。一般来说,刚进入界面会出现missing SDK的错误。由于Cocos2D-X默认生成的SDK API版本太小,因此分别进入helloWorldDemo目录以及libcocos2dx目录下的build.gradle文件中,将compileSdkVersion、targetSdkVersion设置到较高版本即可。总之,只要当前的Android Studio能认出来就行。

其次,我们把src/main目录下的jni目录给delete掉。可以直接在左侧项目栏,右键jni,然后选择Delete删除之。由于这会使得Android Studio自动去编译JNI,然而我们已经通过执行build_native.py把整个JNI都编译好了,因此这一步可以放在外面做。

最后,我们点击绿色三角箭头即可运行这个HelloWorldDemo的应用了。

下面谈谈如何引入其它第三方库的问题。首先是JNI的库。我们知道,Cocos2D-X使用是C++作为主要开发语言,因此势必哋跟JNI来打交道。如果我们获得的第三方库也是JNI的.so动态库文件,那么我们可以在之前所生成的放在桌面或临时文件夹中的项目工程文件中,把第三方.so文件先放在“proj.android/jni”目录中。然后编辑Android.mk,在

LOCAL_STATIC_LIBRARIES := cocos2dx_static

这条语句下添加

LOCAL_LDLIBS += -L$(LOCAL_PATH)/ -lthird_party

假定,我们这里所使用的第三方动态库文件名为libthird_party.so。通过编译后,我们还需要将这些.so文件一起放到Android Studio项目工程下的HelloWorldDemo里的jniLib中。

然后,我们要添加其它C/C++源文件可以直接在LOCAL_SRC_FILES变量后通过+=操作符进行追加。

这里值得注意的是,Cocos2D-X默认仅编译armeabi,如果有需要,可以编辑Application.mk,修改APP_ABI变量,往后追加想要支持的ABI。现在Cocos2D-X v3.4的SDK,ARMv8还不支持。

对于导入第三方jar库的话也比较简单。我们首先可以把第三方jar库扔进Android Studio工程目录中的HelloWorldDemo目录下的jniLib目录中,然后打开Android Studio工程,在左侧项目栏里会把我们加入的jar文件显示出来,我们右键它(如果有多个可以多选),然后选择Add to Libs,将它们作为库正式导入到工程中。这样就OK了~

最后,如果要在工程中使用android.support库,或者第三方库中有对android.support库的引用,那么得在左侧工程栏里helloWorldDemo里的build.gradle的dependencies中添加如下语句:

dependencies {
compile project(':libcocos2dx') // 这个是已有的 /** 添加对com.android.support的支持 */
compile 'com.android.support:appcompat-v7:21.0.3'
}

对于其它资源文件可以合并到res目录下;对于要增加特殊的用户访问权限的,直接编辑AndroidManifest.xml即可。

OS X环境下如何搭建编译Cocos2D-X v3.x的Android Studio工程的更多相关文章

  1. 在 Mac OS X 环境中从源代码编译安装 FFmpeg

    最近因为一个项目要求,需要开发实时视频编解码功能,准备采用 FFmpeg 以 x264 方式进行实时的视频编解码.Windows 以及 Linux 环境下的 FFmpeg 动态库.头文件等资源都非常容 ...

  2. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

  3. MemCache在Windows环境下的搭建及启动

    MemCache在Windows环境下的搭建及启动 一.memcache服务器端的安装 1.下载memcached的安装包,memcached_en32or64.zip,下载链接:http://pan ...

  4. CentOS7.4,anaconda3,python3.6,tensorflow环境下gdal的编译和问题解决

    CentOS7.4,anaconda3,python3.6,tensorflow环境下gdal的编译和问题解决 这是gdal可能会用到的额外的包,按自己需要先提前编译. 这里的话我主要用了proj,L ...

  5. RabbitMQ,Windows环境下安装搭建

    切入正题:RabbitMQ的Windows环境下安装搭建 一.首先安装otp_win64_20.1.exe,,, 二.然后安装,rabbitmq-server-3.6.12.exe, 安装完成后,在服 ...

  6. Linux环境下使用VSCode编译makefile文件的注意事项

    Linux环境下使用VSCode编译makefile文件的注意事项 首先安装C/C++的两个依赖 在debug,launch会自动的生成下方的launch.json launch.json { // ...

  7. aarch64环境下,搭建并配置服务器tomcat:

    aarch64环境下,搭建并配置服务器tomcat: 环境说明及下载相关文件: 1. ARM环境:aarch64开发板 2.JDK安装包: jdk-8u231-linux-arm64-vfp-hflt ...

  8. Windows环境下使用VS2005编译OpenSSL

    如何Windows环境下,使用VS2005编译OpenSSL,虽然这个问题在Baidu.Google上一堆,但安装中还是遇到些问题,在这里 记录下来希望能帮助大家不要在走弯路.注:我是在WinXP S ...

  9. XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解

    XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...

随机推荐

  1. Go 逃逸分析

    Go 逃逸分析 堆和栈 要理解什么是逃逸分析会涉及堆和栈的一些基本知识,如果忘记的同学我们可以简单的回顾一下: 堆(Heap):一般来讲是人为手动进行管理,手动申请.分配.释放.堆适合不可预知大小的内 ...

  2. Python函数式编程-map/reduce

    1.map map()传入的第一个参数是f,即函数对象本身. map()函数接收两个参数,一个是函数,一个是Interable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterat ...

  3. JVM系列三:内存分配与回收策略

    内存分配策略 1.对象优先分配在新生代Eden区 多数情况下,对象分配在新生代的Eden,若Eden区域内存不够,则引发一次Minor GC 2.大对象直接进入老年代 大对象直接分配在老年代,避免新生 ...

  4. 'Cloud Native': What It Means, Why It Matters

    When HP announced July 28 that it was acquiring ActiveState's PaaS business, senior vice president B ...

  5. 利用videojs自动播放下一个

    利用videojs自动播放下一个 一.总结 一句话总结: 在视频放完的ended方法里面,指定video的src,然后this.play()放视频就好 vue来控制视频的链接也是蛮不错的 this.o ...

  6. MySQL进阶16 - 视图的创建/修改/删除/更新--可更新性的不适用条件

    #进阶16 : 视图 /* 含义: 虚拟表,和普通表一样使用;(从5.1开始使用的:)是通过表动态生成的数据 创建语法: create view 视图名 as 查询语句; ---------- 作用: ...

  7. 「数据结构与算法之链表(Python)」(四)

    什么是链表 顺序表的储存分为一体式结构和分离式结构,但总的来说存储数据的内存是一块连续的单元,每次申请前都要预估所需要的内存空间大小.这样就不能随意的增加我们需要的数据了.链接就是为了解决这个问题.它 ...

  8. 2019牛客多校B Beauty Values——思维题

    题目 求所有子区间中不同元素之和. 分析 枚举相邻的相同数字形成的区间,计算它是哪些区间的子区间,每次有-1的贡献,将其从总贡献中减去. #include<bits/stdc++.h> u ...

  9. JSP数据交互(二)

    Application:当前服务器(可以包含多个会话):当服务器启动后就会创建一个application对象,被所有用户共享page.request.session.application四个作用域对 ...

  10. MongoDB 分片键分类与数据分发

    In sharded clusters, if you do not use the _id field as the shard key, then your application must en ...