Android平台Overlay机制(补汉6个汉字字).docx
文本预览下载声明
HYPERLINK /galensphang/p/3826642.htmlAndroid平台Overlay机制
Android overlay 机制允许在不修改packages中apk的情况下,来自定义 framework和package中的资源文件,实现资源的定制。来达到显示不同的UI得目的(如MIUI)。 以下几类能够通过该机制定义: (1),Configurations (string, bool, bool-array) (2),Localization (string, string-array) (3),UI Appearance (color, drawable, layout, style, theme, animation) (4),Raw resources (audio, video, xml)
For detailed introduction on Android application resources, please refer to: HYPERLINK /guide/topics/resources/available-resources.html/guide/topics/resources/available-resources.html
1 为产品添加Overlay目录 1.1 Product Overlays与Device Overlays 有两种不同的overaly目录定义,来影响最终的效果: PRODUCT_PACKAGE_OVERLAYS: used by a particular product DEVICE_PACKAGE_OVERLAYS: used several products that share a common device model 如果包含同一资源,那么 PRODUCT_PACKAGE_OVERLAYS 将覆盖 DEVICE_PACKAGE_OVERLAYS 中的, 这两个定义如下: build/core/package.mk (Line: 93)
HYPERLINK javascript:void(0);
1 LOCAL_RESOURCE_DIR := 2 $(wildcard $(foreach dir, $(PRODUCT_PACKAGE_OVERLAYS), 3 $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))) 4 $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), 5 $(addprefix $(dir)/, $(LOCAL_RESOURCE_DIR)))) 6 $(LOCAL_RESOURCE_DIR)
HYPERLINK javascript:void(0);
PRODUCT_PACKAGE_OVERLAYS DEVICE_PACKAGE_OVERLAYS 功能是一样的,只是优先级不一样: PRODUCT_PACKAGE_OVERLAYS 优先于 DEVICE_PACKAGE_OVERLAYS。
1.2 改变makefile来添加overlays的编译项 为了添加一个overlay目录, 需要修改产品的makefile: (for example: device/vendor-name/device-name/product-name.mk) 添加以下几行: PRODUCT_PACKAGE_OVERLAYS := device/vendor-name/device-name/product-name/overlay
$(PRODUCT_PACKAGE_OVERLAYS) Or: DEVICE_PACKAGE_OVERLAYS := device/vendor-name/device-name/common/overlay
$(DEVICE_PACKAGE_OVERLAYS)
(如: device/vendor-name/device-name/device_base.mk)中添加: LOCAL_PATH := device/vendor-name/device-name DEVICE_PACKAGE_OVERLAYS := $(LOCAL_PATH)/overlay 如果要定义多个overlays目录,需要用空格隔开。如果有多个目录,并且都包含同一资源的定义,那么将使用第一个定义的目录中的资源。
1.3 在overlay目录下创建资源文件 想覆盖A
显示全部