准备应用发布

要准备应用发布,您需要配置、构建和测试应用的发布版本。配置任务涉及基本的代码清理和代码修改任务,有助于优化您的应用。构建过程类似于调试构建过程,可以使用 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/目录中查找不再使用的旧的可绘制文件、布局文件和值文件,并将其删除。
  • 检查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 Console。

使用 Android Studio 构建

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

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

准备外部服务器和资源

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

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

测试您的应用以供发布

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

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