You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android镜像构建中保持系统APK的UID稳定?

如何在AOSP构建中固定系统APK的UID

核心方案:通过AOSP构建配置固定UID映射

针对内置系统APK的UID变动问题,无需修改应用Manifest,可通过AOSP构建系统的底层配置实现UID固定:

1. 复用AOSP预定义系统UID(推荐)

AOSP预定义了一批固定UID(如system对应1000、bluetooth对应1002等),这些UID不会随构建变动。只需在应用模块的构建脚本中指定对应签名证书,即可绑定到预定义UID:

  • Android.mk配置:
    LOCAL_CERTIFICATE := platform  # 绑定到system UID(1000)
    
  • Android.bp配置:
    certificate: "platform",
    

2. 自定义专属固定UID

如果需要独立的专属UID,可修改AOSP系统配置文件实现包名与UID的硬映射:

  1. 修改system/core/include/private/android_filesystem_config.h,添加自定义UID(选择1000-1999区间内未被占用的数值):
    #define AID_MY_CUSTOM_APP 1099
    
  2. 修改system/core/libcutils/fs_config.c,添加包名与UID的映射条目:
    { "com.your.package.name", AID_MY_CUSTOM_APP, AID_MY_CUSTOM_APP, 0 },
    
  3. 在应用模块的构建脚本中指定签名证书(需与系统签名一致,如platform):
    Android.mk:
    LOCAL_CERTIFICATE := platform
    
    Android.bp:
    certificate: "platform",
    

3. 关键注意事项

  • 固定签名证书:AOSP会根据签名关联UID,务必使用固定的签名密钥(如AOSP默认platform密钥或自定义密钥),避免每次构建使用临时证书导致UID重新分配。
  • 跳过sharedUserId:该属性在Android 10+已弃用,且修改Manifest会影响现有用户,上述方案无需改动应用代码。

原理说明

AOSP对系统APK的UID分配逻辑优先级为:先匹配fs_config.c中的包名-UID映射,再匹配签名证书对应的预定义UID。只要固定映射关系或签名证书,就能保证多次构建中UID完全一致。

内容的提问来源于stack exchange,提问作者Pawel Veselov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:05:18