? cocos2dx程序不能只在VS2012下運行,遲早是要搬運到Android和IOS上的。Windows下移植IOS平臺先擱下不說比較困難,而且只有越獄的蘋果機才可以運行,而且畢竟IOS高端、小眾。這里主要講一下移植Android,windows下cocos2dx打包成APK和在eclipse下運行的方法。
本文接上篇win8下環境配置的博客,在cocos2dx和VS2012的配置完成后( 如果還沒有配置cocos2dx+VS2012的環境,請最好先參考博客進行配置:http://blog.csdn.net/u012200908/article/details/38056917)
cocos2dx和VS2012相比配置Android十分簡單。在配置完成之后,這個時候系統變量path中有了cocos2dx的目錄和Python的目錄,這些也是移植Android平臺要使用的。
篇幅長主要是因為筆者網上看過很多教程講的不夠透徹,許多新手看不懂,自己不想這樣。所以這篇博客圖片較多,造成長篇累牘。還請各位讀者見諒。
下面先說一下準備工作配置Android有關的環境,用的東西包含如下:
1、
? ? ? 首先需要JDK,我用版本是1.8.0.11,64位
? ? ? 官網:http://www.oracle.com/technetwork/java/javase/downloads/index.html
? ? ? 可以上網搜一下,或者百度云(百度云共享的為64位,如果有人是win8或者win732位的系統還是按上面的網址去官網下載吧):
? ? ??http://pan.baidu.com/s/1dDzRQBf
2、
Android ADT
? ? ?官網可以直接下最新的(7月2號的版本):
? ? ?http://developer.android.com/sdk/index.html
? ? ? ??我的百度網盤有64位的可以下
? ? ? ? ?http://pan.baidu.com/s/1bn8dwXT
? ? ? ? ? ??
? ? ?解壓到你習慣的目錄下(建議某磁盤根目錄)
? ? ?
如果你想使用我的版本 以避免可能出現的問題,我認為應該不會有的。。
(14年3月21號的)
? ? ?網盤里面也有64位的可以下:
? ? ?http://pan.baidu.com/s/1sj15u1n
3、
Android NDK
? ? ?這個很關鍵,不要下r10版本,會有問題,這個是因為官方的原因。
參見
http://cn.cocos2d-x.org/tutorial/show?id=1187
這里選擇r9d版本,我實在是在官網找不到下載鏈接,因為只看到r10的一堆鏈接,其他版本一個下載鏈接沒找到。。。
最后找到一個網址:
? ? ?https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip
? ? ?https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip
? ? ?后綴有64即為64位系統
? ? ?可以去我的百度云下載64位NDK:
? ? ?http://pan.baidu.com/s/1jGsWan8
? ? ?先不急著解壓
4、下載ANT
? ? ?這里使用的是1.9.4的ANT
? ? ?官網直接下載zip包:
? ? ?http://ant.apache.org/bindownload.cgi
? ? ?先不急著解壓
? ? ?
5、現在將NDK和ANT全部解壓到ADT下面去,以方便管理
? ? ?現在ADT下面有
? ? ?NDK
? ? ?NDK
? ? ?SDK
? ? ?Eclipse
? ? ?ANT
? ? ?SDK Manager.exe
? ? ?
這里要強調一下,CMD運行要盡量都在管理員身份運行的情況下,請從查看所有程序,發送一個快捷方式到桌面,每次右鍵以管理員身份運行。然后CD到你要用的目錄。
下面正式開始:
?step 1:
? ? ? 安裝JDK,記住JDK的路徑,這里要強調一點,就是你文件夾路徑里面不可以有空格和中文字符。所以你不要裝在默認的program files里面。建議自己找個地方裝JDK。
? ? ? 計算機-右鍵屬性-高級系統設置-環境變量
點擊進入環境變量,在系統變量下點擊新建
? ? ?JAVA_HOME ? ??C\Java\jdk1.8.0_11//就是你JDK的路徑,這里不需要加分號
? ? ?CLASS_PATH ? ??.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;//前面有個點,請大家注意
再找到path變量,要加三個東西
? ? ?(1)在最前面加上:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
? ? ?(2)path里面還要再加上Android?SDK下面tools文件夾的路徑。
?????例如筆者的是:C:\adt-bundle-windows\sdk\tools;
?????請使用絕對路徑,加上這個路徑之后,在使用android?list?targets查看sdk版本的時候就不會出現Android不是內部或者外部命令這樣的錯誤。
? ? ?(3)然后把ANT的變量也一起配置一下,有備無患。path中繼續添加 ? ? ANT目錄\bin;//建議直接找到那個目錄然后將路徑復制黏貼到里面,但注意后面要加上\bin
step2:
? ? ?上面的工作完成之后,我們需要再次運行setup.py將NDK_ROOT、SDK_ROOT、ANT_ROOT關聯到cocos。
? ? ?打開CMD,cd到cocos2dx目錄下
? ? ?輸入setup.py,回車。還記得一開始只配置cocos2dx和VS時候的運行結果嗎?
? ? ?結果如下,他會提示你Please enter the path of NDK_ROOT
參照我下面輸入的一個個輸入進去,建議拷貝路徑之后右鍵黏貼,然后回車。(我的路徑有點兒長,沒有改ADT的名字,后來我全部刪除重新調試過,大家可能會發現我的ADT前后不一樣,這個大家知道一下就行了。一定要輸入自己的正確的路徑)
回車就會添加一個變量。到最后ANT_ROOT設置完了之后,這一塊也就完了。然后他會提示你重啟命令提示符或重啟系統,這里重啟下CMD就行了。如果有問題再重啟吧。
可以在關閉之后再次在這個文件夾打開CMD,再次運行setup.py驗證是否生效。
或者輸入set NDK_ROOT、set ANDROID_SDK_ROOT、set ANT_ROOT查看
這里請注意,筆者再次提醒,圖片筆者是兩次截圖,所以路徑有的地方是adt-bundle-windows-x86_64-20140702,后來筆者改用了20140321的版本,造成其他地方路徑是修改了之后的adt-bundle-windows,如果有不便還請諒解一下啦。
step3:
構建Android工程(apk)
下面新建一個工程,這里不做贅述。
工作目錄內,shift + 右鍵 打開CMD
cocos new helloworld -l cpp -p com.losers.game
在工作目錄下創建了一個helloworld項目(這里要注意,如果工作目錄路徑里面有空格建議刪除工作目錄重建,否則會編譯出錯)
在構建APK之前,先打開ADT中的Eclipse,啟動SDK Manager,更新一下SDK,至少保證一個版本的SDK可以使用。但這個版本要新一些,筆者選擇了4.4.2,因為太舊了會有OpenGL的問題,建議大家也更新一下4.4.2,大有用處。這里先說一下,后面具體解釋。
更新SDK的時候可能存在Fetching很慢的問題,請點擊Tools——option——下面的Others中,把第一個選項勾中即可。
相信速度會快很多。而且下載成功率也會大大提高。其他的方法比如修改hosts文件在此不冗述,請大家自己百度一下方法。
? 在確保有至少一個完整可用版本的SDK后,后面要用的是cocos2d-console,compile的命令
? ? ?在helloworld目錄下打開CMD下輸入下列命令查看幫助
? ? ?cocos compile --help或者 cocos compile -h
然后輸入cocos compile -p android -j 4,打包APK。這兒說一下,要在管理員模式下執行命令提示符,以防出現問題。
即編譯當前目錄的安卓工程,可以同時有4個編譯任務,讓4核機器滿負荷跑。
這里當然可以根據你的手機Android版本加上?--ap?數字(10?——?20,目前是這樣的,以后除了新版本數字會增加)這里我選擇了缺省,讓他自己找。因為原理上是可以自己找的,我要全方面判斷是否有問題。
?????版本對應的數字我想在用SDK?Manager的時候大家都會看到
?????如果你不知道,可以在CMD中輸入android?list?targets查看,如下圖
?????筆者SDK只有2.3.3和4.4.2的,對應數字是10和19
然后執行
cocos compile -p android -j 4,打包APK
根據它提示的路徑去找到那個讓我們又愛又恨的APK
跟同學借個手機來跑跑試試。結果如下,版本Android4.0:
這里要說一下,筆者在打包APK的時候遇到了一些問題,說java.exe不是內部或者外部命令,也不是可運行的程序,也不是批處理文件。
? ? ?這個應該是一開始的JAVA環境變量配置有問題造成的,你要看看你的跟java有關的變量路徑里面是否有類似于program files一樣有空格的路徑。如果有,請卸載JDK重裝再別的路徑沒有中文和空格的文件夾里面,然后修改路徑,重啟電腦,以管理員方式運行CMD重試一下,筆者就是這樣解決了問題。
step4:
eclipse下跑程序
? ? ?繼續回到前面打開的Eclipse,將我們要打開的項目給整進來。
? ? ?但在這之前,最好查看NDK和SDK路徑是否正確
? ? ?window——preferences——Android查看SDK和NDK,檢查location是否正確?
? ? ?
? ? ?如果你用的新版本(7月2號版本的)你會發現,臥槽?為啥怎么找NDK都找不到啊?這個原因我也不知道。需要往Eclipse的plugins文件夾下拷貝一個jar包,叫做com.android.ide.eclipse.ndk_23.0.2.1259578.jar
? ? ?這是下載地址:
? ? ?http://pan.baidu.com/s/1i3xbM0d
? ? ?這個NDK里面沒有應該是沒有什么影響的,我是在配置環境出錯的時候病急亂投醫了,找了各種方法,覺得這個還是加上好,所以就說一下。幸虧我用的不是這個版本,不過我的大神舍友說,這個NDK就算空著也不會影響。。。。。
? ? ?
? ? ?下面開始導入我們的項目
? ? ?import-Existing Android Code Into Workspace
? ? ?選擇我們的項目中proj.android文件-Finish
? ? ?這里一定不要勾選copy projects into workspace,否則后果很嚴重,筆者親測。。。。
這個時候程序會有錯誤,是因為類庫沒有引入,以后每次都要引用一下了。你需要找到你創建的項目所在的地方。
我是在C:\cocosworkspace\helloworld\cocos2d\cocos\platform\android\java\src
下面,(就是原項目里面)里面有個org文件夾,復制一下,拷貝到我們用Eclipse打開的helloworld項目的src中去。提示是否重寫,選yes,這樣錯誤就沒有了。
下面重點來了。
? ? ?第一點:我們可以看到,這個地方默認的版本是Android2.3.3,筆者就是在這個地方被困住了兩天兩夜,我新建了2.3.3的AVD,也勾選了Use Host GPU,但就是報相關OPENGL的錯誤。后來我多方查證才知道openGl在Android2.2之后才支持真機,所以默認版本是2.3.3,模擬器版本4.0.3之后才能跑,我只想說,cocos2dx和Android都太(嗶嗶)了(自己和諧一下)。
? ? ?
? ? ?所以這個地方,在項目上右鍵——properties——切換到4.4.2版本,等一會兒Eclipse為我們自動切換。
切換了版本之后,新建4.4.2的AVD,勾選下方的Use Host GPU,這個AVD就是我們要用的模擬器。
第二點:同時這里要注意,如果以后你編寫cocos程序,增加了cpp,你需要到Android.mk文件中將cpp添加進去
下面是Android.mk文件(jnj文件夾下)
? ? ?要在LOCAL_SRC_FILES下面寫上你所有的cpp文件,這里要注意,除了最后一個cpp以外,每個后面都有一個斜杠。
以上都完成之后,啟動AVD運行一下,大家請看~當當當當~
這里我調整成了較寬的AVD。
到此配置就完成了!~~~~~
因為我學cocos2dx的時間也不是很長,只有一個多月,寫這篇博客是一位cocos2dx吧的吧友提出的疑問,我就自己配置了一下,雖然在cocos2dx下做項目,但我是用Xcode和VS2012。打包APK和一直Android平臺是另一位隊友的任務。這位吧友也讓我學到了不少,知道了自己的不足,持續了一個多周總算是把Mac下和windows 8.0下cocos2dx3.2移植Android平臺的教程都寫了出來。如果大家遇到問題或者發現我的博客里面有錯誤請留言,我會盡力給大家解答以及修正博客。
2014.8.6 22:45
Mr.Losers