Statistics Permission Plugin主要为了统计Android应用的权限。 经常遇到Android应用依赖许多模块(module)、依赖库(.aar),本插件的目的是分析权限是被哪个模块引入的及其必要性。
通过这个插件的开发,积累插件开发经验
由于Gradle官方不建议插件依赖过多三方库,所以就直接写到csv中
Gradle插件引入-新方式:
plugins {
id "io.github.jingtuo.permission" version "1.2"
}
Gradle插件引入-旧方式
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
//发布gradle的maven仓库, artifactId默认使用了当前工程名
//发布到本地仓库, 插件maven-publish根据publishing.publications.publication.artifactId生成一个发布包
//插件com.gradle.plugin-publish根据工程名生成一个publishing.publications.permissionPluginMarkerMaven
classpath "io.github.jingtuo:permission:1.2"
}
}
//应用之后,如果是Android Application/Library,会创建一个task: statistics工程名(App)Permission
apply plugin: "io.github.jingtuo.permission"
statisticsPermission {
//当前工程以及子工程的AndroidManifest.xml相对路径, 默认值: src/main/AndroidManifest.xml。
// (一般都应该在这里,现在应该没有用Eclipse开发Android的了吧)
androidManifestRelativePath = "src/main/AndroidManifest.xml"
//数据导出位置, 默认为当前工程目录
dataExportRelativePath = ""
}
Gradle maven仓库对插件id有要求, io.github.jingtuo需要有对应的域名https://jingtuo.github.io/
# 分析依赖库需要先通过build任务,将依赖库下载本地
./gradlew.bat build
# 执行统计任务
./gradlew.bat statisticsAppPermission
permission_name | user | user_type |
---|---|---|
android.permission.INTERNET | app | project |
android.permission.INTERNET | com.xxx:xxx:1.1 | library |
android.permission.CALL_PHONE用于直接呼叫号码。
使用代码: Intent.ACTION_CALL
//需要授权, 否则抛异常, 不支持直接呼叫紧急电话
startActivity(Intent(Intent.ACTION_CALL, Uri.parse("tel:手机号码")))
课外知识: ROLE_DIALER
替代方案:
//ACTION_DIAL也可以换成ACTION_VIEW
startActivity(Intent(Intent.ACTION_DIAL, Uri.parse("tel:手机号码")))
./gradlew.bat publishPermissionPublicationToLocalPlugin