cocos2dx 3.10创建android包中的坑

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

参数说明:

  • HelloWorldDemo为项目名称
  • -p后面接包名
  • -l后面接开发语言类型,有cpp, lua, js三种类型
  • -d后面接项目存放的目录
项目创建完成后,用Xcode打开 HelloWorldDemo/proj.ios_mac 里的Xcode项目文件,运行项目

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目录然后再重新编译,就能产生apk


7、这里有碰到的一个很好的帖子

http://www.cocoachina.com/bbs/read.php?tid=199238


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值