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, 可以成功调用
打开命令行, 在命令行输入:
输入
但是这些输出的问题不容易看懂,都是内存地址之类的,如何报错到我们熟悉的文件里.
打开控制台 找到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]熟悉的代码就会出现了.这就是引起报错的地方.
熟悉的代码出现啦~~
********************************************************************************************************
如果报错提示不会看,看不懂,那教大家一个最最原始最最有效,绝对好使的办法,
保证让你的apk跑起来.
二分注释法.找到你怀疑的地方,注释代码.不断地注释,一直注到APK 能跑起来,(最好先打个空项目包,试下,看看能成功不).然后一点一点打开,跟你你自己的代码逻辑一点一点找,这样就能找到引起APK闪退崩溃的那句话了(然后怎么处理,根据你自己写的逻辑来,先注释小看下效果,缩小了你的修改范围就好说了).项目小可以,如果项目大,各种办法都试了,实在没办法,就这样试试吧,然后很麻烦,但绝对可行.
程序思想解决问题最重要的是准确的定位问题,缩小范围,二分注释法,一点一点的分析解决问题.
过程 一 :
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调试.
(连接手机调试中)↓
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闪退崩溃的那句话了(然后怎么处理,根据你自己写的逻辑来,先注释小看下效果,缩小了你的修改范围就好说了).项目小可以,如果项目大,各种办法都试了,实在没办法,就这样试试吧,然后很麻烦,但绝对可行.
程序思想解决问题最重要的是准确的定位问题,缩小范围,二分注释法,一点一点的分析解决问题.
相关文章推荐
- MyEclipse Web Project转Eclipse Dynamic Web Project
- Windows Clang开发环境备忘
- Android Studio使用教程(六):Gradle多渠道打包
- Cocos2d-x中背景音乐和音效使用实例
- Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验
- Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例
- Cocos2d-x UI开发之文本类使用实例
- Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法
- Cocos2d-x UI开发之菜单类使用实例
- Cocos2d-x UI开发之CCControlButton控件类实例
- Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系
- 让Flex Builder 3.0与Eclipse3.4整合起来
- Eclipse配置Javascript开发环境图文教程
- 使用zend studio for eclipse不能激活代码提示功能的解决办法
- 图解Eclipse j2ee开发环境的搭建过程
- Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
- Cocos2d-x学习笔记之CCLayerColor层的使用实例
- ext for eclipse插件安装方法
- 解决Fedora14下eclipse进行android开发,ibus提示没有输入窗口的方法详解
- eclipse导入jquery包后报错的解决方法