三星Galaxy S8出现“INSTALL_FAILED_DUPLICATE_PERMISSION”错误

33
我正尝试从Android Studio第一次在我的新三星Galaxy S8上安装我的应用程序。然而,当我这样做时,我收到以下错误消息:
安装失败,并显示“Failed to finalize session : INSTALL_FAILED_DUPLICATE_PERMISSION: Package bbct.android attempting to redeclare permission bbct.android.lite.permission.READ already owned by com.samsung.android.bixby.agent.”
为什么Bixby拥有我的权限?更重要的是,我该如何解决这个问题?

“为什么Bixby拥有我的权限?”——这似乎是三星应用程序中一个奇怪的声明。下载Applications Info应用程序,看看是否可以找到com.samsung.android.bixby.agent的清单。根据错误,他们应该有一个<permission>元素,声明bbct.android.lite.permission.READ - CommonsWare
@CommonsWare应用程序信息显示com.samsung.android.bixby.agent确实具有bbct.android.lite.permission.READ权限。 - Code-Apprentice
@brandall 这只需要请求权限而不是声明权限吗? - Code-Apprentice
@brandall 请查看CommonsWare的评论和答案。Bixby Voice是三星设备上的OEM应用程序,类似于苹果的Siri。它声明了一个名为bbct.android.lite.permission.READ的权限,与我正在尝试声明的权限完全相同。看起来我将不得不更改我的权限名称。 - Code-Apprentice
是的,我完全明白!就我提供的链接(以及其中的链接)而言,我唯一能想到“他们”会这样声明的原因是为了在历史上自动授予Bixby对API<21的权限。这是一个可怕的错误/变通方法,@CommonsWare非常熟悉。 - brandall
显示剩余6条评论
2个回答

28

我启动了我的Galaxy S8手机,安装了应用程序信息应用,并找到了com.samsung.android.bixby.agent,它被列为“Bixby语音”。

不知道为什么,在他们的清单中,他们有一个<permission>元素,用于bbct.android.lite.permission.READ。这是我在该应用程序中看到的唯一的非com.samsung权限。

好消息是:三星知道你是谁!

坏消息是:你可能会受到相当大的影响。

除了切换到其他权限名称之外,您的应用程序将永远无法安装在Galaxy S8或任何其他配有此Bixby应用程序(以及运行Android 5.0+,尽管我认为Bixby仅适用于较新的设备)的三星设备上。在Android 5.0+上,除非两个应用程序使用相同的签名密钥进行签名,否则不能在同一设备上声明相同的权限,而您的应用程序显然没有使用相同的签名密钥。

(我很好奇这是怎么发生的—是否是这个应用程序?它是开源的吗?)


2
是的,那是我的应用程序。源代码位于GitHub上,网址为https://github.com/BaseballCardTracker/bbct。 - Code-Apprentice
3
他们的权限不是“签名”,也没有描述或标签。我不知道它为什么存在,看起来他们不可能抄袭你的代码。与此同时,我无法解释为什么该应用程序需要这个特定的权限名称,以及为什么它不在其标准的“com.samsung”命名空间中。 - CommonsWare
26
我的权限名称在这个Stack Overflow问题中展示。或许三星公司在实现Bixby的权限时借用了这段代码片段。 - Code-Apprentice

14

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接