我正在制作棉花糖AOSP rom,并尝试将device_owner.xml添加到/data/system中,以直接向设备所有者提供应用程序。
我已经添加了一个.mk文件,按照产品复制文件的方式进行了操作。
文件可以在out/data/system/路径下找到,但似乎没有包含在rom中。
我还尝试将PRODUCT_COPY_FILES替换为
文件将被放置在正确的位置,但由于某种原因,chown命令不能将所有者和组更改为system。默认情况下,文件具有root所有者和组。
你有任何想法如何解决这个问题吗?
编辑1.
我现在已经为此提供了一种解决方案。
我创建了set_device_owner.sh文件,在其中:
我已经添加了一个.mk文件,按照产品复制文件的方式进行了操作。
PRODUCT_COPY_FILES += abc/cba:data/system/device_owner.xml
文件可以在out/data/system/路径下找到,但似乎没有包含在rom中。
我还尝试将PRODUCT_COPY_FILES替换为
PRODUCT_PACKAGES += device_owner.xml
并为该文件制作了自己的Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE = device_owner.xml
LOCAL_SRC_FILES = $(LOCAL_MODULE)
LOCAL_MODULE_CLASS = ETC
LOCAL_MODULE_PATH = $(TARGET_OUT_DATA)/system
include $(BUILD_PREBUILT)
但它仍未包含在rom中。
我已经读到过,数据分区将成为userdata.img的一部分,但该文件也不在那里。
我还尝试将device_owner.xml包含到不同的位置,例如/system/下,并将其复制到post-fs-data阶段的init.rc文件中。
copy /system/abc/device_owner.xml /data/system/device_owner.xml
chown system system /data/system/device_owner.xml
chmod 0600 /data/system/device_owner.xml
文件将被放置在正确的位置,但由于某种原因,chown命令不能将所有者和组更改为system。默认情况下,文件具有root所有者和组。
你有任何想法如何解决这个问题吗?
编辑1.
我现在已经为此提供了一种解决方案。
我创建了set_device_owner.sh文件,在其中:
#!/system/bin/sh
chown system:system /data/system/device_owner.xml
chmod 0600 /data/system/device_owner.xml
然后我添加了一个.mk文件,跟着产品复制文件一起。
PRODUCT_COPY_FILES += abc/cba/device_owner.xml:/system/xbin/device_owner.xml
PRODUCT_COPY_FILES += abc/cba/set_device_owner.sh:/system/xbin/set_device_owner.sh
在init.rc中,我在post-fs-data下面有以下内容:
copy /system/xbin/device_owner.xml /data/system/device_owner.xml
exec - root root -- /system/bin/sh ./system/xbin/set_device_owner.sh
现在这样做可以工作,但我仍然想知道正确或更可取的方法是什么。
而且我不知道为什么将拷贝、更改文件所有者和更改文件权限的命令直接应用到init.rc上没有生效。