您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 3.4版本游戏打包AKP (重点记录如何解决打包过程中遇到的各种问题)

2015-08-31 15:23 671 查看
主要记录下打包遇到的各种问题,主要讲解打包中遇到的问题如何解决.如果大家有何我同样的问题,希望能够帮到你.

过程 一 :

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

复制下面,全体换

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := hellocpp/main.cpp
MY_CPP_LIST := $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/**/*.cpp)
MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/**/**/*.cpp)
MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/**/**/**/*.cpp)
MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/**/**/**/**/*.cpp)
LOCAL_SRC_FILES += $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END

LOCAL_STATIC_LIBRARIES := cocos2dx_static

# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END

include $(BUILD_SHARED_LIBRARY)

$(call import-module,.)

# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END

2.Application.mk

同上

APP_STL := gnustl_static

APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char
APP_LDFLAGS := -latomic

ifeq ($(NDK_DEBUG),1)
  APP_CPPFLAGS += -DCOCOS2D_DEBUG=1
  APP_OPTIM := debug
else
  APP_CPPFLAGS += -DNDEBUG
  APP_OPTIM := release
endif

然后刷新下eclipse

基本修改完毕,在报错就是代码里面的了,cocos用的是c++和lua或者js 这些语言在编译成安卓的时候可能会有不识别冲突之类的.比如c++就可以用byte定义整数,但编译安卓APK的时候就一定要用int等问题,自己修改代码,想办法.

然后
b8b2
就可以按住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

注意 [b]./obj/local/armeabi
写你自己的绝对路径(./省略)
[/b]

[b]如C:\Users\Administrator\Desktop\War\proj.android\obj\local\armeabi
 正确写法.然后回车,
[/b]熟悉的代码就会出现了.这就是引起报错的地方.


********** 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闪退崩溃的那句话了(然后怎么处理,根据你自己写的逻辑来,先注释小看下效果,缩小了你的修改范围就好说了).项目小可以,如果项目大,各种办法都试了,实在没办法,就这样试试吧,然后很麻烦,但绝对可行.

程序思想解决问题最重要的是准确的定位问题,缩小范围,二分注释法,一点一点的分析解决问题.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d-x eclipse 打包