gpt4 book ai didi

发布和调试apks之间的Android L权限冲突

转载 作者:可可西里 更新时间:2023-11-01 18:57:49 26 4
gpt4 key购买 nike

我已经升级到 Android L,并且在“Google play”中有我的应用的发布版本和我们用于开发的调试版本。

它们使用不同的 key 签名。

我的问题是我安装了“Google play”版本,然后当我尝试安装调试版本时,它的定义如下:

debug {
debuggable true
packageNameSuffix ".debug"
buildConfigField BOOLEAN, IS_DEV, TRUE
}

这是我收到的错误:

Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.app.name.permission.C2D_MESSAGE pkg=com.app.name]

这是有问题的权限:

<permission
android:name="com.app.name.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>

<uses-permission android:name="com.app.name.permission.C2D_MESSAGE"/>

我知道 ( http://commonsware.com/blog/2014/08/04/custom-permission-vulnerability-l-developer-preview.html) 以及这是由于安全问题而创建的事实,但我仍然需要能够与每个拥有自己的调试签名 key 的团队合作。

我尝试使用 adb uninstall ( https://stackoverflow.com/a/27090838/2746924 ) 进行卸载,并且尝试清除设备上的所有应用缓存。

最佳答案

我可以同时拥有 debugrelease通过修改 list 以使用占位符,同时安装在同一 Android 5.0 Nexus 9 上的 GCM 客户端应用程序的多个版本:

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

请注意,您还应该使用 ${applicationId}在你的<receiver>对于 <category> :

    <receiver
android:name="GCMBroadcastReceiverCompat"
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>

(坦率地说,我不相信自定义 <permission> 甚至还需要,因为我尝试删除它并且仍然可以接收 GCM 消息)

如果您随后定义 build.gradle正如你所拥有的,带有applicationIdSuffix对于其中一种构建类型(例如 debug ),您将获得按构建类型划分的单独自定义权限,并且您将能够并排安装它们。

关于发布和调试apks之间的Android L权限冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27154990/

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