使用后处理保证APK权限的彻底删除

在工作过程中,遇到过由于存在多余权限,导致APK无法过审的情况。直接删除、在manifest中配置,都无法解决问题。最后,通过干预打包时合并的最终manifest的方式解决了问题。

接下来,按照凶狠程度,介绍三个等级删除权限的方式:

直接删除

权限在自身的Manifest中调用了,直接删除掉即可

配置删除

权限在自身的Manifest中没有调用,但是打出来的包仍然存在。

这时,在Manifest中,配置权限属性为remove即可。以经常需要删除的存储相关权限为例:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove"/>

后处理

在进行到第二步之后,打出的包仍然存在这两个权限。很大可能性是工程引入的jar包中存在这两个权限。这时,就需要使用后处理的方式解决。

在工厂的build.gradle文件中的最下方,加入以下内容:

project.afterEvaluate {
    project.android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.processResources.doFirst { pm ->
                String manifestPath = output.processResources.manifestFile
                def manifestContent = file(manifestPath).getText()
                manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>', '')
                manifestContent = manifestContent.replace('<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>', '')
                println("manifestContent:" + manifestContent)
                file(manifestPath).write(manifestContent)
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值