利用擴充雙屏技術及Chrome瀏覽器,快速剖析優秀網頁Div及CSS構成,並高效實現原型創作

來源:互聯網
上載者:User

標籤:des   android   style   class   blog   code   

Cocos2d-x移植到Android平台編譯的兩個檔案Android.mk和Application.mk


2014年6月11日

本篇部落客要講NDK編譯Android項目的兩個檔案Android.mk和Application.mk,筆者在使用NDK編譯Cocos2d-x產生的Android項目的時候遇到配置編譯環境的問題,網上雖然有些配置教程,但並未把一些原理性的東西描述清楚,雖然有時候可以把編譯環境配置成功了,但並不瞭解為什麼要這麼來配,有時候出現問題也無從下手去查。筆者是帶著疑問去配置NDK的編譯環境的,其中就遇到Android.mk和Application.mk這兩個檔案,筆者並不知道這兩個檔案是用來幹嘛的,開啟來看之後也有一堆自己不認識的文法,所以才想著寫這篇部落格來整理總結一下。

下面進入正題:

筆者下載的NDK版本是:android-ndk-r9d

這兩個檔案相關的文檔在android-ndk-r9d/docs路徑下,原汁原味,你值得擁有。

Android.mk檔案的作用

An Android.mk file is written to describe your sources to the build system.

中文意思是:寫一個Android.mk檔案是為了向產生系統描述你的原始碼。

Application.mk檔案的作用: 

The purpose of Application.mk is to describe which native ‘modules‘ (i.e. static/shared libraries) are needed by your application.An Application.mk file is usually placed under $PROJECT/jni/Application.mk, where $PROJECT points to your application‘s project directory.

    中文意思是:Application.mk用來描述你的工程下的native模組, 一般放在$PROJECT/jni/Application.mk, 其中$PROJECT表示你的工程目錄,這樣就可以被ndk-build指令檔找到.(註:在這種方式下,進入jni目錄,即$PROJECT/jni/,然後執行ndk-build,就可以直接編譯jni產生.so檔案了).


上面就簡單的描述了Android.mk和Application.mk的檔案的作用,下面拿Cocos2d-x中最簡單的例子來簡單介紹一下這兩個檔案。
筆者使用的是Cocos2d-x 2.2.3,建立一個Cocos2d-x項目這裡請參考前面筆者發表的部落格:http://blog.csdn.net/wwj_748/article/details/23677829


筆者在cocos2d-x-2.2.3\projects下建立了一個Test項目,匯入proj.android到Eclipse中,會發現有如下的檔案目錄結構:


在jni檔案夾下有這兩個檔案,我們開啟可以看到以下代碼,筆者加上對應的注釋了:

/Test/jni/Android.mk

#1.這個變數用於給出當前檔案的路徑,my-dir返回當前Android.mk所在目錄的路徑LOCAL_PATH := $(call my-dir)#2.CLEAR_VARS:指向一個編譯指令碼。這個必須在開始一個新模組之前包含include $(CLEAR_VARS)#3.這個模組的名字,它必須是唯一的,而且不能包含空格LOCAL_MODULE := cocos2dcpp_shared#4.設定你的模組的二進位檔案的名稱,獨立於LOCAL_MODULELOCAL_MODULE_FILENAME := libcocos2dcpp#5.這是要編譯的原始碼檔案清單LOCAL_SRC_FILES := hellocpp/main.cpp                    ../../Classes/AppDelegate.cpp                    ../../Classes/HelloWorldScene.cpp#6.可選變數,表示標頭檔的搜尋路徑LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes#7.LOCAL_WHOLE_STATIC_LIBRARIES會載入整個靜態庫,LOCAL_STATIC_LIBRARIES只是載入靜態庫中用到的函數。LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_staticLOCAL_WHOLE_STATIC_LIBRARIES += box2d_staticLOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static#8.BUILD_SHARED_LIBRARY:指向編譯指令碼,根據所有的在 LOCAL_XXX 變數把列出的原始碼檔案編譯成一個共用庫。include $(BUILD_SHARED_LIBRARY)#9.將一個新的路徑加入NDK_MODULE_PATH變數。$(call import-add-path,$(LOCAL_PATH)/platform/third_party/android/prebuilt)#10.在Android.mk中引用模組$(call import-module,CocosDenshion/android)$(call import-module,extensions)$(call import-module,external/Box2D)$(call import-module,external/chipmunk)

以上代碼筆者已經進行了具體的解釋,每一行代碼代表的作用可以從中得到。更多具體的文法,請讀者參考ndk提供的文檔。

/Test/jni/Application.mk

#1.指定application裡要連結的標準c++庫APP_STL := gnustl_static#2.編譯選項APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1

以上就是本篇部落格的內容,下篇部落格將給大家分享一下如何不用Cygwin來配置NDK編譯環境,而直接在Eclipse配置NDK編譯環境。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.