Android 7.1 预置platform应用可卸载


一、预置platform应用编译到/system/preinstall

二、新建preload.sh脚本,将app 复制到/data/app

具体步骤:

1.屏蔽 /build/core/Makefile内的限制

 1 diff --git a/build/core/Makefile b/build/core/Makefile
 2 --- a/build/core/Makefile
 3 +++ b/build/core/Makefile
 4 @@ -21,10 +21,10 @@ endif
 5  # The filter part means "only eval the copy-one-file rule if this
 6  # src:dest pair is the first one to match the same dest"
 7  #$(1): the src:dest pair
 8 -define check-product-copy-files
 9 -$(if $(filter %.apk, $(call word-colon, 2, $(1))),$(error \
10 -    Prebuilt apk found in PRODUCT_COPY_FILES: $(1), use BUILD_PREBUILT instead!))
11 -endef
12 +#define check-product-copy-files
13 +#$(if $(filter %.apk, $(call word-colon, 2, $(1))),$(error \
14 +#    Prebuilt apk found in PRODUCT_COPY_FILES: $(1), use BUILD_PREBUILT instead!))
15 +#endef
16  # filter out the duplicate <source file>:<dest file> pairs.
17  unique_product_copy_files_pairs :=

2.添加preload.sh脚本和对应的PRODUCT_COPY_FILES 

 1 diff --git a/device/qcom/common/preload.sh b/device/qcom/common/preload.sh
 2 new file mode 100644
 3 --- /dev/null
 4 +++ b/device/qcom/common/preload.sh
 5 @@ -0,0 +1,7 @@
 6 +#!/system/bin/sh
 7 +if [ ! -f "/data/app/installed" ]; then
 8 +       chmod 777 /data/app/
 9 +       cp -rf /system/preinstall/* /data/app/
10 +       echo "1" > /data/app/installed
11 +       chmod -R 777 /data/app/*
12 +fi
diff --git a/device/qcom/xxx/xxx.mk b/device/qcom/xxx/xxx.mk
--- a/device/qcom/xxx/xxx.mk
+++ b/device/qcom/xxx/xxx.mk
@@ -179,7 +179,10 @@ endif
 PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.opengles.aep.xml:system/etc/permissions/android.hardware.opengles.aep.xml
 PRODUCT_PROPERTY_OVERRIDES += \
      persist.radio.phone.matchnum=11
+
+PRODUCT_COPY_FILES += device/qcom/common/preload.sh:system/bin/preload.sh

3.在项目对应的init.xxx.rc里面创建service

 1 --- a/device/qcom/xxx/init.xxx.rc
 2 +++ b/device/qcom/xxx/init.xxx.rc
 3 @@ -55,6 +55,8 @@ on post-fs-data
 4      mkdir /data/system/devices 0777 system system
 5      mkdir /data/system/devices/keylayout 0777 system system
 6  
 7 +    start preload
 8 +
 9 
10 @@ -117,3 +119,7 @@ on property:gsm.xxx.xxx=*
11      chmod 644 /data/data/sn
12      chown system system /data/data/sn
13  
14 +service preload /system/bin/sh /system/bin/preload.sh
15 +    user root
16 +    group root
17 +    oneshot

4.添加对应的selinux权限

 1 --- a/device/qcom/sepolicy/xxx/init_shell.te
 2 +++ b/device/qcom/sepolicy/xxx/init_shell.te
 3 @@ -36,6 +36,8 @@ allow  qti_init_shell  powerctl_prop:property_service set;
 4  allow  qti_init_shell  fuse:dir create_dir_perms;
 5  allow  qti_init_shell  fuse:file create_file_perms;
 6  allow  qti_init_shell  fuse:dir search;
 7 +allow   qti_init_shell apk_data_file:dir { create read write open search getattr setattr add_name };
 8 +allow   qti_init_shell apk_data_file:file { create read write open getattr setattr };
 9  
10  #for oem operation in slientinstall .etc.
11  allow qti_init_shell oem_file:dir search;

5.最后别忘了修改对应应用的Android.mk,添加LOCAL_MODULE_PATH 属性

 1 --- a/packages/thirdparty/xxx/xxx/Android.mk
 2 +++ b/packages/thirdparty/xxx/xxx/Android.mk
 3 @@ -8,6 +8,7 @@ LOCAL_JAVA_LIBRARIES := xxxxxxx
 4  LOCAL_SRC_FILES :=$(call all-java-files-under, src)
 5  LOCAL_PACKAGE_NAME := xxx
 6  LOCAL_PRIVILEGED_MODULE := true
 7 +LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/preinstall
 8  LOCAL_CERTIFICATE := platform
 9  LOCAL_PROGUARD_ENABLED := full obfuscation
10  LOCAL_STATIC_JAVA_LIBRARIES := \

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM