說明:下文是平時經驗總結得來,有部分截圖和文字是我懶得打字,直接從其它地方copy的,但意思是一樣的,現在分享出來。如果需要帶圖文完整版的話請到下面連接閱讀詳細的。
鏈接地址是我個人的有道筆記分享,有不當的地方歡迎評論指出!
http://note.youdao.com/noteshare?id=1f973c3ce50c6973791a7b5746163b73
《配置環境》
1:打開cocosCreator設置》原生開發環境, 配置成如下圖即可。
文檔中有所需要文件的下載地址。

注:對應工具建議使用官方推薦版本,如NDK和ANT版本,近期NDK有更新版本,如果升級的話可能會有編譯上的問題。
另外window和mac環境配置不同,官方文檔上面有說明。
《從構建到編譯再打包》
1:先看圖


2:初始場景選對,參與構建的場景選項,如果項目中沒有使用到的場景可以不打鈎,這樣可以減少包的體積大小
3:合並圖集中的 SpriteFrame啟用后能夠減少熱更新時需要下載的 SpriteFrame 文件數量,但如果圖集中的 SpriteFrame 數量很多,原生平台上游戲的啟動時間可能會延長,個人建議打鈎,原因是熱更新默認如果下載文件數多的話容易導致熱更新失敗。
4:編譯模板默認選擇default,這里如果后期的原生發包是采用框架式的發包就可以使用 binary 和link。區別:
第一 >>> binary是使用預編譯好的 cocos2d-x 庫構建項目。
第二 >>> link 模板不會拷貝 cocos2d-x 源碼到構建目錄下,而是使用共享的 cocos2d-x 源碼。這樣可以有效減少構建目錄占用空間,以及對 cocos2d-x 源碼的修改可以得到共享
5: APP ABI
建議勾選如上圖的三種,這里是平台的支持庫,x86等,默認是

這里需要注意的是,項目構建編譯勾選了三個的話,后期接入其它SDK,相應的也要接入三個對應的文件,如圖三個文件夾內

APP ABI 勾選的多的話編譯需要的時間也會相應增加。
使用文件夾 pro_packages 項目打包的話,每次出包只需要點擊“構建發布”面板中構建按鈕即可,然后把構建好的src 和res文件夾拷貝到pro_packages根目錄替換即可,frameworks 文件內添加了原生平台的東西,發包時候不要修改該文件夾
6:調試秘鑰只針對安卓平台,可默認也可配置自己的簽名文件,生成的原生項目對應路徑如下

7:AnySDK,sdk的集合框架,詳細看anysdk 官網,沒有的話可以不勾選
8:SDKBox 不需要可忽略,cocos1.4版本沒有這個
9:加密腳本 選項也是1.4版本沒有的,勾選后,發布非調試包的時候需要填上key,而且key需要與之前相同,加密后的腳本后綴為jsc 加密格式,不可明文,同時會壓縮代碼內存大小,若key不相同,可能會導致啟動游戲時黑屏解密腳本文件失敗。web版本發正式包也需要勾選加密,否則源代碼可在瀏覽器被抓包!
10:打開調試模式編譯后的js 文件后綴為.js 可以看到具體的代碼,正式發包不勾選,編譯后的文件為.jsc 后綴
11:配置好后直接點擊構建,sleep為構建完成。

12:用原生xcode打開ios項目。
前面構建項目前的包名,對ios來說就是

要在構建項目的時候定好包名,若要修改的話在以下地方修改ios 的包名


13:打包ipa前需要電腦聯網
xcode打開設置》添加開發者賬號


添加要准備打包的開發者賬號
14: 准備Certificate、Provisioning Profile
Certificate(證書)就是app在打包的時候必須簽名,蘋果iOS系統在安裝app之前會驗證Certificate,否則不會通過安裝。 Provisioning Profile簡單來說就是包含Apple ID,證書,和設備ID等各種信息的集合體。一般來說,在打包ipa的時候,必須配置Provisioning Profile。

15:如上圖,這里的紅點原因如圖中的英文,是因為這個包名com.wulushen.wdlmz 你們已經用了,所以我的賬號不能使用。
也就是對應這個Apple ID賬號在你的Mac本地是沒有對應的Provisioning Profile的。Provisioning Profile是需要去開發者中心
一共四步走,每一步都是點右上角的+號操作。


四步走完后文件安裝在mac 電腦上后,打開xcode打包。
安裝好后檢查:
在打開鑰匙串應用,看看有沒有導入成功,

然后檢查xcode

17:設置有效的Archive配置,這里面一定要選擇“Release”,因為發布版本一定是release的,除非打測試包對應就是add-hot選項,第16中的第4也要對應是選擇Ad Hot。

18:
選擇

然后

19 :配置code sign,選擇剛才下載安裝好的文件

20:編譯設備,如圖選擇


21:開始打包,

慢慢等。。。

22:沒問題的話等編譯就好了,這里如果有報錯信息得看具體報錯,一般報錯是證書沒有配置對,就是上面說的是步走。檢查一下,證書配置有沒有問題,必須先把證書安裝到電腦上才可以打包
然后會自動彈出框來,這里不等了,找了別人的圖。

第一個就是最新打包出來的包,點右邊的輸出包。會彈出

選擇你相對應的,然后next。。。

再一直繼續next。
然后就over!
以上是發布普通ipa 包的大致流程,發布過程中可能會出現其它大大小小的問題,如果是發布到appstore報錯,可根據報錯信息修改項目,一般可檢查appIcon文件,啟動頁資源,本地電腦證書配置問題, xcode環境問題,項目資源內格式、文件類型限制、如png、jpeg等,依賴庫或者sdk兼容問題,xcode 新舊版本問題!(另外cocos 不同版本編譯出來的項目,如1.6和1.7、1.8,1.9等,不同版本是不可兼容的,不可發布版本后,使用cocos新或者舊版本熱更新游戲)
《Android平台發包》
1:使用pro_packages/frameworks/runtime-src/proj-android-studio 該項目在原生平台打包
2:lib_interfaces 依賴庫是我添加的基礎庫,后續會繼續拓展
3:項目內的配置非必要情況不可修改,每次發包前需要修改包體的版本號和build版本號,如下

versionCode是build版本號,發包前必須要遞增+1,否則無法覆蓋手機上的舊包安裝,會安裝失敗。
versionName是對用戶可見的版本號,也需要自增+1,但這里不+1 的話不會影響新包覆蓋舊包安裝
以上兩點ios平台同理
4:編譯打包如圖

選擇keystore文件,上文中有說明keystore 文件,發包的keystore 文件信息密碼需要保存好,否則會被反編譯重新打包,而且同個包不同keystore 的話應用市場會認為是包體是虛假冒充不給予審核上架。

next...
勾選下方V1和V2, 可優化包體的安裝啟動速度,同時迭代發包時也都需要勾選兩者,若新舊版本的包都是單獨勾選其中之一或者其它,可能導致部分機型,部分系統版本安裝失敗!

finish...
以上截圖沒有說明的看圖中的英文就可以了!
開始編譯打包,編譯時間會很久,取決於電腦配置,和上文說的構建面板中的APP ABI 選項。
over。。。
《原生平台調用》
以下部分官網貌似沒有文檔說明,不曉得更新了沒有。
js 基本調用ios :
jsb.reflection.callStaticMethod('ios 類名','靜態函數名');
ios 調用 js:
ios 調用js 需要注意,在后綴.mm文件內調用js全局函數,調用如下
std::string jsCallStr = cocos2d::StringUtils::format("onGameLoginRsp("%s");", strRet.c_str());
jsval ret;
ScriptingCore::getInstance()->evalString(jsCallStr.c_str(), &ret);
//注:jsval ret,根據版本情況判斷傳不傳到evalString函數。
下面是官方ios的調用文檔。