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