先说原理,安卓为系统应用留有特权,当应用作为系统应用运行或者拥有系统签名时可以获得一些比较大的权限,比如静默安装。

要满足以上效果,可以有两种做法:

一种是直接把应用用编译进系统,你可以直接拿编译系统时的签名给应用重新签名一遍,然后系统就会自动把权限授予这个应用。

当然,这么做的话,一些会检测签名的应用就会出问题,各种闪退。
所以编译时我们一般不会这么做,而是使用应用本来的签名,然后让编译系统自己配置权限声明,也能实现同样的效果。

当然,自己编译系统对于大多数来说都不现实,所以才有了这篇教程。

至于为啥要发在这俩系统板块里,还不是因为原生系统没有自带应用商店。

除了像酷安这样少部分支持使用root调用pm命令的,大部分还得自己手动安装。而且,随着现在各大软件对于root的检测,为了这点便利然后和一大帮应用斗智斗勇,还可能引发安全问题,感觉有些得不偿失。索性,咱也不要root了。

不过,因为涉及到对系统的修改,咱还是需要临时root一下的。

建议直接刷入修补的boot,完事后再刷回原始的boot。

下面正式开搞:

一、所需的东西:

一部有root的手机,
mt管理器
一个支持“android.permission.INSTALL_PACKAGES”权限的应用商店,我这里用的华为应用商店,其它的自测,可以在安装包里的AndroidManifest.xml中找。

把你的应用放到“/system/priv-app”里

第二步,配置权限声明

用mt管理器打开

/system/etc/permissions/这个路径

图片

新建xml文件

<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <!-- Compatibility for upgrades from old package name -->
    <privapp-permissions package="com.huawei.appmarket">
        <permission name="android.permission.ALLOCATE_AGGRESSIVE"/>
        <permission name="android.permission.DELETE_PACKAGES"/>
        <permission name="android.permission.INSTALL_PACKAGES"/>
        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
        <permission name="android.permission.MANAGE_USERS"/>
        <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <permission name="android.permission.PACKAGE_USAGE_STATS"/>
        <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
        <permission name="android.permission.REAL_GET_TASKS"/>
        <permission name="android.permission.STOP_APP_SWITCHES"/>
        <permission name="android.permission.WRITE_APN_SETTINGS"/>
        <permission name="android.permission.WRITE_MEDIA_STORAGE"/>
        <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
    </privapp-permissions>
</permissions>

注意把package=引号里面的内容换成你想用的应用商店的包名。

**** Tips:因为谷歌的安全政策,你需要把该应用所有的权限都声明一遍,由于在编译时有脚本会自动帮你生成,这里由于要手动配置,不然会卡开机. ****

然后就是xml的格式问题,注意开头和结尾,一定要有始有终。

完事后保存退出,然后重启你的手机。

这时候,你会发现应用商店不再需要申请权限,而是直接静默安装,即便移除root后也是如此。

关于移除root,

重刷原来的boot.img即可。

Q.E.D.