美文网首页
使用 gradle 干掉 Android 敏感权限

使用 gradle 干掉 Android 敏感权限

作者: 李云龙_ | 来源:发表于2020-01-19 17:18 被阅读0次

    应国家网安部要求,应用不能收集用户无关的权限,否则会被请去喝茶,但是自己的 AndroidManifest.xml 里的权限好改,但是引用的第三方库中的权限就不好改了,解决方案如下:

    1. 查看功能清单文件

    打开 AndroidManifest.xml 左下角有 Merged Manifest 选项,在里边选择某行 <uses-permission 标签可以看到合并自哪个第三方库

    2. 使用 gradle 去掉敏感权限

    在 app 的 build.gradle (不是 project 的 build.gradle) 中添加如下代码:

    project.afterEvaluate {
        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('android.permission.READ_CONTACTS','android.permission.INTERNET' )
                    manifestContent = manifestContent.replace('android.permission.WRITE_SETTINGS','android.permission.INTERNET' )
                    manifestContent = manifestContent.replace('android.permission.READ_PHONE_STATE','android.permission.INTERNET' )
                    manifestContent = manifestContent.replace('android.permission.ACCESS_WIFI_STATE','android.permission.INTERNET' )
                    manifestContent = manifestContent.replace('android.permission.READ_LOGS','android.permission.INTERNET' )
                    manifestContent = manifestContent.replace('android.permission.ACCESS_FINE_LOCATION','android.permission.INTERNET' )
                    manifestContent = manifestContent.replace('android.permission.ACCESS_COARSE_LOCATION','android.permission.INTERNET' )
                    manifestContent = manifestContent.replace('android.permission.VIBRATE','' )
                    file(manifestPath).write(manifestContent)
                }
            }
        }
    }
    

    3. 查看是否删除敏感权限成功

    AssembleRelease 打包后在手机上安装时可以查看有权限详情,如果有敏感权限则重复第2步

    4. 注意

    都 replace 称 INTERNET 是为了防止替换为空导致 appt 解析错误而无法传到应用市场

    相关文章

      网友评论

          本文标题:使用 gradle 干掉 Android 敏感权限

          本文链接:https://www.haomeiwen.com/subject/ygnrzctx.html