主要记录下打包遇到的各种问题,主要讲解打包中遇到的问题如何解决.如果大家有何我同样的问题,希望能够帮到你.
过程 一 :
1. 配置环境变量
2.下载 ADT包含(eclipse和SDK) NDK ANT
3.配置环境变量可以按照 http://www.cnblogs.com/skysand/p/4063584.html 这里一步一步的学习,或者网上搜索,非常详细.
4.检查环境是否搭建成功
打开控制台,找到cocos源文件中的setup.py 鼠标点击拖入,按回车,看下是否配置成功,如果如图2,则已完成.
图2
如果是is no found 那就找到路径,然后将路径加入到控制台.
不要忘记添加到用户变量和系统变量中
过程二,
1.将打包项目里的proj.android,导入.到eclipse(adt里面有这个工具)中.
(1)
(2)
2.然后将项目源文件里 java 拷贝到
安卓项目下
然后打开eclipse 按 Alt+Enter
Reference里面以前的Remove掉,点击Add添加从cocos2d文件里导入到android里面的java(libcocos2dx)
然后刷新eclipse (按F5)
然后更改两个文件
1.android.mk
复制下面,全体换
2.Application.mk
同上
基本修改完毕,在报错就是代码里面的了,cocos用的是c++和lua或者js 这些语言在编译成安卓的时候可能会有不识别冲突之类的.比如c++就可以用byte定义整数,但编译安卓APK的时候就一定要用int等问题,自己修改代码,想办法.
然后就可以按住eclipse目录中的项目按右键 找到 Run As 选 1 android application
等待编译吧.一会apk就会出现在 bin目录下
链接手机,打开usb调试,然后在手机上运行调试吧.(打包结束)
如何解决 APK打包过程中遇到的问题,(APK生成,但无法打开,或者闪退,或者生成失败)
如果打包过程中eclipse下报错,console报错,说明代码有问题,或者以上步骤那里不对,或者导入时候有问题,或者资源找不到了等等.如何定位问题到底出在那里了,找到问题出现的地方,下面教大家一个方法.ndk调试.
(连接手机调试中)↓
假设你已经安装了 Android Develop Tools, 可以成功调用adb
. 并打开android开发用机的调试模式, 连接到电脑.
打开命令行, 在命令行输入: adb logcat
. 就可以看到满屏幕的日志啦.
输入adb logcat --help
可以看到 logcat
的用法提示.
但是这些输出的问题不容易看懂,都是内存地址之类的,如何报错到我们熟悉的文件里.
打开控制台 找到NDK ,比如NDK 在E盘按照上面输入 然后回车会出现
然后直接输入
adb logcat | ndk-stack -sym ./obj/local/armeabi
注意 ./obj/local/armeabi 写你自己的绝对路径(./省略)
如C:\Users\Administrator\Desktop\War\proj.android\obj\local\armeabi 正确写法.然后回车,熟悉的代码就会出现了.这就是引起报错的地方.
********** Crash dump: **********
Build fingerprint: 'htc_wwe/htc_bravo/bravo:2.3.3/
GRI40/96875.1:user/release-keys'
pid: 1723, tid: 1743 >>> com.packtpub.droidblaster <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr0000000c
Stack frame #00 pc 00010a2c /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine update in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/TimeService.cpp:25
Stack frame #01 pc 00009fcc /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine onStep in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/DroidBlaster.cpp:53
Stack frame #02 pc 0000a348 /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine run in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/EventLoop.cpp:49
Stack frame #03 pc 0000f994 /data/data/com.packtpub.droidblaster/lib/libdroidblaster.so: Routine android_main in /home/packt/Project/Chapter11/DroidBlaster_Part11/jni/Main.cpp:31
...
熟悉的代码出现啦~~
********************************************************************************************************
如果报错提示不会看,看不懂,那教大家一个最最原始最最有效,绝对好使的办法,
保证让你的apk跑起来.
二分注释法.找到你怀疑的地方,注释代码.不断地注释,一直注到APK 能跑起来,(最好先打个空项目包,试下,看看能成功不).然后一点一点打开,跟你你自己的代码逻辑一点一点找,这样就能找到引起APK闪退崩溃的那句话了(然后怎么处理,根据你自己写的逻辑来,先注释小看下效果,缩小了你的修改范围就好说了).项目小可以,如果项目大,各种办法都试了,实在没办法,就这样试试吧,然后很麻烦,但绝对可行.
程序思想解决问题最重要的是准确的定位问题,缩小范围,二分注释法,一点一点的分析解决问题.