如何在本地创建签名与我在 Playstore 上的应用兼容的 APK(使用 Google 的应用签名)?

     2023-04-18     274

关键词:

【中文标题】如何在本地创建签名与我在 Playstore 上的应用兼容的 APK(使用 Google 的应用签名)?【英文标题】:How can I create my APK locally which has signature compatible with my app on Playstore (which uses Google's app signing)? 【发布时间】:2019-05-18 04:28:31 【问题描述】:

我为我的应用启用了 Google 应用签名。 我创建了一个 APK 并使用我的密钥库文件对其进行签名并将其上传到 devConsole。然后,Google 使用 Google 的应用签名再次对 APK 进行签名,然后将其发送给 Playstore 上的用户。

    我从 Playstore 下载并安装了 APK(其中包含 Google 的应用签名签名)。 我从 devConsole 下载了应用签名证书 -> 应用签名 -> 应用签名证书 我使用以下命令将证书添加到我当前的密钥库文件中:

keytool -importcert -file [app_signing_certificate] -keystore [current_keystore_file]

    我使用步骤 3 中生成的新密钥库创建了发布 APK 现在,当我尝试将这个新 APK 升级到从 Playstore 安装的 APK 上时,出现错误。

失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE: 包 xyz 签名与以前安装的不匹配 版本;无视!]

我想知道需要做什么才能在本地创建一个与从 Playstore 下载的签名匹配的 APK。

【问题讨论】:

【参考方案1】:

你做不到。对于 Google Play 应用签名,只有 Google 可以为 APK 签名。

正如the help pages 所说:

证书:证书包含公钥以及一些关于谁拥有该密钥的额外标识信息。

您从 Google 获得的应用签名证书只是可用于验证签名的公钥信息。它不允许您签署应用程序。当您将其添加到您的密钥库时,您就可以进行验证。

这并不意味着你被卡住了。为什么需要自己签名?

如果只是为了使用服务器端 API,那么大多数 API 会允许您添加多个签名,并且您可以使用您的开发密钥以及授权的 Google 密钥 如果是这样,您可以在开发过程中快速迭代,这可以使用 Google Play Internal Test tracks 完成,这样您就可以非常快速地将内部测试版本发送给开发人员或 QA。

【讨论】:

感谢您的详细回复。 @Nick Fortescue 考虑一个用户在我们的 2 路签名构建(从 Playstore 安装)上的场景。用户面临一些需要在该设备上进行代码级调试的问题。所以我们必须让用户调试构建(但不卸载以前的构建)一种方法是使用“debuggable true”在本地创建构建。但是根据您的上述回答,我们无法在本地创建具有相同签名的 APK。另一种方法是从 Playstore 下载派生的 APK,但 Playstore 不允许上传调试版本。在这种情况下我们能做什么? 是的,这很棘手。从根本上说,Google play 不想让用户调试 APK,因为这会使他们处于危险之中。我可以看到两个选项:1)通过日志语句进行调试,并让用户进入内部测试轨道。 2)如果太严重需要调试,备份用户本地存储,卸载播放版本,重新安装可调试版本。两者都不理想,但您几乎不应该处于需要向生产用户提供可调试 APK 的情况。【参考方案2】:

您需要 Google 提供的实际签名密钥。我不认为你能得到,所以你不能。

【讨论】:

正确。将 Google Play 应用签名与不同的上传密钥库一起使用的目标之一是不在您的计算机上放置密钥库。对于本地开发,您应该使用调试密钥进行测试。当您想测试某个版本时,可以使用 Play 管理中心中的测试轨道。 @Gabe Sechan 当我将“应用程序签名证书”(我从 devConsole -> 应用程序签名获得)添加到我的密钥库文件时,这并不等同于 Google 的实际签名?两者有什么区别?

签名证书在本地不受信任[重复](代码片段)

...浏览https://127.0.0.1:9000,我会看到'绿色'连接。你能解释我如何在本地测试这个证书吗?我希望在本地浏览器中看到“绿色”连接。答案您的证书未针对127.0.0.1签名,而是针对FQDN(域名,例如example.com)签名。编辑您的主机文件(... 查看详情

如何使 `pip search` 与我的本地 pypi 服务器一起工作?

】如何使`pipsearch`与我的本地pypi服务器一起工作?【英文标题】:HowcanImake`pipsearch`workwithmylocalpypiserver?【发布时间】:2018-01-2307:27:05【问题描述】:我有一堆与互联网隔离的机器,只能访问本地网络上的一些服务。我希望使用这... 查看详情

如何创建本地存储库并上传到 GitHub 上的存储库?

】如何创建本地存储库并上传到GitHub上的存储库?【英文标题】:HowtocreatealocalrepositoryanduploadtorepositoryonGitHub?【发布时间】:2014-03-2317:22:12【问题描述】:我刚开始使用GitHub,我只是在寻找简单直接的步骤,将我本地计算机上的... 查看详情

已发布的应用在 google play 上显示不同的签名

...oogleplay【发布时间】:2020-09-2314:12:02【问题描述】:我在Playstore上通过其他人的帐户托管了一个应用。我通过playstore进行了更新,它成功了。现在我通过直接从手机(而不是从Playstore)安装apk以覆盖版本2来检查第三个版本,它... 查看详情

谷歌登录不适用于 Play Store 上的生产 apk。(在 Playstore 上发布 apk)

】谷歌登录不适用于PlayStore上的生产apk。(在Playstore上发布apk)【英文标题】:googlesigninnotworkingwithproductionapkonplaystore.(releaseapkonplaystore)【发布时间】:2017-03-1306:00:21【问题描述】:实际上谷歌登录在调试模式下工作,但是当我... 查看详情

加固后,上传playstore,在googleplaystore下载应用安装后,打开签名校验失败

在GooglePlayConsole.(GooglePlayAppSigning )签署您的应用在创建应用时:会有个“ GooglePlayAppSigning”的东西,提示使用。这个东西会有两个密钥:应用签名密钥和上传密钥当您准备发布应用时,使用上传密钥签署您的应用并... 查看详情

如何在mac上的“邮件”中创建和使用电子邮件签名?

参考技术A在发邮件的时候,除了邮件正文中的内容以外,我们还希望在邮件中添加上自己的签名。您可以创建准备好的文本,称为签名,以包括在发送的电子邮件中。例如,您可以为工作电子邮件创建一个签名,为个人电子邮... 查看详情

如何从本地创建的文件夹中加载 WebView 上的网页?

】如何从本地创建的文件夹中加载WebView上的网页?【英文标题】:HowtoloadawebpageonWebViewfromlocally-createdfolder?【发布时间】:2017-01-1711:42:02【问题描述】:使用Android-Studio,我正在尝试使用WebView加载包含javascript的本地html文件强>... 查看详情

如何在 Chrome 信任的本地 Windows 虚拟主机开发机器上创建/安装自签名 SSL 证书? [复制]

】如何在Chrome信任的本地Windows虚拟主机开发机器上创建/安装自签名SSL证书?[复制]【英文标题】:HowdoIcreate/installself-signedSSLcertonlocalWindowsvirtualhostdevmachinethatChromewilltrust?[duplicate]【发布时间】:2017-10-2611:00:09【问题描述】:正如... 查看详情

如何在 OSX 环境中访问本地网络上的网站

】如何在OSX环境中访问本地网络上的网站【英文标题】:HowcanIaccessawebsiteonaLocalNetworkinanOSXenvironment【发布时间】:2017-05-0814:45:15【问题描述】:所以我有一个在本地创建的网站,但我想让其他团队成员访问它。我还想使用我的iPh... 查看详情

我的应用与 Google Playstore 上的 Nexus 7 不兼容

】我的应用与GooglePlaystore上的Nexus7不兼容【英文标题】:MyAppisn\'tCompatiblewithNexus7onGooglePlaystore【发布时间】:2013-10-1606:53:32【问题描述】:您好,我已向Playstore提交了一个应用,但它与Nexus不兼容,这是我的清单我的应用在GoogleP... 查看详情

与我的团队成员共享本地主机

...机上开发的网站。我们都在家庭网络上连接,我们不知道如何相互 查看详情

将应用上传到 Playstore 后谷歌地图不显示

】将应用上传到Playstore后谷歌地图不显示【英文标题】:Googlemapsnotshowingafteruploadingtheapptoplaystore【发布时间】:2018-02-2118:48:00【问题描述】:将应用上传到Playstore后,Google地图显示空白屏幕。但是地图在本地运行时显示(在模拟... 查看详情

如何在bitrise中获取本地路径

】如何在bitrise中获取本地路径【英文标题】:Howtogetlocalpathinbitrise【发布时间】:2021-07-1313:01:52【问题描述】:我在bitrise中有一个iOS项目,我在其中设置了手动管理签名。所以我必须在bitrise代码签名部分提供我的证书。我将我... 查看详情

在 Windows 上为 localhost 创建自签名证书

...Localhost/xampp上的Web服务器那么我应该在域名上放什么?“本地主机”不起作用???我不 查看详情

Google 登录在 Playstore 中发布后无法正常工作

】Google登录在Playstore中发布后无法正常工作【英文标题】:GoogleSignInnotworkingafterpublishedinplaystore【发布时间】:2017-04-2303:08:33【问题描述】:在Play商店中发布之前,我的google标志工作正常。我在***中看到了一些问题,但没有一个... 查看详情

试图在 google colab 上创建与我的本地 mysql 数据库的连接

】试图在googlecolab上创建与我的本地mysql数据库的连接【英文标题】:tryingtocreateaconnectionwithmylocalmysqldatabaseongooglecolab【发布时间】:2021-11-0500:34:40【问题描述】:!pipinstallPyMySQL!pipinstallmysql-connector-pythonfromsqlalchemyimportcreate_enginee 查看详情

如何向 Playstore 提交 react-native android 应用程序?

】如何向Playstore提交react-nativeandroid应用程序?【英文标题】:HowdoIsubmitareact-nativeandroidapptotheplaystore?【发布时间】:2016-01-0400:44:33【问题描述】:我在任何facebook文档中都找不到这个。有没有人提交过他们用reactnative构建的android... 查看详情