如何更改已在 Play 商店中发布的应用程序的签名密钥?是否有另一种有效的 contentProvider 替代方案? [英] How to change the signing key of an app already published on play store? Is there another efficient alternative to contentProvider?

查看:80
本文介绍了如何更改已在 Play 商店中发布的应用程序的签名密钥?是否有另一种有效的 contentProvider 替代方案?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了与那个问题完全相同的问题:java.lang.SecurityException: Permission Denial: opening provider when implementation content provider

I had exactly the same issue like in that question: java.lang.SecurityException: Permission Denial: opening provider when implement content provider

我已经解决了它:@CommonsWare 的答案

他说的地方:

App B 与 App A 具有相同的 元素,并且 App A 和 App B 都使用相同的签名密钥进行签名

App B has identical <permission> elements as App A and both App A and App B are signed by the same signing key

但是在生成我的应用程序的应用程序包时,我忘记使用相同的签名密钥对它们进行签名

But When generating the app bundles of my applications, I have forgotten to sign them with the same signing key

根据我所做的研究:

一旦应用程序上架,就无法更改应用程序的演唱键.

It is not possible to change the singing key of an application once it is on play store.

我的实际问题:

我最近在 Play 商店中放置了两个具有相同 元素的应用.当我首先从 Play 商店安装应用程序 A 时,我将无法安装应用程序 B.当我第一次从 Play 商店安装应用程序 B 时,我将无法安装应用程序 A.我的一个应用程序不是可以在我先安装其他应用时安装.

I have recently put two apps on play store which have the same <permission> element. When I install first the app A from play store, I will not be able to install the app B. When I first install the app B from play store, I will not be able to install the app A. One of my apps is not able to install when I install the other app first.

根据@commonware 的回答:

According to @commonware answer:

您需要从 Play 商店中删除这两个应用之一,然后提交带有新申请 ID 的替代品,该 ID 由申请人签名与其他送货应用相同的签名密钥.

you would need to remove one of the two apps from the Play Store and submit a replacement, with a new application ID, that is signed by the same signing key as the other shipping app.

但我不想更改这两个应用程序中任何一个的应用程序 ID

But I don't want to change the application ID of any of these two applications

知道如何解决这个问题吗?

Any idea about how to solve that issue?

除了 ContentProvider 之外,还有其他有效的替代方法可以在同一作者的两个应用程序之间共享数据吗?

Is there any other efficient alternative to ContentProvider to share data between two applications of the same author?

推荐答案

可以为 Play 商店中已有的应用更改唱歌键.但它现在有一些主要的缺点,这些缺点将在几年内消失.它仅适用于运行 Android 9 及更高版本的设备.所以你的 mindSkdVersion 必须是 28+.这称为密钥轮换,它是 APK 签名方案 v3 的一部分.请参阅此链接.

It's possible to change singing key for app already in Play Store. But it has now major disadvantage which will be gone in few years. It will be working only on devices running Android 9 and above. So your mindSkdVersion has to be 28+. It's called key rotation and it's part of APK Signature Scheme v3. See this link.

此外,除了信任相同的签名密钥之外,我不知道如何在两个应用程序之间 100% 安全地更改数据.不太安全的方法是仅依赖于已知的 applicationId(刚刚通过com.myapp.someaction"发送 Intent)攻击者当然可以使用和旁加载应用程序或使用其他分发.更难破解的方法是直接使用 Android IPC/AIDL.

Also I don't know other way how to 100% securely change data between two apps than trust same signing keys. Less secure way is only to depend on known applicationId (just sent Intent with "com.myapp.someaction") which attacker can of course use and sideload app or use other distribution. Bit harder way to break can be usage of Android IPC / AIDL directly.

这篇关于如何更改已在 Play 商店中发布的应用程序的签名密钥?是否有另一种有效的 contentProvider 替代方案?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆