Android 8.0 高通代码预制apk可卸载,恢复出厂设置apk可恢复
2018-02-27 15:31
645 查看
1:做个脚本去实现拷贝APK都data/app目录下面:
#!/vendor/bin/sh
sleep 1
cp /system/pre_install/RunUiTest/RunUiTest.apk /data/app/
chmod 777 /data/app/RunUiTest.apk
2:把脚本加入编译:
1》把脚本放到device/qcom/common/rootdir/etc/copy_apps.sh目录下面,
2》修改device
4000
/qcom/common/base.mk
INIT += copy_apps.sh
3》修改device/qcom/common/rootdir/Android.mk
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
+LOCAL_MODULE := copy_apps.sh
+LOCAL_MODULE_TAGS := optional eng
+LOCAL_MODULE_CLASS := ETC
+LOCAL_SRC_FILES := etc/copy_apps.sh
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
LOCAL_MODULE := init.class_main.sh
LOCAL_MODULE_TAGS := optional eng
LOCAL_MODULE_CLASS := ETC
3,启动这个SH脚本当服务:
修改添加启动服务:
device/qcom/common/rootdir/etc/init.qcom.rc
添加:
+service copy_apps /vendor/bin/copy_apps.sh
+ class core
+ user root
+ oneshot
此处不需要去想正常的服务启动一样去添加TE的启动判断:
+#on property:sys.boot_completed=1
+# start copy_apps
4,要启动服务,必须给这个服务加个SELinux domain
但是我们的sh脚本可以直接添加到qti_init_shell_exec系统已有的,所以不需要去单独添加te文件来做这个domain新增的进程增加域、执行权限
修改device/qcom/sepolicy/common/file_contexts
添加:
+/(vendor|system/vendor)/bin/copy_apps.sh u:object_r:qti_init_shell_exec:s0
到此就结束了。
附带不需要的TE文件内容:
########################################
# sepolicy rules for copy_apps
########################################
type copy_apps, domain;
type copy_apps_exec, exec_type, vendor_file_type, file_type;
domain_auto_trans(init, copy_apps_exec, copy_apps);------代码都用这个,没有去管它什么意思
#init_daemon_domain(copy_apps);-------------网上都用这个
#allow copy_apps sysfs:file { read open };
如果是要加独立te的方式,那device/qcom/sepolicy/common/file_contexts的修改要换成自己的te:
/vendor/bin/copy_apps.sh u:object_r:copy_apps_exec:s0
这样会报很多avc权限问题,自己log打印有很多,但是apk还是正常拷贝过去了,~~
题外话:
正常的服务启动是要加te文件,因为有很多权限,针对log报什么avc就加对应的权限文件
下面有关别人的解说拷贝转载:供TE添加参考:
没有定义SELinux domain,导致服务xxx无法自启动。为了解决这个问题我们按如下方式修改或添加sepolicy文件:
修改seplicy/file_contexts文件,添加以下内容:
新增xxx.te文件,并在其中添加如下内容:
#!/vendor/bin/sh
sleep 1
cp /system/pre_install/RunUiTest/RunUiTest.apk /data/app/
chmod 777 /data/app/RunUiTest.apk
2:把脚本加入编译:
1》把脚本放到device/qcom/common/rootdir/etc/copy_apps.sh目录下面,
2》修改device
4000
/qcom/common/base.mk
INIT += copy_apps.sh
3》修改device/qcom/common/rootdir/Android.mk
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
+LOCAL_MODULE := copy_apps.sh
+LOCAL_MODULE_TAGS := optional eng
+LOCAL_MODULE_CLASS := ETC
+LOCAL_SRC_FILES := etc/copy_apps.sh
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
LOCAL_MODULE := init.class_main.sh
LOCAL_MODULE_TAGS := optional eng
LOCAL_MODULE_CLASS := ETC
3,启动这个SH脚本当服务:
修改添加启动服务:
device/qcom/common/rootdir/etc/init.qcom.rc
添加:
+service copy_apps /vendor/bin/copy_apps.sh
+ class core
+ user root
+ oneshot
此处不需要去想正常的服务启动一样去添加TE的启动判断:
+#on property:sys.boot_completed=1
+# start copy_apps
4,要启动服务,必须给这个服务加个SELinux domain
但是我们的sh脚本可以直接添加到qti_init_shell_exec系统已有的,所以不需要去单独添加te文件来做这个domain新增的进程增加域、执行权限
修改device/qcom/sepolicy/common/file_contexts
添加:
+/(vendor|system/vendor)/bin/copy_apps.sh u:object_r:qti_init_shell_exec:s0
到此就结束了。
附带不需要的TE文件内容:
########################################
# sepolicy rules for copy_apps
########################################
type copy_apps, domain;
type copy_apps_exec, exec_type, vendor_file_type, file_type;
domain_auto_trans(init, copy_apps_exec, copy_apps);------代码都用这个,没有去管它什么意思
#init_daemon_domain(copy_apps);-------------网上都用这个
#allow copy_apps sysfs:file { read open };
如果是要加独立te的方式,那device/qcom/sepolicy/common/file_contexts的修改要换成自己的te:
/vendor/bin/copy_apps.sh u:object_r:copy_apps_exec:s0
这样会报很多avc权限问题,自己log打印有很多,但是apk还是正常拷贝过去了,~~
题外话:
正常的服务启动是要加te文件,因为有很多权限,针对log报什么avc就加对应的权限文件
下面有关别人的解说拷贝转载:供TE添加参考:
没有定义SELinux domain,导致服务xxx无法自启动。为了解决这个问题我们按如下方式修改或添加sepolicy文件:
修改seplicy/file_contexts文件,添加以下内容:
/system/bin/xxx u:object_r:xxx_exec:s01
新增xxx.te文件,并在其中添加如下内容:
需要为新增的进程增加域、执行权限 type xxx, domain; type xxx_exec, exec_type, file_type; 然后启用这个域 init_daemon_domain(xxx)
相关文章推荐
- Android 高通代码预制apk可卸载,恢复出厂设置apk可恢复 Android M 6.0
- Android 高通代码预制apk可卸载,恢复出厂设置apk可恢复
- Android高通预置apk可卸载,恢复出厂设置可恢复
- Android-如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?
- 如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?
- android 代码实现手机自动恢复出厂设置不需要权限
- 如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?
- Android 8.0接收通知后会手机崩溃,闪屏,恢复出厂设置的解决方法
- android 不打开Shared sdcard功能,内置SD卡中预制资源,删除资源,恢复出厂设置恢复
- android高通平台调用恢复出厂设置的方法
- 预置APK使用户可以卸载,并且恢复出厂设置时能够恢复
- android 恢复出厂设置代码流程(Good!)
- Android如何将第三方预装的AP安装在data/app下面,用户可以选择卸载,但是在用户恢复出厂设置后,会再次自动安装
- Android如何将第三方预装的AP安装在data/app下面,用户可以选择卸载,但是在用户恢复出厂设置后,会再次自动安装
- MTK android6.0 如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复
- Android 8.0恢复出厂设置
- android启动:app_process实现恢复出厂设置可恢复的apk预置
- Android代码实现APK文件的安装与卸载
- Android 恢复出厂设置后,时间不能恢复为:2013年1月1日
- 简单分析一下Android恢复出厂设置的流程