A. cocos2dx android 代码混淆
1. 下载cocos2dx 2.2.1
去cocos2dx官网下载就好,最好是2.2.1版本。3.0版本变化比较大,也没测试过。
3. 创建工程
使用cocos2dx目录下的tools/project-creator/create_project.py创建一个工程。
4. 编译android版本
网上很多文章说,编译cocos2dx的Android版本时需要安装cygwin之类的,其实这对于目前的ndk版本来说是不必要的,因为高版本的ndk都集成了cygwin的一些功能。我这里使用的是ndk
r9d。下面来说一下操作步骤。
我编译的习惯是直接在jni目录下预先ndk-build命令,因为在Windows下使用.sh结尾的文件太怪异了。首先来看一下build_native.sh干的工作:
这是build_native.sh中实际工作的部分。可以看到它使用NDK_ROOT下的ndk-build来编译,还导入了NDK_MODULE_PATH,
这个NDK_MODULE_PATH是为Android.mk中的import-mole提供路径选择。
现在来导入NDK_MODEL_APTH, 在Android.mk的import-mole之前加上cocos2dx中的几个路径:
$(call import-add-path, G:/cocos2dx)
$(call import-add-path,
G:/cocos2dx/cocos2dx/platform/third_party/android/prebuilt)
运行ndk-build, 编译。
编译时可能出现这样的错误:error: GLES2/gl2.h: No such file or
directory,这是因为低版本的Android版本不支持opengl es2.0,在Application.mk中加上:
APP_PLATFORM := android-17
5. 生成apk包
在eclipse下打开创建的工程,导入相关的包后,在AndroidMenifest.xml中加入:
android:debuggable="true"
表明这是一个可以调试的包。运行,结果出现:
这是因为该工程默认使用build_native.sh编译:
因为build_native.sh现在已经没用了,所以把它改成:
这个意思是,直接使用NDK_ROOT环境变量下的ndk-build.cmd来编译工程,编译成debug版本,编译成armeabi和armeabi-v7a两种指令格式的库,执行这个命令的目录是工程目录下的jni文件夹。debug版本和armeabi-v7b主要是为了后面使用visualGDB调试做准备。
再编译,就可以生成apk包了。
VisualGDB调试
1. 下载并安装VisualGDB, 安装完成后,在Visual Studio的目录中可以看到Android选项:
2. 配置VisualGDB, 在Android -> Setup SDK/NDK location
主要配置JDK,SDK,NDK,ANT路径
3. 设置要调试的apk包。Android -> Debug a Custom APK file
4 设置完成后,在代码中设置断点,点击Debug, 开始调试
5. 等apk安装完成后,程序会运行到断点出,就可以开始用Visual Studio调试了
B. android sdk怎么打包cocos
1、使用IDE导出时(右键选Cocos Tools---Public Package) 总是提示错误,无法找到android-19的sdk,而这个东西又确实是存在的。
2、改用cocos2d-console(引擎目录的tools文件夹下)的命令行来导出,这个倒是可以的,不过需要配置一大堆东西。
运行引擎目录下的setup.py可以自动添加一些环境变量,但是有些是没有的,遇到错误可以自行对比检查一下。
需要加到环境变量 Path中的是:
(Android SDK目录)
E:\MyProj\adt-bundle-windows-x86\sdk\platform-tools;
E:\MyProj\adt-bundle-windows-x86\sdk\tools;
(Python目录)
C:\Python27;
(ANT目录,用于自动打包)
E:\MyProj\apache-ant-1.9.4\bin;
(NDK目录)
E:\MyProj\android-ndk-r9d;
(Java运行环境目录)
C:\Program Files (x86)\Java\jre8\bin
(cocos这个命令所在的目录,运行setup.py可以自动添加)
E:\MyProj\cocos2d-x-3.3beta0\tools\cocos2d-console\bin