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

Android镜像构建时如何预置persistent_properties的系统属性初始值

预置Android镜像中/data/property/persistent_properties的初始值

由于/data是用户数据分区,首次刷入镜像时会被格式化,无法直接将persistent_properties文件打包进镜像的/data目录。以下是两种可靠的预置方案:

方案一:通过Init脚本在首次启动时复制预置文件

这种方式直接在系统初始化阶段将预置的属性文件拷贝到/data/property目录,属于镜像层面的预置:

    1. 在设备的vendor或product目录下创建预置文件,例如vendor/your_vendor/etc/persistent_properties,内容格式为每行一个属性:
    persist.custom.key1=value1
    persist.custom.key2=value2
    
    1. 编写Init脚本片段(如vendor/your_vendor/etc/init/init.your_device.rc),添加以下逻辑:
    on post-fs-data
        # 确保/data/property目录存在
        mkdir /data/property 0700 root root
        # 复制预置文件到目标路径
        copy /vendor/etc/persistent_properties /data/property/persistent_properties 0600 root root
        # 修正文件权限(必须为root拥有,0600权限)
        chown root root /data/property/persistent_properties
        chmod 0600 /data/property/persistent_properties
    
    1. 在设备的device.mk中添加文件拷贝规则,确保脚本和预置文件被打包进镜像:
    PRODUCT_COPY_FILES += \
        vendor/your_vendor/etc/init/init.your_device.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.your_device.rc \
        vendor/your_vendor/etc/persistent_properties:$(TARGET_COPY_OUT_VENDOR)/etc/persistent_properties
    

方案二:通过首次启动脚本自动设置属性

如果需要更灵活的逻辑(比如判断是否已经设置过属性),可以用脚本在首次启动时调用setprop写入:

    1. 编写shell脚本vendor/your_vendor/bin/setup_persistent_props.sh:
    #!/system/bin/sh
    # 仅在persistent_properties不存在时执行设置
    if [ ! -f /data/property/persistent_properties ]; then
        setprop persist.custom.key1 value1
        setprop persist.custom.key2 value2
    fi
    
    1. 给脚本添加执行权限:chmod 755 vendor/your_vendor/bin/setup_persistent_props.sh
    1. 在Init脚本中添加启动触发:
    on boot
        exec -- /system/bin/sh /vendor/bin/setup_persistent_props.sh
    
    1. 在device.mk中添加脚本拷贝规则:
    PRODUCT_COPY_FILES += vendor/your_vendor/bin/setup_persistent_props.sh:$(TARGET_COPY_OUT_VENDOR)/bin/setup_persistent_props.sh
    

注意事项

  • 只有以persist.开头的属性才会被写入persistent_properties文件,这是系统的硬性规则
  • 必须确保/data/property目录和文件的权限正确(root用户拥有,目录0700,文件0600),否则系统无法读取或写入属性
  • post-fs-data是执行/data目录操作的合适时机,此时/data分区已经挂载完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:22:37