如果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