准备发布您的应用

要准备发布您的应用,您需要配置、构建并测试应用的发布版本。配置任务涉及基本的代码清理和代码修改任务,有助于优化您的应用。构建过程与调试构建过程类似,可以使用 JDK 和 Android SDK 工具完成。

测试任务作为最终检查,有助于确保您的应用在实际条件下按预期运行。Firebase 通过 Firebase Test Lab 提供大量物理和虚拟测试设备,您可以利用它们来提高应用质量。

完成应用发布准备后,您将获得一个已签名的 APK 文件,您可以将其直接分发给用户,或通过 Google Play 等应用市场分发。

本文档总结了您为应用发布需要执行的主要任务。本页描述的任务适用于所有 Android 应用,无论其发布或分发给用户的方式如何。如果您通过 Google Play 发布应用,请阅读 自信发布

注意:作为一项最佳实践,在执行本页概述的任务之前,请确保您的应用符合功能、性能和稳定性方面的所有发布标准。

Shows how the preparation process fits into the development process

图 1. 准备发布是一项必需的开发任务,也是发布过程的第一步。

发布准备任务

要向用户发布您的应用,您需要创建一个用户可以在 Android 设备上安装和运行的发布就绪软件包。发布就绪软件包包含与调试 APK 文件相同的组件(编译后的源代码、资源、清单文件等),并使用相同的构建工具构建。然而,与调试 APK 文件不同,发布就绪的 APK 文件使用您自己的证书进行签名,并使用 zipalign 工具进行了优化。

Shows the five tasks you perform to prepare your app for release

图 2. 应用发布准备有五项主要任务。

如果您使用 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 可以帮助保护您的个人、组织和知识产权,我们建议您在应用中提供一份。

其他材料

您可能还需要准备宣传和营销材料来推广您的应用。例如,如果您在 Google Play 上发布应用,您需要准备一些宣传文字,并且需要创建应用的屏幕截图。有关更多信息,请参阅 添加预览素材以展示您的应用

配置应用以供发布

收集完所有支持材料后,您可以开始配置您的应用以供发布。本节总结了我们建议您在发布应用之前对源代码、资源文件和应用清单进行的配置更改。

尽管本节列出的大多数配置更改是可选的,但它们被认为是良好的编码实践,我们鼓励您实施它们。在某些情况下,您可能已在开发过程中进行了这些配置更改。

选择合适的应用 ID

确保选择一个在应用生命周期内都适用的应用 ID。向用户分发应用后,您无法更改应用 ID。要进行设置,请在模块级的 build.gradlebuild.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/ 目录中查找您不再使用的旧 drawable 文件、布局文件和值文件,并将其删除。
  • 检查您的 lib/ 目录中是否有测试库,如果您的应用不再使用它们,请将其移除。
  • 检查您的 assets/ 目录和 res/raw/ 目录的内容,查找需要在发布前更新或移除的原始资产文件和静态文件。

审查和更新您的清单和 Gradle 构建设置

验证以下清单和构建文件项是否设置正确

  • <uses-permission> 元素

    仅指定与您的应用相关且必需的权限。

  • android:iconandroid:label 属性

    您必须为这些属性指定值,这些属性位于 <application> 元素中。

  • versionCodeversionName 属性

    我们建议您为这些属性指定值,这些属性位于应用模块级的 build.gradlebuild.gradle.kts 文件中。有关更多信息,请参阅 对您的应用进行版本控制

如果您要在 Google Play 上发布应用,可以设置一些额外的构建文件元素。例如,minSdktargetSdk 属性,它们位于应用模块级的 build.gradlebuild.gradle.kts 文件中。有关这些和其他 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 管理中心。

使用 Android Studio 构建

您可以使用与 Android Studio 集成的 Gradle 构建系统,构建一个使用您的私钥签名并优化的发布就绪 APK 文件。要了解如何从 Android Studio 设置和运行构建,请参阅 构建和运行您的应用

构建过程假定您拥有适合签名应用的证书和私钥。如果您没有合适的证书和私钥,Android Studio 可以帮助您生成一个。有关签名过程的更多信息,请参阅 签署您的应用

准备外部服务器和资源

如果您的应用依赖远程服务器,请确保服务器安全并已配置用于生产环境。如果您在应用中实施应用内结算并在远程服务器上执行签名验证步骤,这一点尤为重要。

此外,如果您的应用从远程服务器或实时服务(例如内容源)获取内容,请确保您提供的内容是最新的且已准备好投入生产。

测试您的应用以供发布

测试应用的发布版本有助于确保您的应用在实际设备和网络条件下正常运行。理想情况下,请在至少一个手持设备大小的设备和一个平板电脑大小的设备上测试您的应用,以验证您的用户界面元素尺寸正确,并且应用的性能和电池效率可接受。Firebase Test Lab 也可用于在各种不同设备和 Android 操作系统版本上进行测试。

作为测试的起点,请参阅 核心应用质量。完成测试并确认应用的发布版本行为正常后,您就可以向用户发布您的应用了。有关更多信息,请参阅 向用户发布您的应用