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

感谢点评与关注,欢迎转载与分享。
勤奋努力,持之以恒!

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的下载及配置请参阅:http://blog.csdn.net/song_hui_xiang/article/details/14315529
CDT 致力于为Eclipse平台提供功能完全的C/C++集成开发环境 下载地址:http://www.eclipse.org/cdt/

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

打开终端输入java -versionant -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中添加上网权限,设置是否横竖屏等。

<?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/

时表示成功。。










展开阅读全文

没有更多推荐了,返回首页