android - 使用 Gradle 覆盖 GCM 权限包前缀

标签 android gradle android-gradle-plugin

我有一个 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/

相关文章:

Android Studio 从存储库导入 aar 文件使依赖项消失

php - 如何在Android中获取长文本类型的数据?

android - WorkManager Data.Builder 不支持 Parcelable

Android - 如何在 JNI C 代码中获取已安装的包

android - Android Studio 和 Eclipse 开发调试的区别

在 Gradle 构建完成之前显示 Android Studio 的设备选择器

java - Intellij gradle 5.0 刷新/同步警告和根任务丢失

android - Gradle 看不到产品 flavor 。我怎样才能添加它们?

android - 无法使用 Gradle 将 ViewPagerIndicator 添加到应用程序

macos - Android Studio OS X : Gradle seems to have no connection to jcenter (?)