准备发布

在向用户分发 Android 应用之前,您必须做好发布准备。对于所有 Android 应用,准备流程都是一项必须执行的开发任务,也是发布流程的第一步(请参见图 1)。

在准备要发布的应用时,须配置、构建和测试应用的发布版本。配置任务非常简单,包括基本的代码清理以及有助于优化应用的代码修改任务。此构建流程与调试构建流程相似,可使用 JDK 和 Android SDK 工具完成。测试任务可充当最终检查程序,确保您的应用在真实的条件下按预期运行。当您准备好要发布的应用时,您会有一个已签署的 APK 文件,您可以将其直接分发给用户或通过应用市场(如 Google Play)分发。

本文总结了您在进行应用发布准备时必须执行的主要任务。本文中描述的任务适用于所有 Android 应用,无论它们是通过何种方式发布或分发给用户。如果您通过 Google Play 发布应用,您还应阅读 Google Play 发布检查单,以确保可供发布的应用满足 Google Play 的所有要求。

:最佳做法是,在执行本文概要列出的任务前,确保您的应用满足针对功能、性能和稳定性的所有发布条件。
显示准备流程与开发流程的衔接
图 1. 发布准备是必须执行的一项开发任务,也是发布流程的第一步。

简介

要向用户发布您的应用,您需要创建一个可供发布的软件包,供用户在基于 Android 的设备上安装和运行。可供发布的软件包所包含的组件与调试 APK 文件(编译的源代码、资源、清单文件等)相同,所用的构建工具也相同。然而,与调试 APK 文件不同的是,可供发布的 APK 文件已使用您自己的证书签署,且已通过 zipalign 工具优化。

显示准备发布应用时您需要执行的五个任务
图 2. 准备发布应用时您需要执行五个主要任务。

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

要准备发布应用,您通常需要执行五个主要任务(请参见图 2)。每个主要任务都包含一个或多个小任务,具体取决于您如何发布应用。例如,如果您是通过 Google Play 发布您的应用,在配置要发布的应用时,您可能希望向您的清单中添加特殊过滤规则。同样,为遵循 Google Play 发布指南,在收集要发布的资料时,您可能必须准备屏幕截图,并创建宣传文字。

在全面调试和测试您的应用后,您通常要执行图 2 中列出的任务。Android SDK 包含多个工具,可帮助您测试和调试您的 Android 应用。如需了解详细信息,请参阅开发指南中的调试测试部分。

收集资料和资源

要开始进行应用发布准备,您需要收集多个支持项目。这至少要包括用于签署应用的加密密钥和一个应用图标。您还可能需要包括一个最终用户许可协议。

加密密钥

Android 系统要求每个已安装应用均须使用应用开发者所拥有的证书(即开发者持有其私钥的证书)进行数字签署。Android 系统使用此证书作为识别应用作者和确定应用之间信任关系的手段。您用于签署的证书不需要由证书颁发机构签署;Android 系统允许您使用自签署证书签署您的应用。要详细了解证书要求,请参阅签署您的应用

重要说明:您的应用必须使用一个有效期于 2033 年 10 月 22 日以后结束的加密密钥进行签署。

另外,如果您的应用访问某个服务或使用第三方库,而该服务或库要求您使用基于私钥的密钥,您可能还必须获取其他发布密钥。

应用图标

确保您有一个应用图标,且其符合建议的图标指南之相关要求。您的应用图标应帮助用户在设备的主屏幕和启动器窗口中识别您的应用。它还应显示在“Manage Applications”、“My Downloads”及其他位置。此外,Google Play 等发布服务可将您的图标显示给用户。

:如果您要在 Google Play 上发布应用,则需要创建一个高分辨率版本的应用图标。如需了解详细信息,请参阅应用的图形资源

最终用户许可协议

考虑为您的应用准备一个最终用户许可协议 (EULA)。EULA 有助于为个人、组织和知识产权提供保护,我们建议您为您的应用提供一个 EULA。

其他资料

您可能还需要准备宣传资料和营销资料来推广您的应用。例如,如果您要在 Google Play 上发布您的应用,则需要准备一些宣传文字,还需要创建应用的屏幕截图。如需了解详细信息,请参阅应用的图形资源

配置要发布的应用

在收集所有支持材料后,您可以开始配置要发布的应用。本部分总结了我们建议您在发布应用之前对源代码、资源文件和应用清单进行的配置更改。尽管本部分列出的大部分配置更改为可选更改,但却是一些不错的编码实践,我们建议您实施这些更改。在某些情况下,您可能已在开发流程中进行了这些配置更改。

选择一个适当的软件包名称

确保您选择的软件包名称适用于应用的整个生命周期。在向用户分发应用后,您将无法更改软件包名称。您可以在应用的清单文件中设置此软件包名称。如需了解详细信息,请参阅 package 属性文档。

关闭日志记录和调试

在构建要发布的应用之前,务必关闭日志记录并停用调试选项。您可以通过在源文件中移除对 Log 方法的调用来关闭日志记录。您可以通过在清单文件中将 android:debuggable 属性从 <application> 标记中移除,或通过在清单文件中将 android:debuggable 属性设为 false 来停用调试。另外,移除在您的项目中创建的所有日志文件或静态测试文件。

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

重要说明:如果使用 WebView 显示付费内容或使用 JavaScript 接口,请确保停用针对应用的调试,因为调试将允许用户使用 Chrome DevTools 注入脚本和提取内容。要停用调试,请使用 WebView.setWebContentsDebuggingEnabled() 方法。

清理项目目录

清理项目,并确保其符合 Android 项目中描述的目录结构。将散乱文件或孤立文件留在项目中会妨碍您编译应用,而且可能会导致应用行为不可预测。您至少应执行以下清理任务:

  • 查看 jni/lib/src/ 目录的内容。jni/ 目录应仅包含与 Android NDK 关联的源文件,例如 .c.cpp.h.mk 文件。lib/ 目录应仅包含第三方库文件或专有库文件,包括预构建共享库和静态库(例如,.so 文件)。src/ 目录应仅包含您的应用的源文件(.java.aidl 文件)。src/ 目录不应包含任何 .jar 文件。
  • 检查项目,查看是否有应用不使用的私有或专有数据文件,并移除它们。例如,查看项目的 res/ 目录是否有您不再使用的旧的可绘制对象文件、布局文件和值文件,并删除它们。
  • 检查 lib/ 目录,查看是否有应用不再使用的测试库,并移除它们。
  • 查看 assets/ 目录的内容以及 res/raw/ 目录是否有需要在发布前更新或移除的原始资源文件和静态文件。

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

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

  • 元素
    您应仅指定那些与应用相关且必需的权限。

  • android:iconandroid:label 属性
    这些属性位于 元素中,您必须为它们指定相应的值。

  • android:versionCodeandroid:versionName 属性。
    这些属性位于 元素中,我们建议您为它们指定相应的值。如需了解详细信息,请参阅对您的应用进行版本控制

    如果要在 Google Play 上发布应用,您还可以设置一些其他的清单或构建文件元素。例如,android:minSdkVersionandroid:targetSdkVersion 属性,它们位于 <uses-sdk> 元素中。如需了解有关这些属性及其他 Google Play 设置的详细信息,请参阅 Google Play 上的过滤器

地址兼容性问题

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

  • 增加针对多种屏幕配置的支持
    确保您遵循支持多种屏幕的最佳做法。通过支持多种屏幕配置,您可以创建一款在 Android 系统支持的任何屏幕尺寸上都可以正常运行且显示良好的应用。

  • 针对 Android 平板电脑设备优化您的应用。
    如果您的应用是专为早于 Android 3.0 的设备设计的,则可遵循针对 Android 3.0 优化应用中所述的指南和最佳做法使其与 Android 3.0 设备兼容。

  • 考虑使用支持库
    如果您的应用是专为运行 Android 3.x 的设备设计的,则可通过向应用项目添加支持库让您的应用与较早的 Android 版本兼容。支持库提供您可以添加到 Android 应用的静态支持库,有了它,您可以使用较旧平台版本上不提供的 API,或使用不属于框架 API 的实用程序 API。

更新服务器和服务的网址

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

实现许可(如果您在 Google Play 上发布)

如果您要通过 Google Play 发布付费应用,请考虑增加针对 Google Play 许可的支持。许可让您可以根据当前用户是否已购买应用来控制他们对应用的访问。使用 Google Play 许可属于可选项,即使您要通过 Google Play 发布应用也是如此。

如需了解有关 Google Play 许可服务以及如何在应用中使用这种服务的详细信息,请参阅应用许可

构建要发布的应用

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

通过 Android Studio 进行构建

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

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

准备外部服务器和资源

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

另外,如果您的应用从远程服务器或实时服务(如内容 Feed)获取内容,请确保您正在提供的内容是最新的,并且可用于生产环境。

测试要发布的应用

测试应用的发布版本可帮助确保应用在真实的设备和网络条件下正常运行。理想情况下,您应至少在一台手机尺寸的设备和一台平板电脑尺寸的设备上测试您的应用,以验证用户界面元素的大小是否正确,且应用的性能和电池效率是否在可接受的范围内。

开始测试时,请先参阅测试什么。本文总结了测试时您应考虑的常见 Android 情况。完成测试并确定应用的发布版本可正确运行后,即可向用户发布您的应用。如需了解详细信息,请参阅向用户发布您的应用。如果您要在 Google Play 上发布应用,请参阅 Google Play 发布检查单