1. 程式人生 > >在原始碼環境中編譯Android studio專案時的mk指令碼編寫

在原始碼環境中編譯Android studio專案時的mk指令碼編寫

1、Main專案是主工程,下面有名為app的專案

      CommonLib是庫工程,下面有名為lib的專案

      Main專案會用到CommonLib庫。

2、原始碼環境中兩個專案是在同一個目錄下,平級的。Android.mk分別在各自的根目錄下。

3、參考了android原始碼中Contacts包含庫ContactsCommon時mk的編寫。

4、Main的Android.mk

LOCAL_PATH:=$(call my-dir)
<span style="background-color: rgb(240, 240, 240);">LOCAL_PATH:= $(call my-dir)</span>include $(CLEAR_VARS)

#LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 fmmr

commonlib_dir = ../CommonLib/lib
src_dirs = app/src/main/java  $(commonlib_dir)/src/main/java
res_dirs = app/src/main/res  $(commonlib_dir)/src/main/res

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

LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))

LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml

LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.carl.lib

LOCAL_PACKAGE_NAME := Main

LOCAL_SDK_VERSION := current

#LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include $(BUILD_PACKAGE)


include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += android-support-v4:$(commonlib_dir)/libs/android-support-v4.jar fmmr:app/libs/fmmr.jar

include $(BUILD_MULTI_PREBUILT)

# Use the folloing include to make our test apk.
#include $(call all-makefiles-under,$(LOCAL_PATH))

5、CommonLib的Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

#LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4

src_dirs = lib/src/main/java
res_dirs = lib/src/main/res

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

LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))

LOCAL_MANIFEST_FILE := lib/src/main/AndroidManifest.xml

LOCAL_AAPT_FLAGS := --auto-add-overlay

LOCAL_PACKAGE_NAME := CommonLib

LOCAL_SDK_VERSION := current

#LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include $(BUILD_PACKAGE)


include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += android-support-v4:lib/libs/android-support-v4.jar

include $(BUILD_MULTI_PREBUILT)

# Use the folloing include to make our test apk.
#include $(call all-makefiles-under,$(LOCAL_PATH))

6、Android原始碼根目錄 下執行source build/envsetup.sh

      然後在Main工程根目錄下執行mm -B

      大功告成!!