1、创建工程
http://www.cocos.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/getting-started/setting-up-development-environments-on-mac-with-xcode/zh.md
访问cocos2dx官网的“文档”-》cocos2d-x->Mac环境搭建-》如何在Mac下搭建Cocos2d-x iPhone开发环境-v3.x中,写了创建跨平台项目的过程
进入到目录cocos2d-x-3.2alpha0/tools/cocos2d-console/bin/cocos.py
python cocos.py new HelloWorldDemo -p com.coco2dx.org -l cpp -d ~/Desktop
参数说明:
-p
后面接包名-l
后面接开发语言类型,有cpp, lua, js三种类型-d
后面接项目存放的目录2、开发项目
可以在项目下的Classes中创建自己的.cpp和.h文件,并使用xcode调试运行
3、拷贝资源
(1)将项目下Resources中的内容全部拷贝到proj.android的assets中
(2)将cocos2d/cocos/platform/android/java/src中的内容拷贝到proj.android/src中
(3)将cocos2d/cocos/platform/android/java/libs/android-async-http-1.4.8.jar拷贝到proj.android/libs下(因为有一个Cocos2dxDownloader.java中使用到了这个包中的内容)
4、修改proj.android/jni下的Android.mk文件
在LOCAL_SRC_FILES后添加自己在Xcode项目中增加的.cpp文件
5、cd到proj.android下运行python build_native.py
但是运行的时候提示我们最好使用
cocos compile -p android
命令
所以我cd到项目的根目录执行此命令
如果没有cocos命令,说明环境变量没有配置成功,此时需要cd到cocos2d-x的根目录,找到
setup.py并执行,会提示你缺少哪些环境变量,并会试图向.bash_profile中进行添加
最终正确的.bash_profile内容为
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
export ANDROID_SDK_ROOT=/Users/luobo/Desktop/android-sdk-macosx
export NDK_ROOT=/Users/luobo/Desktop/android-ndk-r9d
export PATH=$PATH:$JAVA_HOME:$ANDROID_SDK_ROOT:$NDK_ROOT:${ANDROID_SDK_ROOT}/tools:${ANDROID_SDK_ROOT}/platform-tools
# Add environment variable COCOS_CONSOLE_ROOT for cocos2d-x
export COCOS_CONSOLE_ROOT=/Users/luobo/Desktop/cocos2d-x-3/tools/cocos2d-console/bin
export PATH=$COCOS_CONSOLE_ROOT:$PATH
# Add environment variable COCOS_X_ROOT for cocos2d-x
export COCOS_X_ROOT=/Users/luobo/Desktop
export PATH=$COCOS_X_ROOT:$PATH
# Add environment variable COCOS_TEMPLATES_ROOT for cocos2d-x
export COCOS_TEMPLATES_ROOT=/Users/luobo/Desktop/cocos2d-x-3/templates
export PATH=$COCOS_TEMPLATES_ROOT:$PATH
# Add environment variable ANT_ROOT for cocos2d-x
export ANT_ROOT=/Users/luobo/Desktop/apache-ant-1.9.6/bin
export PATH=$ANT_ROOT:$PATH
而我们所需要的cocos就在COCOS_CONSOLE_ROOT下
这时候就可以使用cocos命令来创建android包了
如果没有问题,则会在项目的
bin/debug/android
下产生debug包我们可以后续的生成自己的key,并用key对包进行签名,成为正式包进行发布
6、遇到的坑
(1)在创建android包的过程中,遇到了
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx] com.android.dex.DexException: Multiple dex files define Lcom/chukong/cocosplay/client/CocosPlayClient;
问题
经网上搜寻,解决方法为
把android项目的project.properties文件里面的#android.library.reference.1=../../cocos2d-x/cocos/platform/android/java注释掉即可
因为不注释的话,会把cocos2d-x/cocos/platform/android/java中的lib也拷贝到android项目下,造成了重复编译
(2)修改proj.android中的minSdkVersion,让它和project.properties中的target相符合(这也是打android包的输出日志中会提示的)
(3)项目在Documents下执行cocos compile -p android可以创建出apk,把项目整体移动到Desktop下,执行cocos compile -p android时就出现了
make: *** No rule to make target `/Users/apple/Work/Project/cocos2d-x/cocos2d-x-3.2/projects/GuessMovie/proj.android ../../../extensions/AssetsManager/AssetsManager.cpp', needed by `obj/local/armeabi/objs/cocos_extension_static/AssetsManager/AssetsManager.o'. Stop.
这种错误
查了一下错误原因是我把项目移动过了,修改了项目的路径,导致mk文件依赖关系出现问题。
解决方法:
删除Android工程路径下的libs和obj目录重新编译即可,这里需要注意,如果libs下使用了其他第三方jar包,需要手动再放进去。
实际操作验证:不用删除libs目录,只需要根据log提示删除掉obj目录然后再重新编译,就能产生apk7、这里有碰到的一个很好的帖子
http://www.cocoachina.com/bbs/read.php?tid=199238