gpt4 book ai didi

android - 多个构建风格的 applicationId list 占位符不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:01 24 4
gpt4 key购买 nike

我正在修改当前的 android 项目,以便它可以安装在同一设备上以实现多种风格和构建配置。

build.gradle:

{
// ...
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"
// ...
}
}

// ...
}

AndroidManifest.xml:

<manifest ... >
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!-- ... -->

<receiver
android:name="com.onesignal.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>

<!-- ... -->
</manifest>

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

...

INSTALL_FAILED_DUPLICATE_PERMISSION

perm=com.myapp.permission.C2D_MESSAGE

pkg=com.myapp.dev

...

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

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

最佳答案

OneSignal 需要将 manifestPlaceholdersmanifestApplicationId 设置为您的 applicationId(也就是您的包名称)。

这可以通过在您的 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"]
}
}
}

更新 1:OneSignal-Android 3.3.0 不再需要 manifestApplicationId

更新 2:OneSignal-Android 4.0.0 不再需要任何 manifestPlaceholders 值。 Instead OneSignal.setAppId(ONESIGNAL_APP_ID) needs to be called at runtime .

关于android - 多个构建风格的 applicationId list 占位符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39278532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com