我有一个 Gradle Android 项目,它有 4 种产品风格(每种都有自己独特的包名称)。 build.gradle
文件非常简单:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
// All dependencies here
// ...
}
android {
// Usual stuff goes here
productFlavors {
flav1 {
packageName 'com.company.flav1'
versionName calcVersion()
}
flav2 {
packageName 'com.company.flav2'
versionName calcVersion()
}
flav3 {
packageName 'com.company.flav3'
versionName calcVersion()
}
flav4 {
packageName 'com.company.flav4'
versionName calcVersion()
}
}
// Other configurations
// ...
}
一切顺利,所需资源已合并,等等。现在我正在尝试使用 GCM 实现推送通知功能。根据文档,我必须为我的应用声明一个权限,如下所示:
<permission android:name="com.company.flav.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.company.flav.permission.C2D_MESSAGE" />
但我对所有 4 个应用程序都使用了一个 list 文件(它们仅在应用程序资源和一些设置方面有所不同,它们位于 assets 文件夹中)。
所以我的问题是:如何为每种产品 flavor 覆盖这些权限?
最佳答案
我用过:
<permission android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
在 Android list 中 - 这似乎已正确解决。
关于android - 使用 Gradle 覆盖 GCM 权限包前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333696/