我收到此错误:
Permission name C2D_MESSAGE is not unique (appears in both my.packagename.permission.C2D_MESSAGE and my.packagename.acc.permission.C2D_MESSAGE) (Previous permission here)
在我的Android清单中:
<permission
android:name="my.packagename.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my.packagename.permission.C2D_MESSAGE" />
在将buildIdSuffix 添加到build.gradle中的一个风格后开始出现问题(乍一看似乎与它无关)。
的build.gradle:
flavorDimensions "type"
productFlavors {
acceptance {
dimension="type"
applicationIdSuffix ".acc"
versionNameSuffix "-acc"
}
production {
dimension="type"
applicationIdSuffix ""
versionNameSuffix ""
}
}
Application.java:
if (BuildConfig.DEBUG) {
GoogleAnalytics.getInstance(context).setDryRun(true);
} else {
setupGoogleAnalytics();
}
我已创建了 google-services.json 的副本。
我已将google-services.json添加到:
app\src\acceptance\google-services.json (fake numbers)
app\src\production\google-services.json
我在接受中为密钥设置了不同的虚假值。我不希望Google Analytics在验收版本中使用。所以我更喜欢不创建单独的google-services.json。这可能吗?
Simply removing清单中的权限 不适用于API&lt; 23.
答案 0 :(得分:1)
这看起来就像您使用的是最新的Firebase云消息传递(FCM)SDK,但保留了旧的GCM权限。 FCM SDK会在构建时自动将必要的权限注入清单。
根据迁移指南从您的清单中删除C2D_MESSAGE权限:https://developers.google.com/cloud-messaging/android/android-migrate-fcm
答案 1 :(得分:1)
将新的androidmanifest添加到:
应用\ SRC \验收\的AndroidManifest.xml
并添加“acc”前缀:
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!--this needs to be in there for API 23 and lower-->
<permission
android:name="my.packagename.acc.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my.packagename.acc.permission.C2D_MESSAGE" />
答案 2 :(得分:1)
当您尝试在同一设备上安装应用的调试版和发行版时,通常会发生此问题。
为了解决此错误,您尝试卸载并重新安装该应用。
关于文件AndroidManifest.xml中的源代码:
<permission
android:name="my.packagename.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="my.packagename.permission.C2D_MESSAGE" />
我认为你的许可是可以的。