为发布应用做准备

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

测试任务就是做最终检查,有助于确保您的应用能在实际环境下正常运行。Firebase 通过 Firebase Test Lab 提供了大量实体和虚拟测试设备,您可以使用它们来提升应用质量。

完成发布应用所需的准备工作之后,您将获得一个已签名的 APK 文件。您可以直接将该文件分发给用户,也可以通过 Google Play 等应用市场进行分发。

本文总结了您在准备应用以进行发布时需执行的几大任务。本页介绍的任务适用于所有 Android 应用,无论它们是通过何种方式发布或分发给用户。如果您要通过 Google Play 发布应用,请参阅胸有成竹地发布应用

注意:在您执行本文所述任务之前,最好确保您的应用符合针对功能、性能和稳定性的所有发布标准。

显示准备流程与开发流程的衔接

图 1. 准备发布是一项必须完成的开发任务,也是发布流程中的第一步。

发布前的准备工作

为了向用户发布应用,您需要先创建可供发布的软件包,以供用户在其 Android 设备上安装和运行。可供发布的软件包与调试 APK 文件中包含的组件相同(经过编译的源代码、资源、清单文件等),使用的构建工具也相同。不过,与调试 APK 文件不同,可供发布的 APK 文件已使用您自己的证书签名且使用 zipalign 工具进行了优化。

显示您在准备应用以进行发布时需要执行的五项任务

图 2. 您在准备应用以进行发布时需要执行五大任务。

如果您是使用 Android Studio 构建您的应用,签名和优化任务通常可以无缝完成。例如,您可以将 Android Studio 与 Gradle build 文件搭配使用,一次性完成应用的编译、签名和优化。从命令行构建时,您也可以通过配置 Gradle build 文件来实现相同目的。如需详细了解如何使用 Gradle build 文件,请参阅配置 build

如需准备应用以进行发布,您通常需要执行五大任务,如图 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)。最终用户许可协议可帮助保护您的员工、组织和知识产权,因此我们建议您为自己的应用提供一份。

其他材料

您可能还需要准备宣传和营销材料来推广您的应用。例如,如果您要在 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
        ...
      }
    }
    ...
  }

启用和配置应用缩减

通过为发布 build 启用缩减功能,以下许多优化都可以自动执行。例如,您可以添加 ProGuard 规则来移除日志语句,这样缩减器便会识别和移除未使用的代码和资源。缩减器还可以用更短的名称替换类和变量名称,以进一步缩减 DEX 大小。

关闭日志记录功能

在构建应用以进行发布之前,请禁用日志记录功能。如需禁用日志记录功能,您可以在源文件中移除对 Log 方法的调用。此外,请移除您在项目中创建的所有日志文件或静态测试文件。

您还可移除您添加到代码中的所有 Debug 跟踪调用,例如 startMethodTracing()stopMethodTracing() 方法调用。

重要提示:调试功能允许用户使用 Chrome 开发者工具注入脚本和提取内容,因此如果您使用 WebView 展示付费内容或如果您使用 JavaScript 界面,请确保为应用停用调试功能。如需停用调试功能,请使用 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 上发布应用,还可以设置另外几个 build 文件元素。例如,minSdktargetSdk 属性,它们位于应用的模块级 build.gradlebuild.gradle.kts 文件中。如需详细了解这些设置以及其他 Google Play 设置,请参阅 Google Play 上的过滤器

解决兼容性问题

Android 提供了多种工具和技术,可让您的应用与各种设备兼容。为了使您的应用可供尽可能多的用户使用,不妨考虑执行以下操作:

添加对多种屏幕配置的支持。
确保您遵循支持多种屏幕的最佳实践。通过支持多种屏幕配置,您创建的应用可在 Android 支持的任何屏幕尺寸的设备上正常运行且拥有精美外观。
针对较大显示屏的设备优化您的应用。
您可以对应用进行优化,使其能够在平板电脑和可折叠设备等大显示屏设备上良好运行。例如,列表详情布局可以提高应用在较大屏幕上的易用性。
考虑使用 Jetpack 库。
Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳实践、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码。

更新服务器和服务的网址

如果您的应用需要访问远程服务器或服务,请确保您使用的是该服务器或服务的生产网址或路径,而非测试网址或路径。

实现 Google Play 许可服务

如果您要通过 Google Play 发布付费应用,不妨考虑添加对 Google Play 许可服务的支持。借助这项许可服务,您可以根据当前用户的购买情况控制其对您应用的访问权限。使用 Google Play 许可服务并不是强制的,即使您通过 Google Play 发布应用也可以不使用这项服务。

如需详细了解 Google Play 许可服务以及如何在应用中使用该服务,请参阅应用许可

构建应用以进行发布

在完成应用的配置后,您可以将其构建为经过签名和优化的可供发布的 APK 文件。JDK 中包含用于为 APK 文件签名的工具(Keytool 和 Jarsigner);Android SDK 中包含用于编译和优化 APK 文件的工具。如果您使用的是 Android Studio 或是从命令行使用 Gradle 构建系统,可以自动执行整个构建流程。如需详细了解如何配置 Gradle build,请参阅配置 build 变体

如果您使用的是持续集成系统,则可以将任务配置为自动执行发布流程。这并不仅限于构建发布版 APK 或 AAB 文件。您还可以将其配置为自动将 build 工件上传到 Play 管理中心。

使用 Android Studio 进行构建

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

构建流程假设您有适合为应用签名的证书和私钥。如果您没有合适的证书和私钥,Android Studio 可帮您生成一个。如需详细了解签名流程,请参阅为应用签名

准备外部服务器和资源

如果您的应用依赖于远程服务器,请确保该服务器是安全的且已经过配置,随时可投入实际使用。如果您要在应用中实现应用内购结算而且要在远程服务器上执行签名验证步骤,这一点尤为重要。

此外,如果您的应用从远程服务器或实时服务(如内容 Feed)获取内容,请确保您提供的内容是最新的且随时可投入实际使用。

测试应用以进行发布

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

在测试之前,请先参阅核心应用质量。当您完成测试并确定应用的发布版本能正常运行后,就可以向用户发布您的应用了。如需了解详情,请参阅向用户发布应用