標籤雲

搜尋此網誌

2018/08/07

AOSP - 系統內建 app 的 Android.mk 範例

有玩過 aosp 的人應該都有接觸過 mk 檔的撰寫
今天就來整理下如果要將 app 放進 aosp 裡面
Android.mk 檔要怎麼寫

最簡單的方式是先將 Module 編譯成 apk 檔
這樣子可以使用 gradle 編譯
dependency 也不用寫在 Android.mk 裡
非常簡單
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

# Module name should match apk name to be installed
LOCAL_MODULE := XXXXXXX

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS

LOCAL_CERTIFICATE := platform

include $(BUILD_PREBUILT)

如果因為原始碼管理或是其他原因
你必須要把 Module 的專案原始碼放進 aosp 裡面的話
那麼可以參考一下下面的複雜版本

LOCAL_PATH:= $(call my-dir)

# compile time only jar names (for later use)
#COMPILE_LIBRARIES := compiler-a compiler-b

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

# Name of the module to build
LOCAL_PACKAGE_NAME := XXXXXXX

# module src file path
LOCAL_SRC_FILES := \
        $(call all-java-files-under, java)

# path(s) of resources
#LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, res)

# List of static libraries to include in the package
#LOCAL_STATIC_JAVA_LIBRARIES := lib-jar-a lib-jar-b lib-jar-c

#LOCAL_STATIC_JAVA_AAR_LIBRARIES := lib-aar-a lib-aar-b lib-aar-c

# path of compile time libs
#LOCAL_CLASSPATH := $(addprefix $(LOCAL_PATH)/libs/,$(addsuffix .jar, $(COMPILE_LIBRARIES)))

# set as privileged application
#LOCAL_PRIVILEGED_MODULE := true

# use platform key to sign the module
LOCAL_CERTIFICATE := platform

# proguard enabled setting
LOCAL_PROGUARD_ENABLED := disabled

include $(BUILD_PACKAGE)

############## JAR/AAR Files ####################################
#include $(CLEAR_VARS)
#
## pre built all your jar and aar lib for your module 
## so you can use the lib name in LOCAL_STATIC_JAVA_LIBRARIES and LOCAL_STATIC_JAVA_AAR_LIBRARIES
#LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := lib-jar-a:libs/lib-jar-a.1.0.0.jar \
#    lib-jar-b:libs/lib-jar-b.1.0.0.jar \
#    lib-jar-c:libs/lib-jar-c.1.0.0.jar \
#    lib-aar-a:libs/lib-aar-a.1.0.0.aar \
#    lib-aar-b:libs/lib-aar-b.1.0.0.aar \
#    lib-aar-c:libs/lib-aar-c.1.0.0.aar
#
#include $(BUILD_MULTI_PREBUILT)

以上是參考不同範例綜合而成
若有錯誤及建議也希望不吝指教

沒有留言: