首页 > 移动平台 > 详细

Android 7.1 预置platform应用可卸载

时间:2021-05-12 14:57:10      阅读:31      评论:0      收藏:0      [点我收藏+]

一、预置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 := \

 

Android 7.1 预置platform应用可卸载

原文:https://www.cnblogs.com/darinning/p/14758676.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!