配置:
- 相關工具:Cocos2d-x 3.2 + Ant 1.9.4 + Android NDK r9d + Android SDK
- 運行平台:OS X 10.9.4+ Xcode 6
前言:筆者使用 Xcode 開發完成 Cocos2d-x 項目后,想要把項目移植到 Android 平台,打包成 apk 文件。但是筆者並未安裝 Eclipse,因此采用命令行方式進行編譯打包。
一、編譯為 debug 版本
首先介紹如何生成 debug 版本的 apk 文件。
編譯前配置
1、完成代碼文件的編寫,在其他平台上運行成功
給自己:Xcode 開發時相對路徑只需要寫文件名即可,而 Android 開發時要從項目路徑開始寫。因此要把 Resource 文件夾下的所有子文件夾的資源文件都放到
Resource
目錄下。
2、編輯%ProjectFolder%/proj.android/jni/Android.mk
在 LOCAL_SRC_FILES 中加入程序涉及的所有 .cpp 文件(也就是 Classes 文件夾下的所有 .cpp 文件)
例如
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/ShapeModel.cpp \
../../Classes/RoundCircle.cpp \
../../Classes/RectDrawNode.cpp \
../../Classes/PrepareLayer.cpp \
../../Classes/MenuLayer.cpp \
../../Classes/LifeCircle.cpp \
../../Classes/HUDLayer.cpp \
../../Classes/HomeScene.cpp \
../../Classes/GameWorldController.cpp \
../../Classes/GameScene.cpp \
../../Classes/GameEndScene.cpp \
../../Classes/GameData.cpp \
../../Classes/BackGroundLayer.cpp
3、添加 NDK、Android SDK、Ant 的路徑 (僅在第一次使用 cocos 命令時需要此步驟)
$ cd cocos2d-x //進入coco2d-x-3.2源文件的文件夾
$ ./setup.py //打開設置文件//運行后會需要進行三個路徑的設置
$ source FILE_TO_SAVE_SYSTEM_VARIABLE // 把路徑添加到系統變量
FILE_TO_SAVE_SYSTEM_VARIABLE
默認是/Users/apple/.bash_profile
需要設置的路徑均為解壓后的根目錄文件夾路徑。Ant 的路徑可能需要延長到 bin
文件夾。
注意 Android SDK 文件夾無法直接使用,需要通過 SDK Manager 下載所需要的API以及相關文件,SDK Manager 可以通過%SDK_ROOT%\tools\android
打開。
4、更改%ProjectFolder%/proj.android/AndroidManifest.xml
相關配置,例如設置橫屏豎屏
5、運行 Android 模擬器(AVD),模擬器需要開啟 GPU 加速。
編譯並運行
6、轉到項目路徑,進行編譯
$ cd PROJECT_PATH
$ cocos run -p android -j 4
可以添加--ap XX
指定編譯的目標版本(--ap 16
編譯為 SDK 版本號16的應用,需要用 Android SDK 安裝 API 16 的相關文件)
注意添加的條件 ap 前面有兩條 短橫杠,不是一條,筆者第二次使用的時候由於只加了一條,導致總是報錯Android platform not specified, searching a default one...
7、編譯成功后,使用adb logcat
查看 log 信息
8、生成的 apk 文件可以在%ProjectFolder%/proj.android/bin
路徑下找到。
二、編譯為 release 版本
上述過程得到的 apk 文件是 debug 版本,如果要編譯 release 版本,還需要有一個簽名文件,步驟如下:
生成簽名文件
1、生成 .keystore 文件
在終端輸入如下命令:
$ keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000 -keystore /Users/apple/android.keystore
-genkey 產生證書文件
-keystore 指定生成密鑰庫的.keystore文件位置和名稱
-keyalg 指定密鑰的算法
-alias 產生別名
-validity 有限時間
編譯運行
編譯過程基本與 debug 版本的編譯方式相同,只需要在編譯命令上多加一個可選屬性。執行過程中會要求提供 keystore 文件的信息,填上去就 OK 了。
2、編譯 cocos2d-x 項目時加上 -m release
命令
3、輸入 keystore 文件地址,填入密碼、別名、密碼(兩個密碼都是自己在創建 keystore 時的密碼,可以設置為一致)。
4、完成,生成的 apk 文件同樣可以在%ProjectFolder%/proj.android/bin
路徑下找到。
可能遇到的問題:提示找不到 Android sdk 下 tools 中的 zipalign 可執行文件,從網上下載一個即可,這是一個打包優化程序。
三、參考鏈接
- 官方: Cocos2d-x README(介紹了 cocos 命令的使用)
- Cocos2d-x游戲打包成Android應用程序(介紹了用eclipse打包的過程)
- 搭建 cocos2d-x Android 常見問題
(解決一個編譯時的錯誤,Can't find right android-platform for project :"%ProjectFolder%\proj.android".The android-platform should be equal/larger than 20
) - android的logcat詳細用法
- How to Build an Android Project with Eclipse
- cocos2d-x3.0rc打包apk遇到的一些問題記錄
(解決一個關於命令行方式創建keystore簽名的問題) - Android 打包簽名 從生成keystore到完成簽名
- 官方:Cocos2d Console使用手冊(關於 cocos-console 的使用)
- 官方:Cocos2d-console (完整 cocos-console 使用手冊,英文版)
總結:
在經過一次發布后,再次使用只需要:
1、在 jni\Android.mk
文件中添加需要編譯的 cpp 文件
2、終端輸入如下命令
$ cd PROJECT_PATH
$ cocos run -p android -j 4 --ap 20 -m release