Android 要求所有 APK 在安装到设备或更新之前都必须使用证书进行数字签名。当使用 Android App Bundle 发布时,您需要使用上传密钥签署您的应用 Bundle,然后才能将其上传到 Play 管理中心,其余签名过程由 Play 应用签名处理。对于通过 Play 商店或其他商店分发 APK 的应用,您必须手动签署您的 APK 以进行上传。
本页面将引导您了解与应用签名和安全性相关的一些重要概念、如何使用 Android Studio 为发布到 Google Play 的应用签名,以及如何配置 Play 应用签名。
以下是您可能需要为新应用签名并发布到 Google Play 所需执行的步骤概览:
如果您的应用已使用现有应用签名密钥发布到 Google Play 商店,或者您希望为新应用选择应用签名密钥而不是由 Google 生成,请按照以下步骤操作:
- 使用应用的签名密钥签署您的应用。
- 将应用的签名密钥上传到 Play 应用签名。
- (推荐)为应用的未来更新生成并注册上传证书
- 将您的应用上传到 Google Play
- 准备并发布您的应用版本
本页面还将探讨如何管理您自己的密钥,以便将应用上传到其他应用商店。如果您不使用 Android Studio,或者希望从命令行签署应用,请了解如何使用 apksigner
。
Play 应用签名
借助 Play 应用签名,Google 会为您管理和保护您应用的签名密钥,并使用它来签署您的 APK 以进行分发。而且,由于应用 Bundle 将构建和签署 APK 的过程推迟到 Google Play 商店,因此您需要在上传应用 Bundle 之前配置 Play 应用签名。这样做可让您受益于以下方面:
- 使用 Android App Bundle 并支持 Google Play 的高级分发模式。Android App Bundle 可显著减小应用大小,简化发布流程,并可使用功能模块和提供即时体验。
- 提高签名密钥的安全性,并允许使用单独的上传密钥来签署您上传到 Google Play 的应用 Bundle。
密钥升级允许您在现有密钥泄露或需要迁移到加密强度更高的密钥时更改应用签名密钥。
Play 应用签名使用两个密钥:应用签名密钥和上传密钥,这两者在关于密钥和密钥库的部分中有更详细的描述。您保管上传密钥,并使用它来签署您的应用以上传到 Google Play 商店。Google 使用上传证书验证您的身份,并使用您的应用签名密钥签署您的 APK(如图 1 所示)进行分发。通过使用单独的上传密钥,如果您的密钥丢失或泄露,您可以请求重置上传密钥。
相比之下,对于未选择使用 Play 应用签名的应用,如果您丢失了应用的签名密钥,您将无法更新您的应用。
图 1. 使用 Play 应用签名签署应用
您的密钥存储在 Google 用于存储其自身密钥的相同基础设施上,并通过 Google 的密钥管理服务进行保护。您可以通过阅读Google Cloud 安全白皮书了解更多关于 Google 技术基础设施的信息。
当您使用 Play 应用签名时,如果您丢失了上传密钥,或密钥被泄露,您可以在 Play 管理中心请求重置上传密钥。由于您的应用签名密钥受 Google 保护,即使您更改了上传密钥,您也可以继续上传新版本的应用作为原始应用的更新。要了解更多信息,请阅读重置丢失或泄露的私有上传密钥。
下一节将介绍与应用签名和安全性相关的一些重要术语和概念。如果您想跳过并直接了解如何准备应用以上传到 Google Play 商店,请转到为发布签署您的应用。
密钥库、密钥和证书
Java 密钥库(.jks
或 .keystore
)是二进制文件,用作证书和私钥的存储库。
公钥证书(.der
或 .pem
文件),也称为数字证书或身份证书,包含公钥/私钥对的公钥,以及一些识别持有对应私钥的所有者的其他元数据(例如,名称和位置)。
以下是您应了解的不同类型的密钥:
- 应用签名密钥:用于签署安装在用户设备上的 APK 的密钥。作为 Android 安全更新模型的一部分,签名密钥在应用生命周期内永不更改。应用签名密钥是私有的,必须保密。但是,您可以共享使用应用签名密钥生成的证书。
上传密钥:在您将其上传到 Google Play 进行应用签名之前,用于签署应用 Bundle 或 APK 的密钥。您必须对上传密钥保密。但是,您可以共享使用上传密钥生成的证书。您可以通过以下方式之一生成上传密钥:
- 如果您选择在选择加入时让 Google 为您生成应用签名密钥,则您用于发布应用签名的密钥将被指定为您的上传密钥。
- 如果您在选择加入新应用或现有应用时向 Google 提供应用签名密钥,则您可以在选择加入期间或之后选择生成新的上传密钥,以提高安全性。
- 如果您不生成新的上传密钥,您将继续使用您的应用签名密钥作为上传密钥来签署每个版本。
提示:为了确保密钥安全,建议确保您的应用签名密钥和上传密钥不同。
与 API 提供商合作
您可以从 Play 管理中心的发布 > 设置 > 应用签名页面下载应用签名密钥和上传密钥的证书。这用于向 API 提供商注册公钥;它旨在共享,因为它不包含您的私钥。
证书指纹是证书的简短而唯一的表示,API 提供商通常会将其与软件包名称一起请求,以注册应用使用其服务。上传和应用签名证书的 MD5、SHA-1 和 SHA-256 指纹可在 Play 管理中心的应用签名页面找到。其他指纹也可以通过从同一页面下载原始证书(.der
)来计算。
签署调试构建版本
当您从 IDE 运行或调试项目时,Android Studio 会自动使用 Android SDK 工具生成的调试证书签署您的应用。当您首次在 Android Studio 中运行或调试项目时,IDE 会自动在 $HOME/.android/debug.keystore
中创建调试密钥库和证书,并设置密钥库和密钥密码。
由于调试证书是由构建工具创建的,并且在设计上不安全,因此大多数应用商店(包括 Google Play 商店)不接受使用调试证书签名的应用进行发布。
Android Studio 会自动将您的调试签名信息存储在签名配置中,这样您在每次调试时都不必输入。签名配置是一个包含签署应用所需所有信息的对象,包括密钥库位置、密钥库密码、密钥名称和密钥密码。
有关如何构建和运行应用以进行调试的更多信息,请参阅构建和运行您的应用。
调试证书的有效期
用于签署您的调试应用的自签名证书的有效期自创建之日起为 30 年。当证书过期时,您会收到构建错误。
要解决此问题,只需删除存储在以下位置之一的 debug.keystore
文件:
- OS X 和 Linux 上的
~/.android/
- Windows XP 上的
C:\Documents and Settings\user\.android\
- Windows Vista 和 Windows 7、8、10 上的
C:\Users\user\.android\
下次您构建并运行应用的调试版本时,Android Studio 会重新生成一个新的密钥库和调试密钥。
为发布到 Google Play 签署您的应用
当您准备发布您的应用时,您需要签署您的应用并将其上传到应用商店,例如 Google Play。首次将您的应用发布到 Google Play 时,您还必须配置 Play 应用签名。对于在 2021 年 8 月之前创建的应用,Play 应用签名是可选的。本节将向您展示如何正确地为发布签署您的应用并配置 Play 应用签名。
生成上传密钥和密钥库
如果您还没有上传密钥(在配置 Play 应用签名时很有用),您可以按照以下步骤使用 Android Studio 生成一个:
- 在菜单栏中,点击 Build > Generate Signed Bundle/APK。
- 在生成签名 Bundle 或 APK 对话框中,选择Android App Bundle或APK,然后点击下一步。
- 在密钥库路径字段下方,点击创建新密钥库。
在新建密钥库窗口中,提供您的密钥库和密钥的以下信息,如图 2 所示。
图 2. 在 Android Studio 中创建新的上传密钥和密钥库。
密钥库
- 密钥库路径:选择应创建密钥库的位置。此外,应在位置路径末尾添加文件名称,并使用
.jks
扩展名。 - 密码:为您的密钥库创建并确认一个安全密码。
- 密钥库路径:选择应创建密钥库的位置。此外,应在位置路径末尾添加文件名称,并使用
密钥
- 别名:为您的密钥输入一个识别名称。
- 密码:为您的密钥创建并确认一个安全密码。此密码应与您的密钥库密码相同。(请参阅已知问题了解更多信息)
- 有效期(年):设置密钥的有效时长(年)。您的密钥应至少有效 25 年,以便您可以在应用的整个生命周期内使用同一密钥签署应用更新。
- 证书:为您的证书输入一些关于您自己的信息。此信息不会显示在您的应用中,但会作为 APK 的一部分包含在您的证书中。
填写完表单后,点击确定。
如果您想使用上传密钥构建并签署您的应用,请继续阅读有关如何使用上传密钥签署您的应用的部分。如果您只想生成密钥和密钥库,请点击取消。
使用您的密钥签署您的应用
如果您已经有上传密钥,请使用它来签署您的应用。如果您的应用已使用现有应用签名密钥签署并发布到 Google Play 商店,则使用该密钥签署您的应用。您以后可以向 Google Play 生成并注册一个单独的上传密钥,以便签署和上传应用的后续更新。
要使用 Android Studio 签署您的应用,请按照以下步骤操作:
- 如果您当前没有打开生成签名 Bundle 或 APK 对话框,请点击构建 > 生成签名 Bundle/APK。
- 在生成签名 Bundle 或 APK 对话框中,选择Android App Bundle或APK,然后点击下一步。
- 从下拉列表中选择一个模块。
指定您的密钥库路径、密钥别名,并输入两者的密码。如果您尚未准备好上传密钥库和密钥,请先生成上传密钥和密钥库,然后再返回完成此步骤。
图 3. 使用上传密钥签署您的应用。
点击下一步。
在下一个窗口(如图 4 所示)中,为您的签名应用选择一个目标文件夹,选择构建类型,并在适用情况下选择产品变种。
如果您正在构建和签署 APK,您需要选择您的应用要支持哪些签名版本。要了解更多信息,请阅读有关应用签名方案的信息。
点击创建。

图 5. 点击弹出窗口中的链接以分析或定位您的应用 Bundle。
Android Studio 完成构建签名应用后,您可以通过点击弹出通知中的相应选项来定位或分析您的应用,如图 5 所示。
现在您已准备好选择加入 Play 应用签名并上传您的应用进行发布。如果您是应用发布流程的新手,您可能希望阅读发布概览。否则,请继续阅读有关如何将您的应用上传到 Play 管理中心的页面。
使用 Play 应用签名
如本页面前文所述,配置Play 应用签名是签署您的应用以便通过 Google Play 分发所必需的(2021 年 8 月之前创建的应用除外,这些应用可以继续分发自签名 APK)。您需要采取的步骤取决于您的应用是否尚未发布到 Google Play,或者您的应用是否已签名并于 2021 年 8 月之前使用现有应用签名密钥发布。
配置新应用
要为尚未发布到 Google Play 的应用配置签名,请按以下步骤操作:
- 如果您尚未执行此操作,请生成上传密钥并使用该上传密钥签署您的应用。
- 登录您的Play 管理中心。
- 按照步骤准备并发布您的版本以创建新版本。
- 选择发布轨道后,在应用签名部分下配置应用签名,如下所示:
- 要让 Google Play 为您生成应用签名密钥并使用它来签署您的应用,您无需执行任何操作。您用于签署第一个版本的密钥将成为您的上传密钥,您应该使用它来签署未来的版本。
- 要使用开发者帐号中其他应用的相同密钥,请选择更改应用签名密钥 > 使用此帐号中的其他应用的相同密钥,选择一个应用,然后点击继续。
- 要提供您自己的签名密钥供 Google 在签署您的应用时使用,请选择更改应用签名密钥并选择其中一个导出并上传选项,该选项允许您安全地上传私钥及其公钥证书。
在名为应用 Bundle 的部分中,点击浏览文件以查找并上传您使用上传密钥签名的应用。有关发布应用的更多信息,请参阅准备并发布您的版本。在配置 Play 应用签名后发布应用时,Google Play 会为您生成(除非您上传现有密钥)并管理您的应用的签名密钥。只需在将应用上传到 Google Play 之前,使用应用的上传密钥签署应用的后续更新即可。
如果您需要为应用创建新的上传密钥,请转到有关如何重置丢失或泄露的私有上传密钥的部分。
选择加入现有应用
如果您正在更新已使用现有应用签名密钥发布到 Google Play 的应用,您可以按如下方式选择加入 Play 应用签名:
- 登录您的Play 管理中心并导航到您的应用。
- 在左侧菜单中,点击发布 > 设置 > 应用签名。
- 如果适用,请查看服务条款并选择接受。
- 选择最能描述您要上传到 Google Play 的签名密钥的选项之一,并按照显示的说明进行操作。例如,如果您正在使用 Java 密钥库作为签名密钥,请选择从 Java 密钥库上传新的应用签名密钥,然后按照说明下载并运行 PEPK 工具,并上传包含加密密钥的生成文件。
- 点击注册。
现在您应该会看到一个页面,其中包含您应用签名和上传证书的详细信息。Google Play 现在会在将您的应用部署给用户时使用您现有的密钥签署您的应用。然而,Play 应用签名最重要的好处之一是能够将您用于签署上传到 Google Play 的工件的密钥与 Google Play 用于签署您的应用以分发给用户的密钥分开。因此,请考虑按照下一节中的步骤生成并注册一个单独的上传密钥。
生成并注册上传证书
当您发布一个未通过上传密钥签名的应用时,Google Play 管理中心提供了一个选项,允许您注册一个上传密钥,用于应用的未来更新。尽管这是可选步骤,但建议您使用一个与 Google Play 用于向用户分发应用的密钥不同的密钥来发布您的应用。这样,Google 可以确保您的签名密钥安全,并且您可以选择重置丢失或泄露的私有上传密钥。本节描述了如何创建上传密钥、从中生成上传证书,以及如何将该证书注册到 Google Play 以供您的应用未来更新。
以下描述了您会在 Play 管理中心看到注册上传证书选项的情况:
- 当您发布一个使用签名密钥签署的新应用并选择加入 Play 应用签名时。
- 当您即将发布一个已选择加入 Play 应用签名但使用其签名密钥签署的现有应用时。
如果您未发布已选择加入 Play 应用签名的现有应用的更新,并且您想注册上传证书,请完成以下步骤,然后继续阅读有关如何重置丢失或泄露的私有上传密钥的部分。
如果您尚未执行此操作,请生成上传密钥和密钥库。
创建上传密钥和密钥库后,您需要使用keytool
从上传密钥生成一个公钥证书,命令如下:
$ keytool -export -rfc -keystore your-upload-keystore.jks -alias upload-alias -file output_upload_certificate.pem
现在您有了上传证书,请在 Play 管理中心提示时或重置上传密钥时将其注册到 Google。
升级您的应用签名密钥
在某些情况下,您可能希望更改应用的签名密钥。例如,因为您想要一个加密强度更高的密钥,或者您的签名密钥已被泄露。然而,由于用户只能在更新使用相同签名密钥签名的情况下更新您的应用,因此很难更改已发布应用的签名密钥。
如果您将应用发布到 Google Play,您可以通过 Play 管理中心升级已发布应用的签名密钥——您的新密钥将用于在 Android 13 及更高版本上签署安装和应用更新,而旧的应用签名密钥将用于签署早期 Android 版本用户的更新。
要了解更多信息,请阅读升级您的应用签名密钥。
重置丢失或泄露的私有上传密钥
如果您丢失了私有上传密钥或您的私钥已泄露,您可以创建一个新的密钥,并在 Play 管理中心请求重置上传密钥。
配置构建过程以自动签署您的应用
在 Android Studio 中,您可以通过创建签名配置并将其分配给发布构建类型,从而配置项目在构建过程中自动签署应用的发布版本。签名配置包括密钥库位置、密钥库密码、密钥别名和密钥密码。要使用 Android Studio 创建签名配置并将其分配给您的发布构建类型,请完成以下步骤:
- 在项目窗口中,右键点击您的应用,然后点击打开模块设置。
- 在项目结构窗口中,左侧面板的模块下,点击您要签署的模块。
- 点击签名标签页,然后点击添加
。
-
选择您的密钥库文件,为此签名配置输入一个名称(因为您可能会创建多个),然后输入所需信息。
图 7. 创建新签名配置的窗口。
- 点击构建类型标签页。
- 点击release构建。
-
在签名配置下,选择您刚刚创建的签名配置。
图 8. 在 Android Studio 中选择签名配置。
- 点击确定。
现在,每次您在 Android Studio 中通过选择构建 > 构建 Bundle(s) / APK(s) 下的选项来构建您的发布构建类型时,IDE 都将使用您指定的签名配置自动签署您的应用。您可以在您正在构建的模块的项目目录内的 build/outputs/
目录中找到您签名的 APK 或应用 Bundle。
当您创建签名配置时,您的签名信息会以纯文本形式包含在 Gradle 构建文件中。如果您在团队中工作或公开共享您的代码,您应该通过将其从构建文件中删除并单独存储来保护您的签名信息。您可以阅读更多关于如何从构建文件中删除签名信息的信息,请参阅从构建文件中删除签名信息。有关如何保护您的签名信息的更多信息,请参阅下面的保护您的密钥。
区分签署每个产品变种
如果您的应用使用产品变种,并且您希望对每个变种进行不同签名,您可以创建额外的签名配置并按变种分配它们:
- 在项目窗口中,右键点击您的应用,然后点击打开模块设置。
- 在项目结构窗口中,左侧面板的模块下,点击您要签署的模块。
- 点击签名标签页,然后点击添加
。
-
选择您的密钥库文件,为此签名配置输入一个名称(因为您可能会创建多个),然后输入所需信息。
图 10. 创建新签名配置的窗口。
- 必要时重复步骤 3 和 4,直到您创建了所有签名配置。
- 点击变种标签页。
- 点击您要配置的变种,然后从签名配置下拉菜单中选择相应的签名配置。
图 11. 按产品变种配置签名设置。
重复此操作以配置任何其他产品变种。
- 点击确定。
您还可以在 Gradle 配置文件中指定签名设置。有关更多信息,请参阅配置签名设置。
运行签名报告
要获取应用的每个变体的签名信息,请在 Android Studio 中运行 Gradle signingReport
任务:
- 选择视图 > 工具窗口 > Gradle 以打开 Gradle 工具窗口
- 选择您的应用 > 任务 > android > signingReport 以运行报告
管理您自己的签名密钥
如果您选择不加入 Play 应用签名(仅适用于 2021 年 8 月之前创建的应用),您可以管理您自己的应用签名密钥和密钥库。请记住,您有责任保护密钥和密钥库。此外,您的应用将无法支持 Android App Bundle、Play Feature Delivery 和 Play Asset Delivery。
当您准备创建自己的密钥和密钥库时,请务必首先为您的密钥库选择一个强密码,并为密钥库中存储的每个私钥选择一个单独的强密码。您必须将您的密钥库保存在安全的地方。如果您丢失了对应用签名密钥的访问权限或您的密钥被泄露,Google 无法为您找回应用签名密钥,并且您将无法作为原始应用的更新向用户发布新版本的应用。有关更多信息,请参阅下面的保护您的密钥。
如果您管理自己的应用签名密钥和密钥库,当您签署 APK 时,您将使用您的应用签名密钥在本地签署它,并将签署后的 APK 直接上传到 Google Play 商店进行分发,如图 12 所示。
图 12. 管理自己的应用签名密钥时签署应用
当您使用Play 应用签名时,Google 会保护您的签名密钥,并确保您的应用在整个生命周期内正确签名并能够接收更新。但是,如果您决定自行管理应用签名密钥,则应牢记以下几点注意事项。
签名注意事项
您应该在应用预期生命周期内使用相同的证书签署您的应用。有几个原因您应该这样做:
- 应用升级:当系统安装应用更新时,它会将新版本中的证书与现有版本中的证书进行比较。如果证书匹配,系统将允许更新。如果您使用不同的证书签署新版本,则必须为应用分配不同的软件包名称——在这种情况下,用户将新版本作为全新的应用安装。
- 应用模块化:如果应用提出请求,Android 允许由相同证书签名的 APK 在同一进程中运行,以便系统将它们视为单个应用。通过这种方式,您可以将应用以模块形式部署,并且用户可以独立更新每个模块。
- 通过权限共享代码/数据:Android 提供基于签名的权限强制执行,以便应用可以将功能暴露给使用指定证书签名的另一个应用。通过使用相同证书签署多个 APK 并使用基于签名的权限检查,您的应用可以安全地共享代码和数据。
如果您计划支持应用的升级,请确保您的应用签名密钥的有效期超过该应用的预期生命周期。建议有效期为 25 年或更长。当您的密钥有效期过期时,用户将无法再无缝升级到您的应用的新版本。
如果您计划在 Google Play 上发布您的应用,您用于签署应用的密钥的有效期必须在 2033 年 10 月 22 日之后。Google Play 强制执行此要求,以确保用户在有新版本可用时可以无缝升级应用。
保护您的密钥安全
如果您选择自行管理和保护您的应用签名密钥和密钥库(而不是选择加入Play 应用签名),那么保护您的应用签名密钥对您和用户都至关重要。如果您允许他人使用您的密钥,或者将您的密钥库和密码留在不安全的位置,导致第三方可以找到并使用它们,您的创作身份和用户的信任都会受到损害。
如果第三方在您不知情或未经您允许的情况下设法获取您的应用签名密钥,该人可能会签署和分发恶意替换您的正版应用或损坏它们的应用程序。这样的人也可能以您的身份签署和分发攻击其他应用或系统本身、或损坏或窃取用户数据的应用。
您的私钥是签署应用所有未来版本所必需的。如果您丢失或放错了密钥,您将无法发布现有应用的更新。您无法重新生成以前生成的密钥。
作为开发者实体,您的声誉取决于您始终妥善保护您的应用签名密钥,直到密钥过期。以下是一些保护密钥的提示:
- 为密钥库和密钥选择强密码。
- 不要将您的私钥给予或借给任何人,也不要让未经授权的人知道您的密钥库和密钥密码。
- 将包含私钥的密钥库文件保存在安全的地方。
总的来说,如果您在生成、使用和存储密钥时遵循常识性预防措施,它将保持安全。
从构建文件中删除签名信息
当您创建签名配置时,Android Studio 会将您的签名信息以纯文本形式添加到模块的 build.gradle
文件中。如果您与团队合作或开源您的代码,您应该将此敏感信息移出构建文件,以便其他人不容易访问。为此,您应该创建一个单独的属性文件来存储安全信息,并在构建文件中引用该文件,如下所示:
- 创建一个签名配置,并将其分配给一个或多个构建类型。这些说明假设您已为发布构建类型配置了单个签名配置,如上文配置构建过程以自动签署您的应用中所述。
- 在项目的根目录中创建一个名为
keystore.properties
的文件。此文件应包含您的签名信息,如下所示:storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
- 在模块的
build.gradle
文件中,在android {}
块之前添加代码以加载您的keystore.properties
文件。Groovy
... // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. def keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. def keystoreProperties = new Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { ... }
Kotlin
... import java.util.Properties import java.io.FileInputStream // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. val keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. val keystoreProperties = Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(FileInputStream(keystorePropertiesFile)) android { ... }
注意:您可以选择将您的
keystore.properties
文件存储在另一个位置(例如,在模块文件夹中而不是项目的根文件夹中,或者如果您正在使用持续集成工具,则存储在您的构建服务器上)。在这种情况下,您应该修改上述代码以使用您的实际keystore.properties
文件位置正确初始化keystorePropertiesFile
。 - 您可以使用语法
keystoreProperties['propertyName']
引用存储在keystoreProperties
中的属性。修改模块的build.gradle
文件的signingConfigs
块,以使用此语法引用存储在keystoreProperties
中的签名信息。Groovy
android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
Kotlin
android { signingConfigs { create("config") { keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } ... }
- 打开构建变体工具窗口,并确保选择了发布构建类型。
- 在构建 > 构建 Bundle(s) / APK(s) 下选择一个选项,以构建发布构建版本的 APK 或应用 Bundle。您应该在模块的
build/outputs/
目录中看到构建输出。
由于您的构建文件不再包含敏感信息,您现在可以将其包含在源代码管理中或上传到共享代码库。请务必保护 keystore.properties
文件的安全。这可能包括将其从您的源代码控制系统中移除。