我正在修改当前的 android 项目,以便它可以安装在同一设备上以实现多种风格和构建配置。
构建.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.xmlhttps://documentation.onesignal.com/docs/android-sdk-setup https://documentation.onesignal.com/docs/android-sdk-setup
有人知道如何解决这个问题吗?谢谢。
OneSignal 需要manifestPlaceholders
key manifestApplicationId
设置为您的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"]
}
}
}
Update 1:OneSignal-Android 3.3.0 不再需要manifestApplicationId
.
Update 2:OneSignal-Android 4.0.0 不再需要任何manifestPlaceholders
价值观。Instead OneSignal.setAppId(ONESIGNAL_APP_ID)需要在运行时调用 https://documentation.onesignal.com/docs/android-sdk-setup.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)