检查本地mac是否已有JDK以及ANT
打开终端输入java -version与ant -version命令,如果如图1显示,则证明已有:
我的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:
注意:工程名中是否含有非法字符,如中文状态字符或以数字打头,这都是不允许的。
然后在你的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/
时表示成功。。