我在AndroidManifest.xml中拥有的只有:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
将APK上传到开发者控制台后,它会添加两个新权限:
我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "net.perspiratron.ifpaprofile"
minSdkVersion 15
targetSdkVersion 22
versionCode 3
versionName "1.2"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// wearApp project(':wear')
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.google.android.gms:play-services-analytics:7.5.0'
compile 'com.google.android.gms:play-services-location:7.5.0'
compile 'com.jjoe64:graphview:4.0.0'
}
我添加的唯一内容是play-services-location。为什么这个库需要它?
答案 0 :(得分:16)
简短回答:我不相信play-services-location确实需要这些权限。它似乎也不需要android.permission.ACCESS_NETWORK_STATE
或android.permission.INTERNET
,它们也被添加。
更长的回答: 看看我的清单合并日志,似乎所有这四个权限都包含在play-services-maps的请求中,-location是自己链接的。我的应用程序不使用-maps,只需使用-location。
此外,我发现此行为只出现在play-services-location的7.5.0版本中;以前的版本没有包含-maps,也没有添加这些权限。
我实际上怀疑这种与play-services-maps的连接是偶然的,并且将在未来的GMS版本中删除。
跟进Mark Murphy(CommonsWare)提供的链接,您可以通过在清单中添加以下行来从您的应用中删除这些权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" tools:node="remove" />
<uses-permission android:name="android.permission.INTERNET" tools:node="remove" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
请注意,您的开场xmlns:tools="http://schemas.android.com/tools"
元素中还需要<manifest ... >
才能完成这些工作。通常的警告适用:我的应用程序在采取此步骤后工作正常,但是YMMV。
2015年9月10日更新:Mark Murphy(@commonsware)在他的博客上完成了an excellent writeup on this issue,包括讨论我的解决方案的风险。