cocos2d-x 產生的項目列表
proj.android:上文說過,是android 啟動並執行項目工程
Classes:是上面android 工程運行時的NDK庫,所有可以跨平台的以C++編寫的代碼都放在該目錄,然後以NDK的方式編譯成SO動態庫,供android 項目調用,原生編譯出來的工程有四個檔案
Resources:是存放so動態庫需要的資源檔比片、音頻等
cocos2d-x的makefile檔案
要清楚的知道它是如何把Classes檔案編譯成so動態庫給android 項目調用的,就需要看看它的makefile如何編寫。再次進入proj.android會看到一個jni目錄,cd進去會看到
這裡最重要的兩個為Android.mk檔案和hellocpp目錄,而Application.mk暫時還不清楚做了什麼,好像提供了一些標準模板庫之類的東西,也不是太清楚,這裡就不誤導人了。而list.sh是一個指令檔,這裡也不做深究。
Android.mk:jni編譯時間需要的makefile檔案
我們最主要看上面這四個欄位
LOCAL_MODULE_FILENAME:代表編譯出來的so庫名稱,會點ndk 的朋友都知道。
LOCAL_SRC_FILES :所要編譯的CPP檔案,這裡可以看到,它還是跑到了Classes目錄找那兩個cocos2d的CPP檔案。main.cpp是對應的jni檔案,感興趣的朋友可以看看它是如何通過jni渲染到android 上面的。自己要多添加自己的Scene介面,就需要將CPP檔案按上面的格式添加。
LOCAL_C_INCLUDES :對應Classes目錄的cocos2d-x的h(頭)檔案。
LOCAL_WHOLE_STATIC_LIBRARIES :該cocos2d-x在android 環境下需要信賴的靜態庫,一般不需要更改這裡,除非自己要添加自己的功能需要信賴到第三方庫才需要添加到這裡來
到了這一步,大致瞭解了它是如何通過jni編譯成動態庫提供給android使用的了。
在cocos2d-x的庫檔案中添加日誌的支援
其實提供日誌支援,只是調用的標準的ndk日誌模組而已,在這裡說出來只是方便大家不用再多尋找而已 ,也可以在 這裡 查看我以前寫過的一篇關於NDK的文章。
cocos2d-x 產生的android 項目,在makefile 檔案中以經支援了logcat架構,我們要使用可以直接引入日誌的標頭檔然後再定義日誌的輸出格式即可,方法很簡單,看下方
然後呢,就可以使用LOGD添加調試列印了,如:LOGD("Application -->AppDelegate::applicationDidFinishLaunching");
關於AppDelegate
AppDelegate 是用來通過從你手上的行動裝置接收訊息的方式跟蹤應用程式的狀態變化。例如,它可以確定什麼時候使用者接電話,或者什麼時候記憶體佔滿。應用程式接收的第一個訊息是AppDelegate::applicationDidFinishLaunching方法。這個地方是所有啟動代碼都會走的函數,也是cocos2d-x初始化的地方。
該檔案位於:./template/android/Classes/AppDelegate.h
cocos2d-x 的基本生命週期
1.標準啟動模式
從運行應用程式到展示內容給使用者看所經曆的生命週期是
首先經過AppDelegate的建構函式
AppDelegate::AppDelegate()
{
LOGD("Application -->AppDelegate::AppDelegate");
}
再進入到應用程式的啟動函數
函數裡面初始化HelloWorld這個情境,然後顯示這個情境,情境會自動調用初始化執行個體,cocos2d大量使用SingleTon設計模式呀。
2.後台模式
在標準模式上,我們按下鎖屏鍵,然後再解鎖屏,這時的生命週期是這樣的
AppDelegate::applicationDidEnterBackground :此時,程式進入後台模式
AppDelegate::applicationWillEnterForeground :此時,程式被啟用
好了,到了這一步,總算是對它有些瞭解了,接下來打算跟著部落格園的遊戲牛人 nowpaper 把它的一些遊戲改成for
android的,素材難找呀!!!!