如何在macox下面配置集成ios和android游戏教程

2024-06-12 19:32

本文主要是介绍如何在macox下面配置集成ios和android游戏教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:http://www.cnblogs.com/zilongshanren/archive/2012/02/23/2364163.html



Learning,Sharing,Improving!

如何在macox下面配置集成ios和android游戏教程

教程截图:

 

 

1.准备工作,配置开发环境:

开发环境:mac ox 10.7.3  +   xcode4.2  + ndk r7 + eclipse helios

部署环境:中兴v880  root过了 刷2.3.5的rom, 模拟器是api 7 ,android 2.1

 

a、首先安装好xcode和eclipse,关于这两个工具的 安装就不多说了。xcode直接一个安装包next进行到底,而eclipse也有macos版的,不需要安装,绿色版。

b、然后,安装好cocos2d-x。我安装的版本是最新版cocos2d-1.0.1-x-0.11.0 release。(推荐使用git把源代码仓库clone下来,这样每次有更新的时候,只需要pull,然后花费少量的时间就可以获得最新版本了。关于git怎么使用,大家可以上网查,这个工具变得越来越流行了,现在说自己不会git都不好意思说自己是程序员了,呵呵,这话不是我说滴,别人说滴,但是确实有一定的道理在里面。大家不喜勿喷哈。)

下载完毕后,解压,打开终端(terminal),cd到刚刚解压的目录下面去,然后运行

./install-templates-xcode.sh -u -f

接下来,你会得到如下的输出:

cocos2d-x template installer
select the template version to install
3 for xcode3
4 for xcode4
input nothing for all

这里让你选择安装的模板类型,由于我使用的是xcode4,所以我输入4,如果你们喜欢3的话,这里就输入3,或者直接回车的话,就可以同时安装3和4.

选择4,回车,如下图所示:

复制代码
Installing Xcode 4 Box2d iOS template
----------------------------------------------------...copying Box2D files
done!Installing Xcode 4 lua iOS template
----------------------------------------------------...copying lua files
done!
done!
复制代码

当出现这样的提示的时候,就表示成功安装了。


c、接下来,配置android开发环境并安装NDK,同时设置一些环境变量。

这个过程,supersuraccoon已经在他的博客里面写好了,我这里拿来主义,不要见怪哈:)

复制代码
4.1 确认已经安装JDK
可以使用命令 “java -version”
4.2 确认已经安装Ant (最好使用1.8.0或更新的版本)
可以使用命令 “ant -version”
4.3 安装Eclipse
我使用的是helios版本 (eclipse-jee-helios-SR1-macosx-cocoa), 其中包含了一些需要的插件(刚开始使用的是eclipse-SDK-3.7-macosx-cocoa,但是因为之后装ADT插件的时候报了一些错,于是就换掉了)
4.4 安装ADT插件
安装步骤:
http://developer.android.com/sdk/eclipse-adt.html
4.5 安装 Android SDK
如果有网络连接的话可以参考 安装步骤:
http://developer.android.com/sdk/installing.html

但是如果你和我一样没有网络连接的话过程就麻烦了:
4.5.1 下载所有需要的包
可以参考这个:
http://qdevarena.blogspot.com/2010/05/download-android-sdk-standalone-for.html
或者
http://azerdark.wordpress.com/2011/04/21/android-sdk-offline-installation/
4.5.2 把包解压到对应的位置4.5.3 创建&&运行模拟器
复制代码


然后,下载ndk r7,把它解压到一个比较容易找到的目录。我的是/Volumn/Mydata/android-ndk-r7b,然后sdk的安装目录是/Volumn/Mydata/android-sdk.我是联网安装的sdk,当时只选择了api7和api15,也就是android2.1和android3.0.


接下来是配置环境变量,打开terminal,然后输入下列语句:

vim ~/.bash_profile

然后按shift+g就会跳到文件最后,然后依次输入a,回车,把下面的语句复制到.bash_profile里面即可,路径根据自己安装sdk和ndk的路径作相应的修改即可:

export ANDROID_NDK_ROOT=/Volumes/Mydata/android-ndk-r7b
export COCOS2DX_ROOT=/Volumes/Mydata/guanghui/cocos2d-x
export NDK_ROOT=/Volumes/Mydata/android-ndk-r7b                             
export ANDROID_SDK_ROOT=/Volumes/Mydata/android-sdk
export PATH=$PATH:$ANDROID_NDK_ROOT

然后按esc ,再:wq(回车)保存好之后,就可以了。如果大家不喜欢vim,可以用其它编辑器,不过,由于./bash_profile是隐藏文件,所以你还要百度一下如何显示隐藏文件,呵呵。接下来,正式开始我们的跨平台游戏之旅啦。


2.创建一个iphone项目

这个非常简单,打开xcode,File->New->New project,然后选择cocos2d-x template,如下图所示:

然后把下载a Player image, a Projectile image, and a Target image.这三张图片,然后把它们放到工程的Resource目录下面去,并添加引用。

然后把HelloWorldScene.cpp的init方法替换成下面的代码:

复制代码
// on "init" you need to initialize your instance
bool HelloWorld::init()
{//
    // 1. super init first
    if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255))){return false;}//add a ninjia sprite to the left screen center
    CCSprite *ninjiaSprite = CCSprite::spriteWithFile("Player.png");CCDirector *director = CCDirector::sharedDirector();CCSize screenSize = director->getWinSize();ninjiaSprite->setPosition(ccp(ninjiaSprite->getContentSize().width / 2.0f,screenSize.height / 2.0f));this->addChild(ninjiaSprite);CCSprite *targetSprite = CCSprite::spriteWithFile("Target.png");targetSprite->setPosition(ccp(screenSize.width / 2.0f, screenSize.height / 2.0f));this->addChild(targetSprite);return true;
}
复制代码

编译并运行,你会看到如下图所示的输出:


好了,iphone项目创建好了,很简单吧,呵呵。接下来,让我们来创建android项目。


3.创建一个android项目

首先,打开终端,并输入:

cd $COCOS2DX_ROOT(回车)
./create-android-project.sh(回车)

然后,这时候,它会出现如下提示:

use global definition of NDK_ROOT: /Volumes/Mydata/android-ndk-r7b
use global definition of ANDROID_SDK_ROOT: /Volumes/Mydata/android-sdk
Input package path. For example: org.cocos2dx.example

前面两句提示脚本正式使用我们之前定义的环境变量,分别是我的android的sdk和ndk的安装路径。如果之前没有定义这两个变量,就会报错。

然后它要求我们输入java包的路径,还给出了sample,这里我输入com.andyque.simplegame,然后回车。

接下来,它就会出现:

复制代码
Now cocos2d-x supports Android 2.1-update1, 2.2, 2.3 & 3.0
Other versions have not tested.
Available Android targets:
----------
id: 1 or "android-7"Name: Android 2.1Type: PlatformAPI level: 7Revision: 3Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854ABIs : armeabi
----------
id: 2 or "android-15"Name: Android 4.0.3Type: PlatformAPI level: 15Revision: 2Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800ABIs : no ABIs.
input target id:
复制代码

这里指的是脚本检测到我当前系统安装的api,之前我说过了,我只安装了api7和api15.注意,上面还有一行:

Now cocos2d-x supports Android 2.1-update1, 2.2, 2.3 & 3.0
Other versions have not tested.

如果读者使用其它android版本,有可能会有问题哦,因为没有被测试过,大家可以帮忙测试一下,说不定还会被采纳,哈哈。

这里我选择1,因为我的手机安装的系统是2.3.5,等下我还要在我手机上跑呢。

接下来会提示你:

input target id:
1
input your project name:

我输入SimpleGame,然后回车:

复制代码
Created project directory: /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame
Created directory /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/src/com/andyque/simplegame
Added file /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/src/com/andyque/simplegame/SimpleGame.java
Created directory /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/res
Created directory /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/bin
Created directory /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/libs
Created directory /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/res/values
Added file /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/res/values/strings.xml
Created directory /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/res/layout
Added file /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/res/layout/main.xml
Added file /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/AndroidManifest.xml
Added file /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/build.xml
Added file /Volumes/Mydata/guanghui/cocos2d-x/SimpleGame/proguard.cfg
cp: /Volumes/Mydata/guanghui/cocos2d-x/HelloWorld/Resource/*: No such file or directory
复制代码

这时cocos2d-x的android项目就建立好了。为了确保你的这个工程没有问题,你可以运行$COCOS2DX_ROOT/SimpleGame/android/build_native.sh这个脚本。

方法很简单,打开终端,输入

cd $COCOS2DX_ROOT/SimpleGame/android/

然后是:

./build_native.sh

tips:linux下面的命令和文件可以用tab键补全,windows下面也一样,不过有些童鞋有可能不知道,特此提醒一下。这样就不用一个字母一个字母去打了,麻烦不说,还容易出错。


默认情况下,所有的android项目都会建立在cocos2d-x的安装目录下面,同时里面的mk文件都是引用cocos2d-x下面的库和文件的。

但是,我们需要创建一个独立的,能够同时支持ios和android的项目,所以,接下来,我将教大家如果把刚刚创建的android项目集成到iphone项目里面去。


4.把android项目合并到iphone项目里面去

这一步比较繁琐,也比较容易出错,大家要看仔细了。

先看看,配置好后,xcode里面的工程文件Group布局吧:

这里面新添加了一个android文件夹,但是,xcode里面只看到一些sh和mk文件,但是,实际上,这些都只是引用,具体还要拷贝其它文件到项目里面来。

(说明:操作步骤就是,先把整个android文件夹拷贝到ios的同级目录,然后只添加上图中的引用。其实也可以不copy过来,直接添加引用,但是,那样就有问题。就是哪一天,你的文件移动了,会造成该项目的引用找不到。所以,为了方便管理,还是把android目录拷贝到项目中来。)

具体请往下看:


首先,选择一个你最喜欢的文本编辑器,然后cd到刚刚这个SimpleGame的android目录下面,然后打开terminal,输入:

复制代码
vim makefile//然后会创建一个新的窗口,接着输入i进入编辑模式,然后键入下面3条语句
clean:rm -rf libs/rm -rf obj/
复制代码

请特别注意,这里的clean:是顶格输入的,而两条rm语句是使用tab键缩进的。如果不缩进,则输入make clean的时候会报错。

输入完后,esc(回到命令模式) :wq 回车,保存并退出。ok,搞定,然后输入make clean,如果出现下面的输出,则表示ok了:

rm -rf libs/
rm -rf obj/

接下来,把一些android相关的文件拷贝到之前建好的ios项目下面去。(注意$符号+环境变量名,是你之前定义的目录的别名,即$COCOS2DX_ROOT表示你的cocos2dx的解压缩目录

第一步,把android这个文件夹从$COCOS2DX_ROOT/SimpleGame/android/拷贝到iphone的工程目录下面去,和ios这个文件夹在同一目录。(最终的目录是SimpleGame/SimpleGame/android/)

第二步,把Android.mk这个文件从$COCOS2DX_ROOT/SimpleGame/Classes/拷贝到SimpleGame/SimpleGame/Classes/下面

第三步,把Android.mk从$COCOS2DX_ROOT/cocos2dx/拷贝到SimpleGame/SimpleGame/libs/cocos2dx/下面

第四步,把android文件夹从$COCOS2DX_ROOT/CocosDenshion拷贝到SimpleGame/SimpleGame/libs/CocosDenshion/下面去。

最后一步,把platform这个文件夹从$COCOS2DX_ROOT/cocos2dx/platform拷贝到SimpleGame/SimpleGame/libs/cocos2dx/下面去。

当然,这个platform有点大,大约有114M,其中除了android,third_party和ios这三个文件夹不能删除之外,其它文件夹全部可以删除,特别注意!!!!

不要删除那些文件,一个文件也不能删除!!!!

接下来,我们配置一下build_native.sh脚本,把它替换成如下所示:

复制代码
# set params
NDK_ROOT=/Volumes/Mydata/android-ndk-r7b/
COCOS2DX_ROOT=../libs/cocos2dx
GAME_ROOT=../
GAME_ANDROID_ROOT=$GAME_ROOT/android
RESOURCE_ROOT=$GAME_ROOT/Resources# make sure assets is exist
if [ -d $GAME_ANDROID_ROOT/assets ]; thenrm -rf $GAME_ANDROID_ROOT/assets
fimkdir $GAME_ANDROID_ROOT/assets# copy resources
for file in $RESOURCE_ROOT/*
doif [ -d $file ]; thencp -rf $file $GAME_ANDROID_ROOT/assetsfiif [ -f $file ]; thencp $file $GAME_ANDROID_ROOT/assetsfi
done# build
$NDK_ROOT/ndk-build -C $GAME_ANDROID_ROOT $*
复制代码

注意,这里的NDK_ROOT要改成你自己的路径。


然后修改android/jni/Android.mk,修改成下面的样子:


同时把Application.mk修改成下面的样子:

APP_STL := gnustl_static
APP_CPPFLAGS += -frtti
APP_MODULES := cocos2dx_static cocosdenshion_shared game_logic_static game_static

然后,把android/jni/helloworld/Android.mk修改成下面的样子:


然后把Classes/Android.mk修改成下面的样子:(以后游戏越做越大,则可以在LOCAL_SRC_FILES里面再添加源文件即可,当然,如果要使用box2d或者其它第三方库,

那么请期待下一篇教程:))

复制代码
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game_logic_staticLOCAL_SRC_FILES := AppDelegate.cpp \HelloWorldScene.cppLOCAL_C_INCLUDES := $(LOCAL_PATH)/../libs/cocos2dx \$(LOCAL_PATH)/../libs/cocos2dx/platform \$(LOCAL_PATH)/../libs/cocos2dx/include \$(LOCAL_PATH)/../libs/CocosDenshion/include \LOCAL_STATIC_LIBRARIES := png_static_prebuilt
LOCAL_STATIC_LIBRARIES += xml2_static_prebuilt
LOCAL_STATIC_LIBRARIES += jpeg_static_prebuilt
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_staticLOCAL_SHARED_LIBRARIES := cocosdenshion_sharedinclude $(BUILD_STATIC_LIBRARY)$(call import-module,cocos2dx/platform/third_party/android/modules/libpng)
$(call import-module,cocos2dx/platform/third_party/android/modules/libxml2)
$(call import-module,cocos2dx/platform/third_party/android/modules/libjpeg)
复制代码


然后打开终端,依次输入:

make clean
./build_native.sh

如果一切顺利,你将得到如下输出:

复制代码
。。。(上面还有一大堆编译信息,注意不要有错误哦,有错误请贴出来)
Install        : libcocosdenshion.so => libs/armeabi/libcocosdenshion.so
Compile++ thumb  : game_logic_static <= HelloWorldScene.cpp
StaticLibrary  : libgame_logic_static.a
SharedLibrary  : libgame.so
Install        : libgame.so => libs/armeabi/libgame.so
复制代码


最后,打开eclipse,然后选择File->New->Project...,接着会出现如下对话框:

选择Android Project,Next

然后,选择从现有工程导入:(纠正一下,应该是选择Create project from exisiting source,然后Browse,定位到刚刚的android目录下面去。我有点懒,就不重新截图了)

然后,Next,选择android2.1:然后选择Finish。

最后,右键点工程,Run As Android Application。

过一会,模拟器就起来,时间有点长,不过一旦起来以后,之后编译安装程序还是比较快的。但是,感觉还是不如ios模拟器爽啊。

成功之后,就可以看到一个忍者还有一个妖怪啦。

不过,我不走运,黑屏,呵呵,不过没有关系,我们android/bin目录下面的SimpleGame.apk复制到我的sd卡里面,然后安装,运行结果正确。

下面是小v的截图:



 后记:由于我刚开始学习android,所以配置用ndk编译cocos2dx的时候遇到了不少的问题。之后通过网络查找,基本上问题都得到了解决。特在此把解决方案跟大家分享一下,避免大家犯和我一样的错误。下面是一些我遇到的错误及解决方案。如果大家配置有什么问题,也请留言,或者我有遗漏什么地方,也请留言让我知道。我再补充完善。

 

trouble shooting:

1.如果把cocodension也配置也静态库,则会出现如下错误:

复制代码
./obj/local/armeabi/libcocosdenshion.a(SimpleAudioEngineJni.o): In function `JNI_OnLoad':
/Volumes/Mydata/MyToolBox/Cocos2dxLib/SimpleGame/SimpleGame/android/jni/http://www.cnblogs.com/libs/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp:21: multiple definition of `JNI_OnLoad'
./obj/local/armeabi/objs-debug/game_static/main.o:/Volumes/Mydata/MyToolBox/Cocos2dxLib/SimpleGame/SimpleGame/android/jni/helloworld/main.cpp:16: first defined here
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libgame.so] Error 1
复制代码


2.有时候模拟器上显示黑屏,但是程序没有出错误提示,这时候不妨把程序安装到真机上面试试

 

要论坛交流,请点击传送门! 

 

参考文章:

http://gameit.ro/2012/01/creating-an-iphone-and-android-cocos2d-x-hybrid-project-updated/

http://www.supersuraccoon-cocos2d.com/2011/08/10/cocos2d-x-iphone-androidide-installation-and-setup-under-mac-os/



这篇关于如何在macox下面配置集成ios和android游戏教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055129

相关文章

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

python库fire使用教程

《python库fire使用教程》本文主要介绍了python库fire使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1.简介2. fire安装3. fire使用示例1.简介目前python命令行解析库用过的有:ar

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对