AOSP 构建:用默认测试密钥替换我自己的密钥
AOSP building: replace my own keys with default test-keys
我正在构建 AOSP,我想用我自己的密钥对构建进行签名。关于这个过程有一些官方文档 here.
但我想知道我是否可以简单地扭转所有流程并改为执行以下操作:
- 删除位于
build/target/product/security
的默认 android 测试键
- 将我的密钥(使用 here 的官方说明生成)放入同名文件夹中。 (假设所有共享、媒体、...都使用一个密钥)
但是这个方法行不通。刻录图像后,系统应用程序(SystemUI、设置等)将停止并持续显示 ANR 对话框。我知道如果系统签名与这些应用程序的签名不匹配,就会发生这种情况...但为什么呢?
另一个问题:使用与 shared.pk8
、media.pk8
、testkey.pk8
相同的密钥是否会导致任何问题?
谢谢
首先,确保构建已对应用程序重新签名。您可能需要做一个 make clean
来摆脱以前的工件。
同时检查捆绑系统应用程序的 Android.mk
文件(例如 packages/apps
或您放置它们的任何地方)。你在哪里看到这条线:
LOCAL_CERTIFICATE := PRESIGNED
将其替换为:
LOCAL_CERTIFICATE := platform
这将使构建使用将要检查的密钥对您的系统应用程序重新签名。
虽然对 shared
、media
、testkey
、platform
使用相同的密钥将起作用(在您的系统应该启动和运行的意义上),它从使用这些密钥构建的应用程序中删除一层隔离。特别是,通常使用 testkey
签名的非系统应用程序现在将使用与 platform
相同的密钥进行签名。这将使他们能够访问系统应用程序数据和代码,并赋予他们更高的权限(比如不必要求用户确认使用相机或访问他们的文件)。我认为不推荐这样做。
一条建议:
如果您不想将您的私钥与 aosp 代码一起保存在源代码管理中,您可以在您的设备 mk 中定义它们的路径:
PRODUCT_DEFAULT_DEV_CERTIFICATE := /home/my_user/release_keys_folder/releasekey
PRODUCT_VERITY_SIGNING_KEY := /home/my_user/release_keys_folder/verity
我正在构建 AOSP,我想用我自己的密钥对构建进行签名。关于这个过程有一些官方文档 here.
但我想知道我是否可以简单地扭转所有流程并改为执行以下操作:
- 删除位于
build/target/product/security
的默认 android 测试键
- 将我的密钥(使用 here 的官方说明生成)放入同名文件夹中。 (假设所有共享、媒体、...都使用一个密钥)
但是这个方法行不通。刻录图像后,系统应用程序(SystemUI、设置等)将停止并持续显示 ANR 对话框。我知道如果系统签名与这些应用程序的签名不匹配,就会发生这种情况...但为什么呢?
另一个问题:使用与 shared.pk8
、media.pk8
、testkey.pk8
相同的密钥是否会导致任何问题?
谢谢
首先,确保构建已对应用程序重新签名。您可能需要做一个 make clean
来摆脱以前的工件。
同时检查捆绑系统应用程序的 Android.mk
文件(例如 packages/apps
或您放置它们的任何地方)。你在哪里看到这条线:
LOCAL_CERTIFICATE := PRESIGNED
将其替换为:
LOCAL_CERTIFICATE := platform
这将使构建使用将要检查的密钥对您的系统应用程序重新签名。
虽然对 shared
、media
、testkey
、platform
使用相同的密钥将起作用(在您的系统应该启动和运行的意义上),它从使用这些密钥构建的应用程序中删除一层隔离。特别是,通常使用 testkey
签名的非系统应用程序现在将使用与 platform
相同的密钥进行签名。这将使他们能够访问系统应用程序数据和代码,并赋予他们更高的权限(比如不必要求用户确认使用相机或访问他们的文件)。我认为不推荐这样做。
一条建议:
如果您不想将您的私钥与 aosp 代码一起保存在源代码管理中,您可以在您的设备 mk 中定义它们的路径:
PRODUCT_DEFAULT_DEV_CERTIFICATE := /home/my_user/release_keys_folder/releasekey
PRODUCT_VERITY_SIGNING_KEY := /home/my_user/release_keys_folder/verity