签名路径由DEFAULT_SYSTEM_DEV_CERTIFICATE或PRODUCT_DEFAULT_DEV_CERTIFICATE 决定
签名文件由LOCAL_CERTIFICATE 决定
# The default key if not set as LOCAL_CERTIFICATE
ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
else
DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
endif
如上代码分析,如果没有定义PRODUCT_DEFAULT_DEV_CERTIFICATE(可以在产品mk中定义),默认签名使用“build/target/product/security/testkey”。
文件 build/make/core/prebuilt_internal.mk
# If this is not an absolute certificate, assign it to a generic one.
ifeq ($(dir $(strip $(LOCAL_CERTIFICATE))),./)
LOCAL_CERTIFICATE := $(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))$(LOCAL_CERTIFICATE)
endif
如果LOCAL_CERTIFICATE(在应用的Android.mk中定义)不是绝对值路径,则LOCAL_CERTIFICATE根据DEFAULT_SYSTEM_DEV_CERTIFICATE的目录找到对应的签名文件。
如LOCAL_CERTIFICATE:=platform 表示使用平台签名,则其值最终为LOCAL_CERTIFICATE = build/target/product/security/platform