如果app是和android系統一起進行編譯,如果想讓app的源碼保持一套,卻能夠同時在android4.1和android4.2下進行編譯。如果app源碼與android系統的版本無關,那麼,不存在問題。
但,如果app的實作代碼與所依賴的framework的版本強相關,譬如,Location相關的API,在android4.1和android4.2上的差異比較大。應用如果是采用4.2的API來實作的,在配合android4.1系統編譯時就會報錯。此時,可以采用在Android.mk檔案中,根據PLATFORM_SDK_VERSION的值,在編譯時決定要編入哪些Java檔案,源碼中同時保留針對android4.1和android4.2的特有實作。
源碼目錄為:
src
src_4_android41
src_4_android42
src下存放公共代碼
src_4_android41下存放配合android4.1系統的實作
src_4_android42下存放配合android4.2系統的實作
然後,Android.mk修改方法如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
...
LOCAL_SRC_FILES := $(call all-java-files-under, src)
ifeq ($(PLATFORM_SDK_VERSION), 17)
LOCAL_SRC_FILES += $(call all-java-files-under, src_4_android42)
else
LOCAL_SRC_FILES += $(call all-java-files-under, src_4_android41)
endif
LOCAL_PACKAGE_NAME := ......
......
問題解決。
轉載于:https://blog.51cto.com/memory/1226443