本文是cocos2dx移植android的第二篇教程,筆者深深感覺,cocos2dx移植android平臺是永遠的痛啊。。。
? ? ? ?下面講一下筆者花費一個周研究的Mac OS下的cocos2dx3.2+android配置
首先要準備的東西
? ? ?(1)下載cocos2dx3.2 ?
? ? ? ? ??http://www.cocos2d-x.org/download? ?
? ? ?(2)Android Development Tools(adt)
? ? ? ? ??http://developer.android.com/sdk/index.html
? ? ? ? ? ADT中自帶Eclipse,很屌。
? ? ? ? ? 因為android developers那個網站有些用戶在進入的時候可能因為要翻墻等某些原因很難整,我上這個網站就是需要加載很長時間,真難受。所以我網云端放了一份我寫博客時最新的版本,大家可以get it
? ? ? ? ? ?http://pan.baidu.com/s/1mg4xqTq?
(3)NDK,記得現在一定不要用r10,因為r10在環境搭載的時候會有bug,會出現錯誤,筆者被這個錯誤已經困擾了好久好久。。。。耽誤了整整兩天之后,只能用r9重新配置之后再修改博客的多出細節。
? ? ? ? ? 為什么筆者這么說呢。。。請看下面的網址:
? ? ? ? ??http://cn.cocos2d-x.org/tutorial/show?id=1187
? ? ? ? ? NDK r9 for mac下載地址如下:
? ? ? ? ??https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2
? ? ? ? ??https://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86.tar.bz2
? ? ? ? ? 有64后綴為64位系統的。
? ? ? ? ? 筆者同樣在云端分享了一個64位鏈接:
? ? ? ? ??http://pan.baidu.com/s/1dDu2fVb
? ? ?
? ? ? ? ? 注:不要看到有win3個字母就覺得是windows下的,以為我傳錯了或者寫錯了。。。
(4)ANT
? ? ? ? ? 這里安裝ant給出兩個方法
? ? ? ? ??method one:這里我直接使用了Homebrew來進行安裝。如果大家之前的Mac+Xcode的cocos2dx開發環境是按照我的教程配置的,就應該已經裝好了homebrew,就可以直接跟我一樣這樣去做。
? ? ? ? ? 如果你沒有按照我的教程配置,不知道homebrew的相關信息,可以查閱我的這兩篇博客
? ? ? ? ? <1>http://blog.csdn.net/u012200908/article/details/38070885? ? ?Mac下Xcode配置cocos2dx
? ? ? ? ? <2>http://blog.csdn.net/u012200908/article/details/38070345? ? ?Homebrew安裝和使用
? ? ? ? ? 建議還是裝一下homebrew,如果你要在Mac下進行開發,或者想在Mac進行開發的話,這是一個很好的、程序員中使用很廣泛的東西,不要嫌安裝TA麻煩(何況按照我的教程只需要一句話。。。。),或者你可以看看下面TA的作用再做決定。
? ? ? ? ? 下面是安裝方法,通過launchpad調出Terminal(建議大家把語言調成英文,terminal也就是終端,后面會稱為終端,調成英文對程序員是很有好處的),這里只需要一句,brew install ant。
意思就是:嘿,Homebrew,給我裝個新版的ant,Mac里面自帶的太舊了!
? ? ?then,home-brew就會照做。
? ? ?這里大家要記住Homebrew給我們安裝的地點,例如我的路徑為:
? ? ?/usr/local/Cellar/ant/1.9.4?
?method two:如果你放棄了homebrew(what a pity!),那就根據網址直接去下載吧。
? ? ? ? ? ? ? ?http://ant.apache.org
(5)python(正常Mac下會有自帶,基本上無需下載,你可以在終端輸入python來查看版本,這里只是列出來說明一下,我們是需要這個東西的)
? ? ? ? ? ? ? ? ? ? 雖然基本無需下載,但為了嚴謹,還是說一下。不要3.0以上的版本,最好是經典的2.7(2.7.6 or 2.7.8)。這里同樣兩種方法
method one:
https://www.python.org/download/releases/2.7.6/
?method two:
參考我的博客,使用homebrew來安裝,這里要注意,我在配置的時候犯了一個錯誤,安裝了3.0以上版本的Python,誤導了大家,我已經在發現后在原博客中間部分貼出紅字,警示大家,所以在這里再次訂正一下,大家安裝的時候不要輸入brew install Python3,要輸入brew install python。也再一次向大家道歉,自己的失誤,導致了可能會誤導別人的結果,在這里向大家表示歉意。
以上5個全部就緒后,就只欠東風了。下面正式開始:
一、配置cocos2dx初始環境
首先你要配置整個cocos2dx環境,即能用python進行項目創建,并且Xcode下能夠執行你新建的項目。我之前的博客已經詳細的寫了,請大家參考一下:http://blog.csdn.net/u012200908/article/details/38070885?
但是在這里,為了方便讀者我再講一遍,如果您已經參照我的博客,或網上的其他教程配置好了cocos2dx+Xcode的環境,請直接跳過第一步,到第二步。
(1)將下載的cocos2dx3.2解壓,這里要注意,你解壓的時候文件名或者文件路徑里面不要有中文,不要有空格。如果你用的是中文的語言,你會發現Finder里面那幾個文件夾是文檔、下載、圖片、電影,但是在作為路徑的時候系統仍會將他們設置為Documents、Downloads、Pictures、Movies,這幾個文件夾按照英文算。
(2)安裝python,這里有幾個選擇:
? ? ?<1> ?你可以不更新python,使用系統自帶的python,如果以后出現問題再安裝更新版本的
? ? ?<2> 參考我的博客,使用homebrew來安裝python。(注:如果你想要成為一名程序員或開發者,建議你使用這種方法,以為Mac下的Homebrew是一個很強大的東西。如果你只是有興趣想要研究一下cocos2dx,可以不選擇這種方法。)
? ? ?博客:
? ? ?<3>直接去下載python 2.7forMac(筆者用的2.7.8,但是有人說2.7.6更好。who knows。。。)
?(3)安裝完python之后,我們要找一個簡單的方法,和windows8直接在當前文件夾shifit + 右鍵打開命令提示符一樣的方法,能夠在當前文件夾快速的打開終端。
先打開system preferences——keyboard———shortcuts———services———勾選new terminal at folder即可(在當前文件夾快速打開終端節省了很多轉移當前目錄的時間,至于這些東西對應的中文,我想一定難不倒各位)
??這些完成后,來到解壓后cocos2dx文件夾(不要雙擊打開),右鍵——service———New Terminal at Folder
打開一個終端窗口,輸入./setup.py回車
我們可以看到,在這里面,他只是check到了COCOS_CONSOLE_ROOT的路徑
但是沒有找到android平臺有關的路徑,他會提示你輸入NDK_ROOT,或者其他android相關的root,這里不要著急,先不管他,直接關掉終端。?
(4)創建并運行項目
? ? ?創建和運行新項目不想多講,簡單一說,windows和Mac下語法啥的都一樣,
? ? ?直接在終端中輸入cocos -h可以查看幫助
? ? ?下面直接創建項目,創建項目的時候包我選擇了缺省,大家注意。
? ? ?先自己新建一個文件夾作為cocos的工作目錄,然后在這個目錄上(不要進去)右鍵 ? ? service——New Terminal at Folder
? ? ?輸入cocos new -l cpp helloagain
? ? ?helloworld是上一個教程中創建的?
用Xcode打開來run一下,結果只有一個椰子一句HelloWorld和一個退出button
二、相關變量的配置
不知道你是否還記得我們在只配置Xcode環境時執行setup.py,后面的變量為缺省,這里我們要為這些值缺省的變量賦值。
有兩種方法(我是用的第二種,我也建議使用第二種):
(1)
再次運行cocos2dx3.2安裝目錄下的setup.py,然后根據他的提示自己將環境變量的目錄粘帖進去,然后回車。
比如你執行setup.py,系統提示
Please enter the path of NDK_ROOT(or press Enter to skip):
這里你就要輸入你的NDK路徑(參照上面的COCOS_CONSOLE_ROOT路徑輸入)
?/Users/Lss/Downloads/android-ndk-r9d/
然后回車。按照這個依次輸入NDK_ROOT、ANDROID_SDK_ROOT、ANT_ROOT
最后根據他的提示,會讓你執行source命令,更新變量。
更新之后,關掉終端并重啟生效
這個方法比較簡單,就不做詳細的解釋了。但是這里要注意同樣的問題,解壓的文件夾名字,No Chinese。因為這個東西牽扯到.bash_profile這個文件,建議如果你使用第一種方法配置變量,還是最好看一下第二種方法,如何找到這個文件,因為默認狀態下,這個文件是隱藏的。
(2)
直接修改 .bash_profile,這個是Mac os下默認的隱藏文件,配置環境變量的。
具體打開方法請參照我的另一篇博客:
http://blog.csdn.net/u012200908/article/details/38314311
這里直接貼上第五種方法,那個APP的下載鏈接:
APP名字叫ShowHiddeFiles
主頁:http://gotoes.org/sales/ShowHiddenFilesMacOSX/How_To_Show_Hidden_Files.php
????????? 可以直接點擊左邊下載。
也可以直接點擊下載鏈接:http://gotoes.org/sales/ShowHiddenFilesMacOSX/ShowAllFiles.app.zip
直接打開app選擇show special files按鈕
你就可以在/Users/yourname/下面找到.bash_profile,打開并按照后面編輯
詳細請參考該博客
? 也可以直接在終端輸入
??pico .bash_profile?
? 查看.bash_profile文件內容,在終端輸入下面給出的變量
? 如果你的系統沒.bash_profile文件,那執行下面操作建一個
? 首先調出終端
<1>先進入用戶的目錄,輸入 ? ? ?cd ~ ? ? ? ? ?這里注意字母和符號之間有個空格
<2>繼續輸入 ? ? touch .bash_profile ? ? ? ? ?這里touch和.之間也是有個空格?
<3>打開文件并編輯 ? ? open -e .bash_profile ? ? 同樣要注意空格
? ? ? ? ?打開之后對其進行編輯,我的打開之后是這樣的,因為之前已經配置過了cocos2dx在Mac進行ios開發的環境,所以會有這些內容。
?? 接下來進行一些編輯,建議編輯之前command + shift + 4截個圖備份一下
加入下列內容:
# Add android NDK_ROOT
export NDK_ROOT=/Users/Lss/Downloads/android-ndk-r9d/
#Add ANDROID_SDK_ROOT
export ANDROID_SDK_ROOT=/Users/Lss/Downloads/adt-bundle/sdk
同時編輯一下ANT_ROOT
# Add environment variable ANT_ROOT for cocos2d-x
export ANT_ROOT=/usr/local/Cellar/ant/1.9.4
export PATH=$ANT_ROOT/bin:$PATH
如果看官的profile里面沒有這個就參照我寫的打上去吧
#那一行沒有什么用,類似于注釋?
? ? ??
注意:在路徑中盡量不要出現空格,否則在下面第五步可能會有問題,筆者一開始SDK路徑中,adt bundle這個出現了問題,所以才在中間仿照NDK的路徑加入了一條線。如果出現問題,在你執行source .bash_profile時會提示 ****/****:not a valid identifier。所以最好不要在文件夾的名字上有空格
(4)保存文件 ? ? Command + S ? ? 并關閉文件
這些完成后,再來到解壓后cocos2dx文件夾(不要雙擊打開),右鍵——service———New Terminal at Folder
打開一個終端窗口,輸入./setup.py回車
這次運行結果與之前的教程會有不一樣,那是因為之前講的是Xcode作為開發平臺,針對ios開發,所以SDK NDK ANT都是缺省,而本文講的是在Mac下用eclipse針對Android開發,所以前面在.bash_profile中添加的變量這里會出現,有心人可以參照我上面的博客連接找到setup.py運行結果對比一下。 ?
大家注意結果的最后一行有一句話。意思是讓你執行命令: source /Users/Lss/.bash_profile 來讓我們添加的系統變量開始發揮效用(一看這翻譯水平,英語六級一定過了)
所以輸入: source /Users/Lss/.bash_profile(直接復制自己終端里的就好了)?
三、工程導入eclipse
先進入eclipse,打開SDK Manager,他會自己fetching一些東西,過程十分慢,fetching完了之后,更新一下SDK,一兩個版本就可以了,我這兒更新了4.4.2即API19。讓他先更新著。(如果有的讀者因為這個地方沒有圖片,您不懂我說的什么意思,我想您一定是個新手,可以網上稍微查一下eclipse更新SDK。這里建議新手還是應該先使用Xcode或者VS2012進行cocos開發,然后學習一些android和java的知識,再移植android平臺,不要急著真機調試,編程不可能一口吃成個胖子,要日積月累)
? ? ?
? ? ? 再進入到工作目錄中創建的項目里面,打開helloagain——進入proj.android,你會看見里面有個文件叫做 ? ? build_native.py ? ? 這就是我們接下來要運行的文件。
? ? ?返回上層目錄,右鍵proj.android文件夾,服務,打開終端(應該會了吧)
? ? ?輸入命令:python build_native.py?(會有幾個warning,沒有問題)
執行完之后回到eclipse,SDK更新完之后,建議重啟下eclipse。
重啟之后執行項目導入,File-new project-Android-Android project from existing code?
選擇你之前新建的項目,工作目錄里面的hello again,打開proj.android,勾選下面出現的唯一的項目
這里注意,千萬不要勾選,copy projects into workspace,會各種錯誤。
我們會發現引入之后還是會有錯誤在里面,不要慌,這是因為包的缺少。
這里要查看一下錯誤原因,在項目上右鍵,屬性(properties),錯誤原因是什么,下方已經標注出來了。?
解決方法:到helloagain/cocos2d/cocos/platform/android/java/src目錄下
command + C 復制一下org這個文件夾,這是類包(不信打開看看啊)
然后回到項目的src下,command + V粘帖,我粘的時候有提示說已經存在是否重寫,這個必須要,反正就是要粘進去,粘進去你會發現錯誤全部消失了?
粘進去之后你還要有模擬器才可以運行。我只下了android4.4的相關東西。然后重新啟動一下,創建了一個AVD。OpenGL在android2.2之后才支持真機,模擬器版本在4.0.3之后才可以跑。如果這個地方,你引入之后項目的版本是2.3.3記得切換。
? ? ? 切換了4.4版本之后,新建4.4的AVD,勾選下方的Use Host GPU,這個AVD就是我們要用的模擬器。
AVD要選中下面的Use Host GPU,看下圖:
運行一下程序,結果如下(如果你不是跟筆者一樣運行的空項目,而是導入了一個自己寫的項目,或者你對里面的cpp文件有增刪甚至改名,請不要運行再往下看)
在這里筆者要說明兩點:
第一:就是在構建項目的過程中,你需要在android.mk這個文件里面做一些修改(在jnj文件夾下)畫框的地方,這是所有的cpp的名字,如果你以后修改或者添加了cpp,你需要在下面做聲明,聲明的時候要注意,前面的cpp后面有斜杠,最后一個沒有斜杠。?
第二:筆者發現,創建的新項目直接通過import導入,他編譯一陣子之后,再考入src文件下的那個包,發現示例程序依舊可以運行。我不知道這樣既然可以運行那么build_native.py還有什么意義。大家可以試一下,為了避免不必要的錯誤,大家可以new一個新項目試一下,不執行build_native.py直接導入,拷貝一下缺少的包,仍然是可以直接運行的。這個原因我還在考查中,大家可以想想這是為什么。因為官網執行了build_native.py,所以我們還是按照官網來吧。
至此你已經可以將cocos2dx的項目移植到android上了。?
2014.8.5 ? ? 23:34 ? ? ? ? ? ? ? ? ? ? ? ? ?
?Mr.Losers?