範例

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := libacerutilityservice
LOCAL_PACKAGE_NAME := cameraTest
LOCAL_CERTIFICATE := platform
include $(BUILD_SHARED_LIBRARY)
##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libacerutilityservice:classes.jar
include $(BUILD_MULTI_PREBUILT)

:= 為指定值;+=是追加值(java語法)

1          首先需要指定LOCAL_PATH變數,用於查找原始檔案位置

LOCAL_PATH:= $(call my-dir)

通常Android.mk的位置要和需要編譯的程式放在同一個目錄下,所以會有以下型式上述語句說明,將LOCAL_PATH變數定義成本檔(Android.mk)所在目錄路徑。

2          Android.mk會有很多個編譯模組,每個模組皆是以include $(CLEAR_VARS)開始,include $(BUILD_XXX)結束

include $(CLEAR_VARS)

include $(BUILD_PACKAGE)

l   include $(CLEAR_VARS)

CLEAR_VARS由系統提供之變數,所有編譯的控制文件都必須在同一個GNU MARKE底下,皆是全域變數。所以此行可讓GNU MAKEFILE為你清除除LOCAL_PATH以外的所有LOCAL_XXX變數。

例如:LOCAL_MODULELOCAL_SRC_FILESLOCAL_SHARED_LIBRARIESLOCAL_STATIC_LIBRARIES

l   include $(BUILD_XXX)

BUILD_XXXXXX的部份可自由命名,即為以模組之名稱,但也有固定的用法,上述範例就是採用BUILD_SHARED_LIBRARY

                       i.              include $(BUILD_STATIC_LIBRARY)表示編譯成靜態庫

                     ii.              include $(BUILD_SHARED_LIBRARY)表示編譯成動態庫

                   iii.              include $(BUILD_EXECUTABLE)表示編譯成可執行程式


 

3          其它變數設定

l   LOCAL_MODULE

LOCAL_MODULE := helloworld

為每一個模組的名稱,必需為一且不能有空格,例如一個稱為foo的模組,將會產生出libfoo.so的文件(固定為libxxx.so)

l   LOCAL_SRC_FILES

LOCAL_SRC_FILES := $(call all-java-files-under, src)

要進行編譯的原始程式碼位置,上例表示當下位置的src資料夾裡

l   LOCAL_STATIC_JAVA_LIBRARIES

LOCAL_STATIC_JAVA_LIBRARIES := libacerutilityservice

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libacerutilityservice:classes.jar

編譯帶有第三方jar檔的app,後面的變數名稱可隨意取,只要前後相同即可,最後面的classes.jar則是要匯入的jar檔名稱

l   LOCAL_PACKAGE_NAME

產生出apk的檔案名稱

l   LOCAL_CERTIFICATE

LOCAL_CERTIFICATE := platform

設定簽名(sign),有四種預設簽名可用

                       i.              1testkey:普通APK,預設情況下使用。

                     ii.              2platform:該APK完成一些系統的核心功能。經過對系統中存在的資料夾的訪問測試,這種方式編譯出來的APK所在進程的UIDsystem

                   iii.              3shared:該APK需要和home/contacts進程共用資料。

                    iv.              4media:該APKmedia/download系統中的一環。

參考來源: http://blog.csdn.net/zhandoushi1982/article/details/5316669

arrow
arrow
    文章標籤
    Android.mk
    全站熱搜

    y23462001 發表在 痞客邦 留言(0) 人氣()