經過兩天的折騰,終於搞出了一個方案,雖然算不上最好的方案,但也算是一種比較可行的方案。
本文使用的cocos版本是cocos2d-x3.10。
話不多說,現在開始。
首先,本文所用到的工具我已經上傳到網盤,有需要的可前往下載:
一、安裝強大的IDE
第一步,當然是安裝windows上必不可少的VS啦。3.10可用的vs版本有12,13,15.本文使用的是vs2015專業版。vs的安裝沒什么好說的,只需要等待就行了。要注意的是默認安裝是沒有c++環境的,在安裝的時候要選自定義安裝然后把c++勾選上,也可以安裝完成后在新建項目那里安裝。
二、安裝配置cocos
本人喜歡cocos這個集成引擎(工具),雖然觸控已經把它放棄了。cocos集成了cocos2d-x和cocostudio,創建項目的時候可選源代碼和預編譯庫兩種,源代碼和cocos2d-x在命令行創建項目一樣,把cocos2d的源代碼拷到工程目錄下,所以整個工程的結構就很大,完整編譯也要很久。預編譯庫則不用拷貝引擎源代碼,工程結構很小,每次編譯都很快,這也是我開始喜歡上cocos的原因。但是,本文所用的方式還是源代碼的形式,因為預編譯庫不支持android studio,直接用命令行打包apk也會出錯,所以這個坑就不跳了。
2.1下載安裝python2.7
cocos的很多命令都是基於python2.x的,所以安裝cocos前要先安裝python2.7。下載安裝就沒什么好說的,安裝完成后要把python添加到環境變量,這樣才能在控制台直接使用ptyhon命令。
在path后面加上python安裝后的根路徑,比如我的環境:
注意變量值每個項之間要用英文分號隔開。
設置完成后打開cmd,輸入python,出現這個界面表示環境配置成功了。
2.2安裝cocos
直接雙擊cocos安裝程序,安裝完成之后會在桌面生成cocos和cocostudio兩個圖標。cocos用於項目管理,可創建項目,分別用vs,android studio和cocostudio打開項目。
環境變量配置,使用cocos安裝程序免去了配置環境的麻煩,安裝程序已自動配置好環境變量。打開cmd,輸入set cocos我們可看到已經成功添加了COCOS_X_ROOT,COCOS_TEMPLATES_ROOT和COCOS_CONSOLE_ROOT這三個變量。
輸入set path會發現COCOS_TEMPLATE_ROOT和COCOS_CONSOLE_ROOT已經加入到path變量中去。
輸入cocos,看到以下界面表示cocos已經安裝並配置完成
2.3創建cocos2d項目
創建項目有兩種方式,
第一種是直接在命令行創建,使用命令
cocos new 項目名 -l cpp/lua/js -d 項目存放路徑 -p 包名
這種方式創建的項目是拷貝源代碼的,即會將cocos2d-x3.10的源代碼拷貝到工程目錄下。(cocos命令使用的是環境變量配置的路徑,環境配置的是3.10的版本,所以使用的是3.10的命令,如果想用其它版本,直接修改環境變量即可,不修改也行,在引擎目錄下的tools/cocos-console/bin下打開命令行,然后調用cocos.py來創建項目,參數跟上面一樣)
第二種是使用cocos來創建,注意選擇引擎版本,引擎類型和項目語言,然后點擊完成即可。
項目創建完成后就可以直接打開vs編譯win32版本啦,源代碼方式創建的項目要編譯很久,預編譯庫創建的項目編譯起來跟控制台項目一樣快,就是爽!
三、安裝並配置jdk
安裝過程沒什么好說的,安裝完成后要配置環境變量
新建一個變量JAVA_HOME,設置它的值為jdk根目錄,比如
新建一個變量CLASSPATH,設置它的值為 .;%JAVA_HOME%\lib
然后在path后面加上%JAVA_HOME%\bin,注意項與項之間用分號隔開。
打開命令行,輸入java -version和javac -version,出現下面界面表示配置成功了
四、配置安卓SDK、NDK、ANT
下載sdk,ndk,ant並解壓,建議解壓到一起,方便管理。像我就放到cocos目錄下,新建一個tool目錄。
接下來是配置這三個的環境變量了,有兩種方式
第一種,在cocos2d-x3.10目錄下打開cmd,然后執行setup.py命令,它會自動判斷有沒有配置這些環境,如果沒有,則會提示你輸入。
輸入setup.py后會提示你ndk沒有配置
把ndk根目錄拖進來,然后按回車確定
NDK配置成功,然后它提醒android沒有配置,也就是sdk沒有配置。把sdk根目錄拖進來,按回車確定
SDK配置成功,然后它提示ANT沒有配置,把ant目錄下的bin目錄拖進來,按回車結束。
重啟cmd,分別輸入set android,set ndk,set ant會看到這三個環境變量已添加成功。
第二種方式就沒什么好說的了,就是手動創建這三個環境變量並設置值。
五、安裝Android Studio
安裝過程默認即可。第一次啟動時會提示設置SDK路徑,設置一下即可。
接下來就可以打包APK了。
第一步,新建一個項目HelloWorld,選擇源代碼方式,cocos2d-x3.10,c++。
第二步,打開Android Studio,導入項目,選擇proj.android-studio目錄。
注意,3.10版本創建的項目默認使用的grade是2.4,導入之前先檢查一下電腦上有沒有grade2.4,如果沒有的話放進去(上面的網盤上有)。如果不檢查的話很大可能會在導入的時候卡死,因為android studio會自動去谷歌官網下一個,然后你懂的。
檢查這個路徑下有沒有東西,如果沒有把grade-all-2.4.zip放進去。
C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.4-all\6r4uqcc6ovnq6ac6s0txzcpc0
導進去之后會出現下面的錯誤,這是因為這個版本的android studio需要使用2.10的grade.按照提示更新,刷新一下即可。
第三步,打開cmd編譯c++代碼。在HelloWorld目錄下或者proj.android-studio目錄下打開命令行,輸入以下命令:
cocos compile -p android --android-studio(如果不想生成apk,加上--no-apk)
如果上面的環境配置都沒有錯的話,就會出現下面的界面
編譯完成后會在HelloWorld/bin/debug/android下面生成一個apk文件。
把apk文件安裝到手機或模擬器就可以運行了,或者打開android studio運行。
補充:
上面列出的方案只有源代碼+android studio一種,昨天晚上回家又試了一下,發現其它方案也是可以的。
一、預編譯庫+android
編譯方式:cocos compile -p android
編譯不過的原因:引擎的坑。引擎本身已經預編譯好了C++代碼,生成的.a文件放在prebuilt/android(win32放在prebuilt/win32)下,我們編譯的時候就直接拿這些.a文件過來鏈接就可以了,不用重新編譯引擎源代碼。但是!這些預編譯的中間文件有問題!觸控挖這么大個坑真的好嗎,當然cocos是開源的,也有可能是某些欠揍的人干的。不過,作為從官網下的包都會有問題,也只能呵呵了。
解決方法:用源代碼的方式新建一個項目,然后編譯成android studio的方式(編譯成android也行,這就是下面要講的第二種方案,這個也有坑),然后把編譯出來的.a文件復制出來覆蓋掉引擎里面的.a文件。
二、源代碼+android
編譯方式:cocos compile -p android
編譯不過的原因:同樣是引擎的坑。修改下面這幾個文件:
打開這些文件后,可以看到這兩行
把它修改為下面這樣
原因:這幾個文件也不能說它有錯,在vs里面編譯就沒有問題。但是!這是十分不嚴謹的,有些編譯器沒有相應的設置就編譯不過。ExtensionMacros.h位於這幾個文件的上一層,也就是Extension下面。使用../ExtensionMacros.h就可以保證在什么情況下都可以正確找到這個文件,但Extension/ExtensionMacro.h就不一定了,它首先得保證能找到Extension這個相對目錄,vs能找到是因為已經在屬性設置那里把這個目錄Include進來了,換個編譯器可能就找不到了。
注:前面這兩個坑我都已經填上了,可以在安裝完cocos之后,把網盤里面的cocos2d-x3.10.rar解壓后替換掉cocos2d-x里面的cocos2d-x3,10。
總結一下:
共有三種打包apk的方式:
預編譯庫+android:cocos compile -p android
源代碼+android:cocos compile -p android
源代碼+androidsutdio:cocos compile -p --android-studio
第三種方案編譯完成后可導入android studio運行,前面兩種暫時測試的結果是導入之后有問題。但無意外,三種方式編譯之后都會生成apk文件,直接安裝apk文件就可以了。