您的位置:首页 > 移动开发 > Cocos引擎

Mac上配置Android开发环境并把Cocos2d-x项目编译到Android

2015-03-10 14:39 991 查看
原文地址:/article/1931276.html


1、首先下载所需Android工具,包括Eclipse, ADT, SDK,NDK,JDK,ANT,CDT,关于安装与配置等一系列在mac上都很简单这里就不再赘述。

Eclipse + ADT plugin + Android SDK 下载地址:http://developer.android.com/sdk/index.html#ExistingIDE

Android NDK 下载地址:http://developer.android.com/tools/sdk/ndk/index.html

Apache ANT的下载及配置请参阅:/article/1931274.html

CDT 致力于为Eclipse平台提供功能完全的C/C++集成开发环境 下载地址:http://www.eclipse.org/cdt/

检查本地mac是否已有JDK以及ANT

打开终端输入java -version与ant -version命令,如果如图1显示,则证明已有:



2、开始配置相关路径

我的Cocos2d-X,SDK,NDK存放路径如下:

Cocos2d-X的路径: /Users/xiangzi/Documents/cocos2d-x-2.1.4

Android SDK 路径: /Users/xiangzi/Documents/AndroidTools/android-sdk

Android NDK 路径: /Users/xiangzi/Documents/AndroidTools/android-ndk-r8

打开终端输入命令:pico .bash_profile 回车

然后键入位置如下图2:



输入完成后Control + x 保存,接着再输入y回车确认。

检验路径步骤: 关闭你的“终端”,重新打开,如果之前路径配置有问题,那么重新打开的“终端”将出现如下提示:-bash: exoort: command not found 如果没有此类提示,OK说明路径配置完成!

3、下面开始讲解把cpp的Demo项目编译到Android。

打开终端,输入命令如下图3:



注意:工程名中是否含有非法字符,如中文状态字符或以数字打头,这都是不允许的。

然后在你的cocos2d-x目录下会有一个名为AndroidProj文件夹如图4,我们只需要此文件夹下的proj.android文件。



然后新建一个Cocos2dx项目,取名为 CppToAndroid,就不再向项目中添加任何类。把proj.android拷贝到CppToAndroid项目下,与项目中Classes同一目录,如图5



接着用文本打开proj.android/jni下的Android.mk,这里我们只需注意LOCAL_SRC_FILES这个即可,如图6:

添加.cpp和.c 的文件



注意:在添加自定义类时相同的不可有重复,否则会报 multiple definition of 'XXX' 的错误!

如果你的类在Classes目录下又有实际路径,则需要添加实际路径,LOCAL_C_INCLUDES += 依次添加,如下图:



再找到proj.android下的build_native.sh,同样用文本打开,在此我们只需配置COCOS2DX_ROOT= 、APP_ROOT= 、 APP_ANDROID_ROOT=,这三项即可,我的配置如图7:



打开终端,cd到项目中proj.android目录下,再输入 ./build_native.sh 开始编译,当最后出现

SharedLibrary : libgame.so

Install : libgame.so => libs/armeabi/libgame.so

make: Leaving directory `/Users/xiangzi/Desktop/CppToAndroid/CppToAndroid/proj.android'

则表示编译成功,如图8:



Error:

make: *** [obj/local/armeabi/objs/cocos2dx_static/platform/android/CCCommon.o] Error 1

1、我在编译这一步中每次都会报上面.o的错误,网上搜的是ndk版本问题,于是把ndk9换成了ndk-r8d,问题解决。

或者修改/proj.android/jni目录下的 Application.mk 文件,添加一句 APP_CPPFLAGS += -Wno-error=format-security

2、错误:jni/Android.mk:12: *** commands commence before first target. Stop.说明符号 \ 后面有空格

3、错误:error: ISO C++ forbids initialization of member... .h头文件是用于声明而不是定义。

4、错误:error:Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for module game_shared

在Android.mk中添加:LOCAL_CPP_EXTENSION := .cxx .cpp .cc

5、如果在项目中修改了引擎中的某类,如 ZipUtils.cpp 类,此类我们为会plist文件加密用到,因为在编译到Android过程中编译器所录找的是引擎中的类而不是你项目中的,所以要把项目中修改的 ZipUtils.cpp 类,覆盖掉引擎下的 ZipUtils.cpp 类。

打开Eclipse,导入项目下的proj.android,如图9:



导入之后Android项目会报错,问题是Build Path缺少文件的link,我们配置下即可,首先右键项目然后选择Properties,然后选择“Java Build Path”,在 Source 栏目中点击“Link
Source” ,如图10:



Linked folder location:

路径指向:/Users/xiangzi/Documents/cocos2d-x-2.1.4/cocos2dx/platform/android/java/src

Folder name:

如果报错自定义个名子即可,如图11:



再就是,如果你的项目需要联网别忘了在AndroidMainfest.xml中添加上网权限,设置是否横竖屏等。

[cpp] view
plaincopy





<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.cocos2dx.xiangzi"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk android:minSdkVersion="8"/>

<uses-feature android:glEsVersion="0x00020000" />

<uses-permission android:name ="android.permission.INTERNET"/>

<application android:label="@string/app_name"

android:icon="@drawable/icon">

<activity android:name=".AndroidProj"

android:label="@string/app_name"

android:screenOrientation="portrait"

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

android:configChanges="orientation">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

<supports-screens android:largeScreens="true"

android:smallScreens="true"

android:anyDensity="true"

android:normalScreens="true"/>

</manifest>

按以上步骤都操作完后发现项目名称上有红X,错误如下图:



解决上面问题我们只需要删除Java Build path —> Libraries下的Android Dependencies包即可,操作步骤如下:

1. 打开Configure Build path



2.删除Android Dependencies包。



模拟器运行会报错,我们直接真机运行,成功。如图12:



补充:make clean命令,当你想要再从头编译一遍项目时就需要用到此命令,如果没用此命令直接编译,编译器只会重新编译你改动过的项目中的类,而不会修改引擎下的类。下面是使用方法:

首先,打开终端,cd 到你项目的 proj.android 下,我的如路径如下:/Users/xiangzi/Desktop/YN777/YN777/proj.android

然后输入 pico makefile回车,再输入如下图:



注意: clean前没有空格,rm前是一个tab,然后control + x 保存,y确认。。接着输入 make clean 命令,当出现

rm -rf libs/

rm -rf obj/

时表示成功。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐