applicationId显示占位符,表示多个构建版本无法正常工作

时间:2016-09-01 18:26:45

标签: android gradle android-manifest buildconfig manifest-merging

我正在修改当前的android项目,因此它可以安装在同一设备上,用于多种口味并构建配置。

的build.gradle:

=Choose(RowNumber(Nothing),"#ffff33","#aaaa66", "#333399")

的AndroidManifest.xml

{
    // ...
    defaultConfig {
        applicationId "com.myapp"
        manifestPlaceholders = [
            manifestApplicationId: "${applicationId}",
            onesignal_app_id: "xxxx",
            onesignal_google_project_number: "xxxx"
        ]
    // ...
    }

    productFlavors {
        production {
            applicationId "com.myapp"
            // ...
        }

        dev {
            applicationId "com.myapp.dev"
            // ...
        }

        // ...
    }

    buildTypes {
        release {
            // ...
        }

        debug {
            applicationIdSuffix ".debug"
            // ...
        }
    }

    // ...
}

当我编译相同风格的调试版和发行版时,我收到错误消息:

...

INSTALL_FAILED_DUPLICATE_PERMISSION

烫发= com.myapp.permission.C2D_MESSAGE

PKG = com.myapp.dev

...

manifestApplicationId占位符来自OneSignal库上的AndroidManifest.xml,如https://documentation.onesignal.com/docs/android-sdk-setup

所示

有人知道如何解决这个问题吗?谢谢。

1 个答案:

答案 0 :(得分:12)

OneSignal要求将manifestPlaceholders密钥manifestApplicationId设置为您的applicationId(您的包名称为AKA)。

这可以通过在buildTypes中设置,如下所示。

buildTypes {
   debug {
      defaultConfig {
         manifestPlaceholders = [manifestApplicationId          : "${applicationId}",
                                 onesignal_app_id               : "11111111-1111-1111-1111-111111111111",
                                 onesignal_google_project_number: "111111111"]
       }
   }

   release {
      defaultConfig {
         manifestPlaceholders = [manifestApplicationId          : "${applicationId}",
                                 onesignal_app_id               : "22222222-2222-2222-2222-222222222222",
                                 onesignal_google_project_number: "222222222"]
      }
   }
}

更新:3.3.0及更新的OneSignal SDK不再需要manifestApplicationId