实用Gradle-过滤权限

 

概述

       最近遇到一个问题,公司因为合规的要求需要将app申请的权限收紧,对于不必要的权限下架。但是项目中因为用到了很多第三方库,库里面有定义一大堆权限,所以没办法简单的删删减减来解决这个问题。

 

实现

println("---------------开始过滤无用权限申请-----------------")

def filterPermissions = []

//filterPermissions.add("android.permission.CAMERA")//照相机权限
filterPermissions.add("android.permission.SEND_SMS")//发送短信
filterPermissions.add("android.permission.WRITE_SMS")//写入消息
filterPermissions.add("android.permission.RECEIVE_SMS")//接手短信
filterPermissions.add("android.permission.READ_CONTACTS")//读取联系人
filterPermissions.add("android.permission.RECEIVE_MMS")//接收彩信
filterPermissions.add("android.permission.SEND_MMS")//发送彩信
//filterPermissions.add("android.permission.CALL_PHONE")//拨打电话权限
filterPermissions.add("android.permission.READ_SMS")//读取短信权限
filterPermissions.add("android.permission.READ_CALL_LOG")//读取通话记录
filterPermissions.add("android.permission.WRITE_CALL_LOG")//写入通话记录
//filterPermissions.add("android.permission.ACCESS_FINE_LOCATION")//定位权限
//filterPermissions.add("android.permission.RECORD_AUDIO")//录音权限

filterPermissions.add("android.permission.BLUETOOTH")//蓝牙权限
filterPermissions.add("android.permission.BLUETOOTH_ADMIN")//开启蓝牙权限

//filterPermissions.add("android.permission.ACCESS_LOCATION_EXTRA_COMMANDS")//模拟位置权限

//filterPermissions.add("android.permission.ACCESS_COARSE_LOCATION")//初略定位权限

//filterPermissions.add("android.permission.READ_PHONE_STATE")//读取手机信息权限

filterPermissions.add("android.permission.AUTHENTICATE_ACCOUNTS")//访问手机账户
filterPermissions.add("android.permission.GET_ACCOUNTS")//访问手机账户


filterPermissions.add("android.permission.WRITE_SETTINGS")//系统设置权限
filterPermissions.add("android.permission.CHANGE_WIFI_STATE")//打开wifi
//filterPermissions.add("android.permission.WAKE_LOCK")//锁屏权限


filterPermissions.add("android.permission.SYSTEM_ALERT_WINDOW")//后台弹出界面




project.afterEvaluate {
    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.processResources.doFirst { pm->
                String manifestPath = output.processResources.manifestFile
                def manifestContent = file(manifestPath).getText()
                filterPermissions.each {
                    manifestContent = manifestContent.replace(it+"\"", '\"')
                }
                file(manifestPath).write(manifestContent)
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/long8313002/article/details/108408923