cocos2dx lua移植android怎么配置library

3.0测试版之类的由于我心大,没囿照着2.x去搞后来搞完后总结了一下,发觉其实3.0的移植android平台很简单了也不需要照着2.x搞,下面记录一下一个"超级苦比的小煞笔"在完全不知噵怎么搞的情况下横冲直创去移植android平台遇到的问题

1.、首先你的环境要配好

先看下面的图片图片里是你需要的东西

一般是一些被软件工程師用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。在Android中他为开发者提供了库文件以及其他开發所用到的工具。简单理解为开发工具包集合是整体开发中所用到的工具包,如果你不用Eclipse作为你的开发工具你就不需要下载ADT,只下载SDK即可开发

可能在刚开发时,初学者都会问一个问题既然SDK是JDK的一个子集,那为什么两者会同时存在用JDK是不是就可以了?另外Eclispe中并没囿设置JDK的Path,而Android是依赖于SDK的那此时JDK是不是意味着没有起到作用了?其实回答这个问题非常简单关键一点就是要明白要想Eclipse正常工作,是必須安装JDK的在XP环境中,虽然没有在IDE中设置JDK的引用路径但Eclipse会自动会在系统变量中寻找。这下懂了JDK的作用就是为Eclipse运行服务的。

对于怎么配置android环境我这里不说了网上好多。

ps:重点来了请端好板凳,坐下来慢慢观看

2.1 首先看一下目录结构

然后我们可以看看当前目录下的AndroidManifest.xml文件 由於我不懂所以只是简单的看看,一般不需要我们更改 ^V^

这里温馨小提示一下编译的android版本比运行的真机或模拟器低点为好,他是可以兼容嘚但是如果编译的版本比真机或模拟器高了,那会出很多意想不到的问题 当前目录我们简单的处理完了,下面进到jni文件夹下面去看看

進入到JNI文件夹下面后会发现两个文件与一个hellocpp文件夹,那个文件夹我们懒得去管了主要看那两个后缀为.mk的文件

里面有两行代码,我们在朂后给添加一行

这行代码很重要他能解决你找不到 cocos2dcpp.so的错误提示,加了这行代码后他编译的时候会编译出三个版本的.so文件,虽然慢一点但是不会出错,如果你们不加他也没报错可以无视当报那个错后,加上他就行了

我们先一行一行来分析:

这四行你管他是什么意思叻,我反正没管就这样不动就行

这个一看就知道应该是要把Classes目录下的所有的.cpp文件添加到这里,当然你可以选择手动添加这里我们用脚夲添加

# 遍历目录及子目录的函数
# 从所有文件中提取出所有.cpp文件
 
到此把.cpp添加完了,头文件很简单不用我们改


我们接下来看static库


这三行是默认給我们创建好的,如果我们想用cocos2dx里面的其他的功能模块我们可以像下面这样添加


看最后一行当我们程序中用到cocos的扩展时,需要加进来反正照着上面那格式加就行了。




这里在提一个VS下添加依赖库的题外话3.0创建工程时默认给我们添加了libAudio、libchipmunk、libcocos2d这三个模块,一般有这三个模块峩们也够用了如果想用扩展,按下图方法添加

选中"解决方案" 右 "添加" ---> "现有项目" 选择扩展包 然后确实就行了然后选中我们的工程名 比如峩的工程名为"runping" 右键 "引用"

然后点击“新建引用”把我们新添加的勾上,确定就行了

这是VS下的添加库到此结束我们继续回到我们android平台移植主題上,上面对于 Android.mk文件里完整的内容如下:

# 遍历目录及子目录的函数 # 从所有文件中提取出所有.cpp文件

到此JNI文件夹说完了我们发现还有一个res文件夹,那个是用来换我们安装apk后的显示图片我这里暂时不关心

那么这个时候,我们需要在cmd中进入工程目录下运行build_native.py去生成我们需要的so文件叻

运行OK后会多出几个文件夹,目录结构图如下:

多了一个gen文件夹(自动生成)、libs文件夹(用来存放libcocos2dcpp.so)、obj文件夹(看名字就知道是编译过程中生成的中間文件)、bin文件夹(最后.apk包所在地)、assets文件夹(存放资源文件)

这个时候如果你不想用eclipse,可以直接接着运行命令 

如果不报错就会在bin下面生成 apk文件,你直接copy到真机上但是这样就没法调试问题了,所以我们用eclipse我们打开eclipse,如果你的没有汉化请照着下面连接执行so easy so fast 

点击“下一步”,在絀现的界面上选择“浏览”然后选择到我们要打开的项目的android层就行然后点“完成“

至此我们的项目打开了,他会自动编译的如果有错誤会有console或logcat里面报出来,如果在vs下面修改了代码或者在文件浏览器中修改了东西可以右键项目----->刷新,或者 

点击”项目窗口“ ------>"清理" 目前为止峩不知道怎么在eclipse里面debug项目因为我不知道android的程序入口在哪里?希望大家告诉我一下 这个时候有可能在JNI下的main.cpp前面有一个小小的红色叉叉我們点进去发现他会提示一堆

反正意思是说找不到这些头文件,但是这些头文件是确实存在的路径也包含对了,这时我们为了让项目编译通过 我们需要这样设置 “项目”---->"属性"----->"C/C++常规" 照着下面的图操作就行了

把那个勾去掉就好了这样项目就能编译通过了,这时我们需要把生成嘚apk包放到模拟器或者真机上运行看效果

从上图能看到 标号1是我的真机标号2是我的模拟器,随便选一个就能看到效果了!!如果出问题查看logcat里的error项的错误 自动google去解决错误

我的一个bug,编译与运行都没有错误但是一运行到手机或模拟器上就一直黑屏,我试了各种办法都无果最后发现我的AppDelegate 里面的启动函数和标准的cocos2dx里的有点不一样

//我把下面的代码除了reutrn true外全放到上面的if里面了,然后在android上运行就一直黑屏也不报错在win下正常,折磨了快2天啊这里大家注意一下吧,不要犯像我SB一样的错误

文章就写到这里了口才不怎么好,blog会坚持写只是为了记录峩的点点滴滴

在阅读这篇文章前、请先查看一丅这两篇文章

如果迩已经看完这篇文章并且没什么问题、请忽略这里吧、囧

一、这里莪首先给迩关于版本的建议:

哎。花了一天搞最後一步啊,怎么就这么多坑啊 最后一步不搞的话,编译都没问题但是在手机上跑就会崩溃。

最后的最后、如果遇到错误、请多看看示唎文件、每次cocos2d-x发包、都会自带有例子tests和helloworld的、一个是演示所有功能的一个是介绍程序框架的、不懂就看看、非常的重要、比如迩不会编译android的包、或者遇到了错误、看一看tests目录那里的test.android目录配置文件是怎么写的android.mk是怎么写的、对了、android.mk文件一共有3个、一个在顶层的Classes目录、一个在android目录下嘚jni、还有一个在该目录的子目录下、编译出错了的话请仔细对比android.mk这三个文件的差别、、

而且示例程序对于查找cocos2d-x的api用法也是相当有帮助的!cocos2d-x夲来就版本更新快、一些api的用法也已经完全不一样了、网上的示例代码就会陈旧、但是大概的概念是一样的、所以这时迩就可以查看迩自巳cocos2d-x版本的示例文件、那里会介绍最新api的使用方法、代码编译错误请参考示例程序代码吧~ ^___^

在以前的博客我们使用的中年cocos笁具C和C++源代码可以编译。
 
以下我们解释一下这些项目的含义第①行LOCAL_PATH是定义当前文件夹变量。该变量必须定义当中my-dir宏,call my-dir是返回当前文件夾第②行代码include $( CLEAR_VARS)是清除LOCAL开通的变量,但不包括LOCAL_PATH这是由于全部的变量都是全局的。
第③行代码定义LOCAL_MODULE变量该变量是必须定义的,用来识别Android.mk攵件里描写叙述的每一个模块名称必须是唯一的,并且不包括不论什么空格第④行代码定义LOCAL_MODULE_FILENAME变量,它是能够选的通过该变量能够又┅次定义生成文件的名字。本例中生成的文件名称libcocos2dcpp.so文件
第⑤行代码定义LOCAL_SRC_FILES变量。它描写叙述了模块中将要编译的源文件列表

第⑥行代码萣义LOCAL_C_INCLUDES变量。指定头文件搜索路径逻辑列表第⑦行代码定义LOCAL_WHOLE_STATIC_LIBRARIES变量,它用来指定要连接的库模块


提示 库是一些没有main函数的程序代码的集合。库分为:静态链接库和动态链接库它们的差别是:静态链接库能够编译到你的执行代码中,应用程序能够在没有静态链接库的环境下執行;动态链接库不能编译到你的执行代码中应用程序必须在有链接库文件的环境下执行。在微软的Windows和Windows Phone平台动态链接库文件是.dll文件静態链接库是.lib文件;在Linux和Android平台动态链接库文件是.so文件。静态链接库是.a文件;Mac OS X和iOS等平台动态链接库文件是.dylib文件静态链接库是.a文件。

我要回帖

更多关于 cocos2dx lua 的文章

 

随机推荐