新手,cocos2dx移植到android平台不知道怎么导入sqlite3库

游戏攻略03

新手,cocos2dx移植到android平台不知道怎么导入sqlite3库,第1张

新手,cocos2dx移植到android平台不知道怎么导入sqlite3库
导读:  创建windows平台项目 一、 搭建windows开发环境 官网上显示cocos2d-x支持win7、winxp、vista系统但我只在win7上用过以下说明均是在win7系统上的编译器使用vs2010。  1、 安装vs201

  创建windows平台项目 一、 搭建windows开发环境 官网上显示cocos2d-x支持win7、winxp、vista系统但我只在win7上用过以下说明均是在win7系统上的编译器使用vs2010。

  1、 安装vs2010 2、 安装Visual Assist X可选

  3、 执行build-win32bat编译cocos2d-x

  4、 运行cocos2d-x根目录下的install-templates-msvcbat将cocos2d-x模板加入vs模板库。

  5、将\Debugwin32目录下的所有dll文件拷贝至Windows\system32\ (iconvdll libcocos2ddll libcocosDenshiondll libcuridll libEGLdll libgles_cmdll libxmldll pthreadVCE2dll zlib1dll )6、 双击cocos2d-win32vc2010sln进入vs编译环境

  二、 新建win32项目

  1、在“解决方案”上单击右键选择“添加”-〉“新建项目”。

  2、选择“左侧Cocos2d-x模板”在右侧列表中选择“Cocos2d-win32 Application”输入项目名称“Cocos2dDemo”点“确定”。

  3、在弹出的对话框中点击“下一步”。

  4、如果需要使用Box2D引擎则选中否则不要选。点击“finish”创建成功。

  三、 编译运行

  1、右键Cocos2dDemo项目选择“生成”进行编译。

  2、右键Cocos2dDemo项目选择“设为启动项目”。然后F5或者点击菜单栏的运行键 运行。

  四、 创建新的解决方案 新建项目有两种方式一是直接在cocos2d-x解决方案中添加新项目上面已经介绍过了。当你刚开始接触cocos2d-x还在尝试写demo时用这种方式可以快捷的创建demo而且方便查看例子中的代码。

  另一种方式是创建一个新的解决方案方法如下

  1、“文件”-〉“新建”-〉“项目”

  2、进入新建项目的窗口选择“左侧Cocos2d-x模板”在右侧列表中选择“Cocos2d-win32 Application”输入项目名称“Cocos2dDemo”点“确定”。然后执行“下一步”。

  3、使用Box2D引擎则选中否则不要选。点击“finish”创建成功。

  4、单击左下角的属性标签或者选择“视图”-〉“属性管理器”打开属性管理器

  5、在属性管理器中双击“MicrosoftCppWin32user”弹出属性页在里面设置VC++目录即可。这样该设置对所有VC项目都有效见下图。

  6、在“包含目录”中, 加入下列项目 (D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32)

  7、在“库目录”中, 加入下列项目(D:\adroid\cocos2d-20x-203\Debugwin32)(发布时用release目录下的!!)

  8、上面的第4、5、6、7条

  也可以通过如下方法解决: 定位到%USERPROFILE%\appdata\local\microsoft\msbuild\v40可以通过运行或直接在windows资源管理器的地址栏中输入使用其他文本编辑工具修改MicrosoftCppWin32userprops或MicrosoftCppX64userprops文件中的相关字段。以下是我的文件内容 <IncludePath>D:\android\cocos2d-20-x-203;D:\android\cocos2d-20-x-203\cocos2dx;D:\android\cocos2d-20-x-203\cocos2dx\include;D:\android\cocos2d-20-x-203\cocos2dx\platform;D:\android\cocos2d-20-x-203\cocos2dx\platform\win32;D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32\OGLES;D:\android\cocos2d-20-x-203\external\Box2D;D:\android\cocos2d-20-x-203\CocosDenshion\include;D:\android\cocos2d-20-x-203\cocos2dx\platform\third_party\win32;D:\android\cocos2d-20-x-203\cocos2dx\kazmath\include;$(IncludePath)</IncludePath><LibraryPath>D:\android\cocos2d-20-x-203\Debugwin32;$(LibraryPath)</LibraryPath> 第4至8条的作用是加入解决方案所依赖的头文件和库文件以保证项目的正常编译运行。

  五、 如何删除vs里的cocos2d-x模板

  1、 打开如下目录 (Example as default install) 1VS2008: C:\Program Files\Microsoft Visual Studio 90\VC\vcprojects\ 2VC2008Express: C:\Program Files\Microsoft Visual Studio 90\VC\Express\VCProjects 3VS2010: C:\Program Files\Microsoft Visual Studio 100\VC\vcprojects\ 4VC2010Express: C:\Program Files\Microsoft Visual Studio 100\VC\Express\VCProjects

  2、 删除此目录下的 Cocos2d-x文件夹 3、 删除前缀为 CCAppWiz (080 or later) 或 CCXAppWiz (072 or earlier)的文件

  将项目由win32移植到android平台

  一、 快速搭建android开发环境

  1、将服务器上的eclipse、java、android sdk、android ndk、cygwin、cocos2d-x文件夹拷贝到本地请注意保存的路径为英文、不包含空格、且不要过长。

  2、 运行eclipse添加android-sdk的路径。(preferences->Android:SDK Location)

  3、 添加ADT(Help->Install New Software:Work with)

  4、添加java环境变量。 新建变量JAVA_HOME变量值为java目录的绝对路径。 在path中添加 %JAVA_HOME%\D:\android\Java\jdk160_20\bin; %JAVA_HOME%\D:\android\Java\jdk160_20\jre\bin; D:\android\Java\jre6\bin;

  5、运行一次Cygwinbat

  6、修改\cygwin\home\用户名\bash_profile文件添加NDK_ROOT=/cygdrive/d/android/android-ndk-r8b export NDK_ROOT

  7、 修改\cocos2d-20-x-203\create-android-projectbat中的如下路径 set _CYGBIN=e:\cygwin\bin set _ANDROIDTOOLS=e:\android\android-sdk\tools set _NDKROOT=e:\android\android-ndk-r8

  二、 新建android项目

  1、 运行create-android-projectbat创建新的android项目例如项目名称为Cocos2dDemo。

  2、 将win32下完成的cpp和h文件拷贝到\Cocos2dDemo\Classes

  3、将win32下使用的资源拷贝到\Cocos2dDemo\projandroid\assets

  4、将cpp文件的路径、使用的头文件的目录加入到Androidmk文件。

  5、打开Cygwincd 到/Cocos2dDemo/projandroid目录下

  6、执行/build_nativesh进行编译

  7、在eclipse中编译打包。

  三、 补充

  1、20以上版本的引擎基本无法在android模拟器上运行建议在xcode和vs上调试好直接在真机上运行。

  2、20以上版本的引擎要求android的开发和运行环境都要22以上的sdk。

  将项目由win32移植到ios 一、 创建ios项目

  1、 安装XCode

  2、执行install-templates-msvcbat将模板添加到XCode

  3、打开xcode选择Create a new Xcode project选择cocos2d-x模版

  4、点击next填入项目名称Man

  5、找到Man的主项目在这里新建一个iOS文件夹。点击create创建完成

  6、删除Resource和Classes下的多余文件Helloworld的代码和资源

  7、右键点击Resource 选择Add Files to "Man" 7、将Man主项目文件夹下的Resource文件夹中的资源添加到当前工程。注意选择create folder references for any added folders只是添加一个引用

  8、同样的方法添加源文件和头文件到Classes下

  9、点击Run编译运行

  二、 补充

  1、Mac 平台的OS X需要106及以上版本

  2、IOS平台需要40及以上版本

  3、IOS真机支持iPad 1、iPad 2、iPad 3、 iPhone 3GS、iPhone 4、iPhone 4S、iPhone 5、iphone6、iPod Touch 3 and iPod Touch 4 不支持iPhone and iPhone 3G。

SystemloadLibrary("game")一般是调用编译好的DLL(WINDOWS下,LINUX,ANDORID下是so文件)的,想知道详细内容可以去网上搜索下JAVA JNI

CC开头的类估计是JAR包里的,想下载直接把cocos2d- androidjar放到百度里搜就好了

您好,python和ndk没有用最新的

  主要原因是之前搞的时候最新的有bug

  于是沿用之前成功的版本

  下面就是骨头一路上的碰壁:

  流水帐开始:

  1

  首先在公司的win8上安装vs2013半点问题没有

  用vs2013打开之前用vs2012下创建的项目提示不好用

  愿意是我忽略的升级配置文件的选项。

  2

  尝试微软提供的项目管理软件:TFS,申请微软的免费服务器。

  发现功能太强大,适合大项目的项目管理,但我只需要源代码管理就行。

  放弃,尝试git。

  3

  被vs2013打开过的cocos2dx项目,在2012中打开又报错了。

  看来需要彻底升级了。

  4

  下载解压cocos2dx30beta版本。

  使用create_projectpy创建项目比之前友好了

  因为换成了图形界面

  不过先进命令行的方式还是太麻烦

  我们建个快捷方式:

  建一个bat文件

  输入D:\Java\cocos2d-x-30beta\tools\project-creator\create_projectpy

  5

  cocos2dx30beta建的新项目比之前大了

  因为他直接把编译所需代码拷贝到项目文件夹下

  而且可建立在任意位置

  6

  新项目建立之后vs2013运行ok

  于是拷贝到github的本地代码库下

  上传(几百M,略大,稍等)

  上传ok之后直接打开本地代码库下的sln文件

  此时,vs2013会自动配置好git

  骨头实验了一下提交到本地和提交到服务器功能

  ok

  7

  回家捣鼓笔记本安装vs2013

  (win81已装vs2012)

  老报核心什么什么的错

  搜了网上几乎所有的办法:管理员、换显卡驱动、打补丁(个人不喜欢一切win的补丁)

  还是不成功

  于是系统还原到一个没装vs2012的ghost

  可以安装了(不计较了 vs那么大,有点问题可以理解)

  8

  装完vs2013就开始装python装cygwin

  结果到后来发现好像不需要cygwin了

  cmd进入到projandroid下

  敲入 python build_nativepy 命令cmd开始编译

  省去了之前版本需要用cygwin编译而且需要修改文件权限的步骤

  心惊胆颤的直到发现 so文件ok

  9

  eclipse打开其中的android项目

  导入不报错,运行黑屏。

  果然没那么幸运

  网上一搜说需要:

  把cocos2d-x-30beta/cocos/2d/platform/android/java/src/org/cocos2d-x/lib整个文件夹拷贝到你的项目下projAndroid/src/org/cocos2d-x下

  感觉这个步骤完全可以新建cocos2dx项目时脚本自动加上

  应该是错误漏掉了

  估计下次升级就不需要手动加了

  加上之后再次运行

  终于看到熟悉的土豆了

  10

  下一步就是在建一个cocos2dx的源码管理

  由于之前试验过

  应该没啥问题

  就不加到流水帐了

  11

  回家搞vs2013和github果然有问题。

  主要是新的cocos2dx30beta生成的项目太大了

  空项目编译运行一次竟然高达800多M

  于是学习了下git的配置文件的使用:

  gitignore

  关键是这个文件正常来说windows不让建立

  多敲一个。就行。

第一步在:在ZipFile添加方法,因为_dataThread是个私有的,尽量不改变源码的情况下,添加一个get方法是最好的

这个getAllFile可以返回所有的文件目录

std::vector<std::string>ZipFile::getAllFile(){

std::vector<std::string> vec;

ZipFilePrivate::FileListContainer::iterator it1;

for(it1=_dataThread->fileListbegin();it1!=_dataThread->fileListend();++it1) {

vecpush_back(it1->firstc_str());

}

return vec;

}

第二步:使用getAllFile的返回值做遍历,这里直接帖出iOS和Android的同时遍历吧,同时搜索png和jpg的,可以用于加载资源,记得导入头文件

#include "support/zip_support/ZipUtilsh"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

#include <direnth>

#include <sys/stath>

#else

#include "platform/CCCommonh"

#include "support/zip_support/unziph"

#include "jni/Java_org_cocos2dx_lib_Cocos2dxHelperh"

#endif

void ResourceLoadingLayer::getAllFile(std::string folderPath,int depth, std::vector<std::string> list, std::string head){

#if CC_PLATFORM_IOS == CC_TARGET_PLATFORM

DIR dp;

structdirent entry;

structstat statbuf;

if((dp =opendir(folderPathc_str())) ==NULL) {

fprintf(stderr,"cannot open directory: %s\n", folderPathc_str());

return;

}

chdir(folderPathc_str());

while((entry =readdir(dp)) != NULL) {

lstat(entry->d_name,&statbuf);

if(S_ISDIR(statbufst_mode)) {

if(strcmp("",entry->d_name) == 0 ||

strcmp("",entry->d_name) ==0)

continue;

getAllFile(entry->d_name,depth+4,list,head+entry->d_name);

} else {

if (headlength() ==0) {

string name = entry->d_name;

if (namelength()>3 && namerfind("") > 0 && (namesubstr(namerfind("")+1,3) == "jpg" || namesubstr(namerfind("")+1,3) == "png")) {

list->push_back(entry->d_name);

}

} else {

string filename = head+"/" +entry->d_name;

if (filenamelength()>3 && filenamerfind("") > 0 && (filenamesubstr(filenamerfind("")+1,3) == "jpg" || filenamesubstr(filenamerfind("")+1,3) == "png")) {

list->push_back(filename);

}

}

}

}

chdir("");

closedir(dp);

#else

ZipFile pFile = new ZipFile(getApkPath(),"assets/");

vector<string> vec = pFile->getAllFile();

for (int i=0; i<vecsize(); i++) {

string file = vecat(i);

if (filecompare("assets/")) {

file = filesubstr(7,filelength());

}

if(filesubstr(0,folderPathlength()) == folderPath ){

string filename = filesubstr(filerfind("/")+1,filelength());

if (filenamelength()>3 && filenamerfind("") >0 && (filenamesubstr(filenamerfind("")+1,3) =="jpg" || filenamesubstr(filenamerfind("")+1,3) =="png") {

list->push_back(filename);

}

}

}

#endif

}

第三步,使用:

首先得拿到资源文件夹的完整路径,方法有很多,只举其一:

在HelloWorld的工程下的资源根目录有一张HelloWorldpng,我们可以直接获取它在程序中的完整路径,即

string fullpath = CCFileUtils::sharedFileUtils()->fullPathForFilename("HelloWorldpng");

所以 string resPath = fullpathsubstr(0,fullpathrfind("/")+1);

得到了完整的资源路径后,

vector<string> vec;

getAllFile(resPath, 0, &vec, "");

这样就大功告成了,vec会保存所有的png或jpg的资源,会带head名的哦,比如说bg/welcomejpg

上面是遍历所有的文件夹,如果单独遍历资源文件下的某个目录,即是

getAllFile(resPath+"xxx",0,&vec,""); xxx 为资源根目录下的子目录,这样就可以分别加载某个目录了