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

主要记录下打包遇到的各种问题,主要讲解打包中遇到的问题如何解决.如果大家有何我同样的问题,希望能够帮到你.

过程 一 :

1. 配置环境变量

2.下载 ADT包含(eclipse和SDK)   NDK  ANT

3.配置环境变量可以按照 http://www.cnblogs.com/skysand/p/4063584.html 这里一步一步的学习,或者网上搜索,非常详细.

4.检查环境是否搭建成功

打开控制台,找到cocos源文件中的setup.py 鼠标点击拖入,按回车,看下是否配置成功,如果如图2,则已完成.

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

图2

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

如果是is no found 那就找到路径,然后将路径加入到控制台.

不要忘记添加到用户变量和系统变量中

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

过程二,

1.将打包项目里的proj.android,导入.到eclipse(adt里面有这个工具)中.

(1)

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

(2)

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

2.然后将项目源文件里 java 拷贝到

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

安卓项目下

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

然后打开eclipse 按 Alt+Enter 

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

Reference里面以前的Remove掉,点击Add添加从cocos2d文件里导入到android里面的java(libcocos2dx)

然后刷新eclipse (按F5)

然后更改两个文件

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

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等问题,自己修改代码,想办法.


然后就可以按住eclipse目录中的项目按右键 找到 Run As  选 1 android application 

等待编译吧.一会apk就会出现在 bin目录下

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

链接手机,打开usb调试,然后在手机上运行调试吧.(打包结束)


如何解决 APK打包过程中遇到的问题,(APK生成,但无法打开,或者闪退,或者生成失败)

如果打包过程中eclipse下报错,console报错,说明代码有问题,或者以上步骤那里不对,或者导入时候有问题,或者资源找不到了等等.如何定位问题到底出在那里了,找到问题出现的地方,下面教大家一个方法.ndk调试.


(连接手机调试中)↓

假设你已经安装了 Android Develop Tools, 可以成功调用adb. 并打开android开发用机的调试模式, 连接到电脑.

打开命令行, 在命令行输入: adb logcat. 就可以看到满屏幕的日志啦. 
输入adb logcat --help可以看到 logcat的用法提示.


但是这些输出的问题不容易看懂,都是内存地址之类的,如何报错到我们熟悉的文件里.

打开控制台 找到NDK ,比如NDK 在E盘

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

按照上面输入 然后回车会出现

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

然后直接输入

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

程序思想解决问题最重要的是准确的定位问题,缩小范围,二分注释法,一点一点的分析解决问题.

你可能感兴趣的:(cocos2d打包apk)