要准备您的应用以进行发布,您需要配置、构建和测试应用的发布版本。配置任务包括基本的代码清理和代码修改任务,有助于优化您的应用。构建过程类似于调试构建过程,可以使用 JDK 和 Android SDK 工具完成。
测试任务作为最终检查,有助于确保您的应用在现实条件下按预期执行。Firebase 通过 Firebase Test Lab 提供大量物理和虚拟测试设备,您可以使用这些设备来提高应用质量。
完成应用发布准备后,您将获得一个已签名的 APK 文件,您可以直接将其分发给用户,也可以通过应用市场(例如 Google Play)分发。
本文档总结了准备应用发布所需执行的主要任务。此页面上描述的任务适用于所有 Android 应用,无论它们如何发布或分发给用户。如果您通过 Google Play 发布应用,请阅读 自信发布。
注意:最佳实践是,确保您的应用在执行此页面上概述的任务之前满足您所有关于功能、性能和稳定性的发布标准。
准备发布的任务
要将您的应用发布给用户,您需要创建一个用户可以在其 Android 设备上安装和运行的随时可发布的软件包。随时可发布的软件包包含与调试 APK 文件相同的组件——已编译的源代码、资源、清单文件等——并使用相同的构建工具构建。但是,与调试 APK 文件不同,随时可发布的 APK 文件已使用您自己的证书签名,并已使用 zipalign
工具进行优化。
如果您使用 Android Studio 构建应用,则签名和优化任务通常是无缝的。例如,您可以将 Android Studio 与 Gradle 构建文件一起使用,一次性编译、签名和优化您的应用。您还可以配置 Gradle 构建文件,以便在从命令行构建时执行相同的操作。有关使用 Gradle 构建文件的更多详细信息,请参阅 配置您的构建。
要准备您的应用以进行发布,您通常需要执行五个主要任务,如图 2 所示。每个主要任务可能包含一个或多个较小的任务,具体取决于您发布应用的方式。例如,如果您通过 Google Play 发布应用,您可能希望在配置应用以进行发布时向清单添加特殊的筛选规则。同样,为了满足 Google Play 发布准则,您可能需要准备屏幕截图并在收集发布材料时创建宣传文案。
您通常在彻底调试和测试应用后执行图 2 中列出的任务。Android SDK 包含多个工具,可帮助您测试和调试 Android 应用。有关更多信息,请参阅 调试您的应用 和 测试您的应用。
收集材料和资源
要准备您的应用以进行发布,您需要收集多个辅助项目。至少包括用于签署应用的加密密钥和应用图标。您可能还想包含最终用户许可协议。
加密密钥
Android 要求所有 APK 在安装在设备上或更新之前都必须使用证书进行数字签名。对于 Google Play 商店,2021 年 8 月之后创建的所有应用都必须使用 Play 应用签名。但是,将您的 AAB 上传到 Play 管理中心仍然需要您使用您的开发者证书对其进行签名。较旧的应用仍然可以自行签名,但是无论您使用的是 Play 应用签名还是自行签名,都必须在上传应用之前对其进行签名。
要了解证书要求,请参阅 签署您的应用。
重要提示:您的应用必须使用有效期在 2033 年 10 月 22 日之后结束的加密密钥进行签名。
如果您的应用访问服务或使用需要您使用基于您的私钥的密钥的第三方库,您可能还需要获取其他发布密钥。
应用图标
您的应用图标可帮助用户在设备的主屏幕和启动器窗口中识别您的应用。它还会出现在“管理应用”、“我的下载”和其他地方。此外,Google Play 等发布服务会将您的图标显示给用户。请确保您拥有应用图标,并且它符合推荐的 图标指南。
注意:如果您在 Google Play 上发布应用,则需要创建高分辨率版本的图标。有关更多信息,请参阅 添加预览资源以展示您的应用。
最终用户许可协议
考虑为您的应用准备最终用户许可协议 (EULA)。EULA 有助于保护您的个人、组织和知识产权,我们建议您随应用一起提供 EULA。
其他材料
您可能还需要准备宣传和营销材料来宣传您的应用。例如,如果您在 Google Play 上发布应用,则需要准备一些宣传文案,并且需要创建应用的屏幕截图。有关更多信息,请参阅 添加预览资源以展示您的应用。
配置您的应用以进行发布
收集所有辅助材料后,您可以开始配置应用以进行发布。本节总结了我们在发布应用之前建议您对源代码、资源文件和应用清单进行的配置更改。
尽管本节中列出的大多数配置更改是可选的,但它们被认为是良好的编码实践,我们鼓励您实施这些更改。在某些情况下,您可能已经在开发过程中进行了这些配置更改。
选择合适的应用程序 ID
确保您选择的应用程序 ID 在应用的整个生命周期中都适用。分发应用给用户后,您无法更改应用程序 ID。要设置它,请在模块级 build.gradle
或 build.gradle.kts
文件中使用 applicationId
属性。有关更多信息,请参阅 设置应用程序 ID。
关闭调试
要配置 APK 是否可调试,请对 Groovy 使用debuggable
标志,对 Kotlin 脚本使用 isDebuggable
标志。
Kotlin
android { ... buildTypes { release { isDebuggable = false ... } debug { isDebuggable = true ... } } ... }
Groovy
android { ... buildTypes { release { debuggable false ... } debug { debuggable true ... } } ... }
启用并配置应用缩减
通过为您的发布版本启用 缩减,可以自动执行许多以下优化。例如,您可以添加 ProGuard 规则以删除日志语句,缩减器将识别并删除未使用的代码和资源。缩减器还可以将类和变量名称替换为较短的名称,以进一步减小 DEX 大小。
关闭日志记录
在构建应用以进行发布之前停用日志记录。您可以通过删除源文件中对 Log
方法的调用来停用日志记录。此外,请删除项目中创建的任何日志文件或静态测试文件。
此外,请删除添加到代码中的所有 Debug
追踪调用,例如 startMethodTracing()
和 stopMethodTracing()
方法调用。
重要提示:如果使用 WebView
显示付费内容或使用 JavaScript 接口,请确保禁用应用的调试功能,因为调试允许用户使用 Chrome DevTools 注入脚本并提取内容。要禁用调试,请使用 WebView.setWebContentsDebuggingEnabled()
方法。
清理项目目录
清理您的项目,并确保它符合 项目概述 中描述的目录结构。在项目中留下杂散文件或孤立文件可能会阻止应用编译,并导致应用行为不可预测。至少执行以下清理任务:
- 查看
cpp/
、lib/
和src/
目录的内容。cpp/
目录应仅包含与 Android NDK 关联的源文件,例如 C 或 C++ 源文件、头文件或 makefile。lib/
目录应仅包含第三方库文件或私有库文件,包括预构建的共享库和静态库。src/
目录应仅包含应用的源文件(Java、Kotlin 和 AIDL 文件)。src/
目录不应包含任何 JAR 文件。 - 检查您的项目中应用不使用的私有数据文件或专有数据文件,并将其删除。例如,在项目的
res/
目录中查找不再使用的旧的可绘制文件、布局文件和值文件,然后将其删除。 - 检查您的
lib/
目录中是否存在测试库,如果您的应用不再使用这些测试库,请将其删除。 - 查看
assets/
目录和res/raw/
目录的内容,查找需要在发布前更新或删除的原始资源文件和静态文件。
查看并更新清单和 Gradle 构建设置
验证以下清单和构建文件项目是否设置正确:
<uses-permission>
元素仅指定与您的应用相关且必需的权限。
android:icon
和android:label
属性您必须为这些属性指定值,这些属性位于
<application>
元素中。versionCode
和versionName
属性我们建议您为这些属性指定值,这些属性位于应用模块级的
build.gradle
或build.gradle.kts
文件中。有关更多信息,请参阅 为您的应用版本化。
如果您在 Google Play 上发布应用,则可以设置多个其他构建文件元素。例如,位于应用模块级 build.gradle
或 build.gradle.kts
文件中的 minSdk
和 targetSdk
属性。有关这些和其他 Google Play 设置的更多信息,请参阅 Google Play 上的筛选器。
解决兼容性问题
Android 提供多个工具和技术,可使您的应用与各种设备兼容。要使您的应用可供尽可能多的用户使用,请考虑执行以下操作:
- 添加对多个屏幕配置的支持。
- 确保您遵循支持多屏幕的最佳实践 支持多屏幕。通过支持多种屏幕配置,您可以创建一个在 Android 支持的任何屏幕尺寸上都能正常运行并外观良好的应用。
- 优化您的应用以适应更大的显示屏。
- 您可以优化您的应用,使其在平板电脑和折叠屏等大显示屏设备上运行良好。例如,列表-详情布局可以改善大屏幕上的可用性。
- 考虑使用 Jetpack 库。
- Jetpack 是一套库,可帮助开发者遵循最佳实践,减少样板代码,并编写可在不同 Android 版本和设备上始终如一地运行的代码。
更新服务器和服务的 URL
如果您的应用访问远程服务器或服务,请确保您使用的是服务器或服务的生产 URL 或路径,而不是测试 URL 或路径。
为 Google Play 实施许可
如果您通过 Google Play 发布付费应用,请考虑添加对 Google Play 许可的支持。许可让您可以根据当前用户是否已购买应用来控制对应用的访问。即使您通过 Google Play 发布应用,使用 Google Play 许可也是可选的。
有关 Google Play 许可服务以及如何在您的应用中使用它的更多信息,请参阅 应用许可。
构建您的应用以供发布
完成应用配置后,您可以将其构建成已签名并经过优化的可发布 APK 文件。JDK 包含用于签署 APK 文件的工具(Keytool 和 Jarsigner);Android SDK 包含用于编译和优化 APK 文件的工具。如果您使用的是 Android Studio 或从命令行使用 Gradle 构建系统,则可以自动化整个构建过程。有关配置 Gradle 构建的更多信息,请参阅 配置构建变体。
如果您使用的是 持续集成系统,您可以配置一个任务来自动化您的发布过程。这不仅限于构建您的发布 APK 或 AAB。您还可以将其配置为自动将构建工件上传到 Play Console。
使用 Android Studio 构建
您可以使用与 Android Studio 集成的 Gradle 构建系统,构建一个使用您的私钥签名并经过优化的可发布 APK 文件。要了解如何设置和运行 Android Studio 的构建,请参阅 构建和运行您的应用。
构建过程假设您拥有适合签署您的应用的证书和私钥。如果您没有合适的证书和私钥,Android Studio 可以帮助您生成一个。有关签名过程的更多信息,请参阅 签署您的应用。
准备外部服务器和资源
如果您的应用依赖于远程服务器,请确保服务器安全且已配置为生产使用。如果您在应用中实施 应用内结算 并在远程服务器上执行签名验证步骤,这一点尤其重要。
此外,如果您的应用从远程服务器或实时服务(例如内容提要)获取内容,请确保您提供的内容是最新的且已准备好投入生产。
测试您的应用以供发布
测试应用的发布版本有助于确保您的应用在真实的设备和网络条件下正常运行。理想情况下,您应该至少在一个手持设备和一个平板电脑设备上测试您的应用,以验证您的用户界面元素大小是否正确,以及您的应用的性能和电池效率是否可以接受。Firebase Test Lab 也可以用于在各种不同的设备和 Android 操作系统版本上进行测试。
作为测试的起点,请参阅 核心应用质量。完成测试并满意应用的发布版本行为正确后,您可以向用户发布您的应用。有关更多信息,请参阅 向用户发布您的应用。