【发布时间】:2016-07-11 13:05:51
【问题描述】:
我刚刚将一个应用从 Firebase 9.0.0 更新到 Firebase 9.0.2。 我使用消息 + 广告。
compile 'com.google.firebase:firebase-messaging:9.0.2'
compile "com.google.firebase:firebase-ads:9.0.2"
现在出现了很多不需要的权限
android:name="android.permission.READ_PHONE_STATE"
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
我没有在任何地方添加这些权限,因此它们必须来自 Firebase。 我知道我的客户不喜欢这些权限,所以我用
删除了它们<uses-permission
android:name="android.permission.READ_PHONE_STATE"
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" />
我的应用仍然有效,消息和广告仍然有效,但我仍然希望我的怀疑得到证实。
为什么 Firebase 会添加这些权限,真的可以像我一样删除它们吗?
【问题讨论】:
-
如果您构建的应用程序只有 firebase-messaging 或 firebase-ads,则这些权限不太可能是由 firebase 添加的。您能否确认当您使用 9.0.0 构建应用时,这些权限不存在,然后在您迁移到 9.0.2(现在是 9.2.1)时出现?
-
@ArthurThompson 我不能再用 9.0.0 构建了。这就是我更新依赖项的原因。当我使用 9.0.0 时,我得到“ java.lang.IncompatibleClassChangeError: The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' is expected to be of type virtual but相反被发现是直接类型('com.google.firebase.iid.zzg' 的声明......“。但我现在更改为 9.2.1,更新了构建工具和其他所有内容,现在它再次工作而不会崩溃并且多余的权限也消失了……
-
很高兴你把事情整理好了。 Firebase 永远不应添加这些权限。
-
我遇到了类似的问题。我已按如下方式添加 Firebase:编译 'com.google.firebase:firebase-core:9.6.0',编译 'com.google.firebase:firebase-ads:9.6.0',编译 'com.google.firebase: firebase-invites:9.6.0',编译 'com.google.firebase:firebase-messaging:9.6.0' 并添加 READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE、READ_PHONE_STATE、C2D_MESSAGE、RECEIVE 权限。然后我在清单中使用了 tools:node="remove" 并对问题进行了排序,但是删除库添加的权限似乎并不正确。还有什么建议吗?
标签: android permissions firebase admob firebase-cloud-messaging