如果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 := ......

......


问题解决。