Android 应用发布前的准备工作
1. 理解发布流程
在将 Android 应用推向市场之前,需要完成一系列步骤,这个过程被称为发布流程。即使应用在功能上已经完成,但在发布前仍需进行打包,以确保能安全、稳定地部署到用户手中。以下是发布 Android 应用的主要步骤:
1. 准备并执行应用的发布候选版本构建。
2. 彻底测试应用的发布候选版本。
3. 对应用进行打包和数字签名。
4. 彻底测试打包后的应用发布版本。
5. 发布应用。
下面是发布流程的 mermaid 流程图:
graph LR
A[准备构建] --> B[执行“发布候选”构建]
B --> C{是否有 bug?}
C -- 有 --> D[修复 bug]
D --> B
C -- 无 --> E[彻底测试构建]
E --> F{是否有 bug?}
F -- 有 --> D
F -- 无 --> G[打包并签名]
G --> H[测试打包后的发布候选版本]
H --> I{是否有 bug?}
I -- 有 --> D
I -- 无 --> J[发布应用]
2. 准备发布候选版本构建
在准备发布候选版本时,需要对应用进行打磨,确保其适合公开使用。这意味着要解决应用中可能阻碍发布的所有问题,实现并测试所有功能,解决或推迟所有 bug。同时,需要移除不必要的诊断代码,并验证 Android 清单文件中的应用配置设置是否适合发布。以下是一个典型 Android 应用的预发布检查清单:
- 按照测试计划对应用进行充分测试,包括在目标手机上进行测试。
- 修复并验证应用中的所有缺陷和 bug。
- 关闭所有用于发布的调试诊断信息,包括可能影响应用性能的任何额外日志记录。
3. 为发布准备 Android 清单文件
在发布前,需要对 Android 清单文件中的应用配置设置进行一些更改。这些更改有些是常识性的,有些则是由应用市场(如 Android 应用商店)规定的。以下是需要检查的内容:
| 检查项 | 说明 |
| ---- | ---- |
| 应用图标 | 验证应用图标(各种尺寸的 PNG 格式)是否设置正确,该图标会被用户看到,并且市场通常会用它来展示应用。 |
| 应用标签 | 验证应用标签是否设置正确,它代表用户看到的应用名称。 |
| 应用版本名称 | 验证应用版本名称是否设置正确,版本名称是开发者和市场用于产品支持的友好版本标签。注意,Android SDK 允许 android:versionName 属性引用字符串资源,但 Android 应用商店不允许,否则上传时会出错。 |
| 应用版本代码 | 验证应用版本代码是否设置正确,版本代码是 Android 平台用于管理应用升级的数字。可以考虑为发布候选版本增加版本代码,以区别于预发布版本。 |
| uses-sdk 设置 | 确认应用的 uses-sdk 设置是否正确,可以设置此版本支持的最小、目标和最大 Android SDK 版本,这些数字以每个 Android SDK 的 API 级别保存。例如,Android 2.1 是 API 级别 7。Android 应用商店会根据清单文件中的信息(包括 uses-sdk 设置)过滤提供给特定用户的应用。 |
| 调试选项 | 禁用 debuggable 选项。 |
| 应用权限 | 确认所有应用权限是否合适,只请求应用所需的权限,并确保请求应用使用的权限,无论手机在没有这些权限时的行为如何。 |
4. 保护应用免受软件盗版
开发应用投入了大量的时间、精力和资源,因此要防止软件盗版者窃取劳动成果和知识产权。Android Eclipse 工具链内置了对 ProGuard 工具的支持,可帮助保护应用免受盗窃和滥用。
ProGuard 的优点包括:
- 缩小和优化应用源代码,移除未使用的代码,使用户下载的包更精简。
- 混淆或打乱源代码,包括重命名类、字段和方法,使逆向工程应用代码更加困难。
ProGuard 的缺点包括:
- 发布版本的代码被混淆,使合法调试更具挑战性,但仍然可行。
- 对于使用外部库、路径包含空格和其他特定编码的应用,需要更高级的 ProGuard 配置。
启用 ProGuard 很简单,在 Eclipse 中与应用项目关联的 proguard.cfg 配置文件中可以修改其设置。然后需要更新应用的 default.properties 配置文件中的 proguard.config 设置,使其指向 ProGuard 配置文件,如下所示:
proguard.config=proguard.cfg
更多关于使用 ProGuard 的信息,请参考 Android 开发者网站的文档: http://goo.gl/0Lo0G 。也可以查看这篇关于使用 ProGuard 保护 Android 应用的实用在线文章: http://goo.gl/cF9UM 。
5. 为发布准备相关服务
如果 Android 应用依赖于任何外部技术或服务(如应用服务器),则这些服务也必须为发布做好准备。许多大型项目有一个“模拟”应用服务器(通常称为沙箱)以及一个真正的“实时”服务器。发布版本需要在实时服务器上进行测试,就像用户使用时一样。
6. 测试应用发布候选版本
解决所有预发布问题后,就可以执行发布候选版本的构建。这里的一般构建过程没有特别之处,只是在 Eclipse 中启动“运行配置”,而不是“调试配置”。
应该严格测试发布候选版本。除了常规测试外,还应验证应用是否满足想要发布的应用市场(如 Android 应用商店)的标准。例如,Android 应用商店目前限制应用包大小为 50MB。
如果发现发布候选版本构建存在任何缺陷或问题,必须决定这些问题是否严重到需要停止发布流程。如果认为某个问题严重到需要重新构建,那么在解决问题后,只需重新开始发布流程。
7. 打包和签名应用
有了经过测试且准备好的可靠发布候选版本后,需要对应用进行打包以进行发布。这个过程包括生成 Android 包文件(.apk 文件)并进行数字签名。
打包和签名应用的过程非常简单,Eclipse 中的 Android 插件提供了一个简单的向导来完成这些操作。
8. 数字签名应用
Android 应用包必须进行数字签名,Android 包管理器才能安装它们。在开发过程中,Eclipse 使用调试密钥来管理这个过程。但在发布时,需要使用真正的数字签名,即开发者和公司独有的签名。为此,必须生成一个私钥。
私钥用于识别开发者,对于建立开发者和用户之间的信任关系至关重要。因此,必须确保私钥信息的安全。可以使用私钥对 Android 应用的发布包文件以及任何升级进行数字签名,以确保应用是由开发者本人发布的,而不是冒充者。
需要注意的是,Android 应用市场不要求使用证书颁发机构(如 VeriSign、Equifax 等)的证书,自签名是 Android 应用的标准做法。但应用更新必须使用相同的私钥进行签名,出于安全原因,如果密钥不同,Android 包管理器将不会在现有应用上安装更新。因此,需要将与应用对应的密钥保存在安全且易于找到的位置,以备将来使用。
9. 导出并签名包文件
使用 Eclipse ADT 插件提供的向导导出并签名 Android 包文件的步骤如下:
1. 在 Eclipse 中,右键单击相应的应用项目,选择“导出”选项。
2. 在“导出”菜单下,展开“Android”部分,选择“导出 Android 应用”。
3. 点击“下一步”按钮。
4. 选择要导出的项目,右键单击的项目是默认选项,但也可以使用“浏览”按钮切换到其他打开的 Eclipse 项目。
5. 点击“下一步”按钮。
6. 在密钥库选择屏幕上,选择“创建新密钥库”选项,并输入文件位置(即想要存储密钥的位置)以及管理密钥库的密码。(如果已经有密钥库,选择“浏览”来选择密钥库文件,然后输入正确的密码。)
- 注意:要为密钥库选择强密码,并记住密钥库的位置,因为发布应用升级时需要使用相同的密钥库。如果将其签入版本控制系统,密码可以帮助保护它,但可以考虑增加额外的权限层来访问它。
7. 点击“下一步”按钮。
8. 在密钥创建屏幕上,输入密钥的详细信息,包括有关组织的信息。注意密钥有效期,Android 应用市场拒绝任何密钥有效期至 2033 年 10 月 22 日之前的应用,因此选择至少 25 年的密钥有效期以满足此要求。如果在其他特定字段上需要帮助,请参阅 Android 开发者网站上关于应用签名的文档: http://goo.gl/LWtFj 。
9. 点击“下一步”按钮。
10. 在“输入目标和密钥/证书检查”屏幕上,输入应用包文件的文件目标。
11. 点击“完成”按钮。
完成以上步骤后,就创建了一个完全签名和认证的应用包文件。
10. 测试签名后的应用包
对应用进行签名和打包后,在投入生产之前,应该进行最后一轮测试,特别注意签名应用安装过程中的细微变化。
在将应用的发布版本安装到模拟器或手机之前,必须完全卸载调试版本,因为调试版本使用不同的签名,新的签名版本不能直接安装在其上。可以通过以下步骤卸载应用:从主屏幕点击“菜单” -> “设置” -> “应用” -> “管理应用程序”,从列表中选择应用,点击“卸载”按钮,并确认要卸载应用。
11. 安装签名后的应用包
之前,为了调试目的,Eclipse 会处理应用的打包和部署到手机和模拟器的过程。现在应用的发布版本已经在硬盘上,需要手动加载并测试它。
手动在手机或模拟器上安装(或卸载)应用包(.apk)文件的最简单方法是使用 adb 命令行工具。以下是使用 adb 安装包的命令:
adb install <path_to_apk>
如果只有一个设备或模拟器,此命令可以正常工作。但如果有多个设备和模拟器,需要将安装命令指向特定的设备。可以使用 adb 工具的 devices 命令查询连接到计算机的设备:
adb devices
该命令返回的列表包括连接到计算机的任何模拟器或手机,结果可能如下所示:
$ adb devices
List of devices attached
emulator-5554 device
HT9CSP801234 device
可以使用 -s 选项指定要安装应用包文件的特定设备。例如,要在模拟器上安装 BeenThereDoneThat.apk 应用包文件,可以使用以下命令:
adb -s emulator-5554 install BeenThereDoneThat.apk
有关 adb 命令行工具的更多信息,请参阅网站: http://goo.gl/jqXK3 。
12. 验证签名后的应用
在完成上述步骤后,还需要进行一些最后的检查,以确保应用正常工作:
- 验证签名后的应用包是否能顺利安装。
- 验证所有调试功能是否已禁用。
- 验证应用是否使用“实时”服务,而不是任何“模拟”服务。
- 验证应用配置数据(如应用名称、图标以及版本信息)是否正确显示。
如果发现签名后的应用功能存在任何问题,必须决定这些问题是否严重到需要停止发布流程并重新开始。在彻底测试应用包并确信用户使用应用会有良好体验后,就可以发布应用了。
13. Q&A
- 问:本文描述的发布流程是否适用于任何 Android 应用市场?
- 答: 一般来说是适用的。这里主要关注了 Android 应用商店的要求,对于其他应用市场的具体要求,请参考相应的开发者计划。通常,差异主要体现在对应用的 Android 清单文件的要求以及应用附带的数字签名的具体细节上。
- 问:为什么密钥必须在 2033 年 10 月 22 日之前有效?
- 答: 应用的数字签名会在各种应用升级过程中持续存在。通过强制设定一个遥远的有效期,可以长期建立和维护应用提供者与第三方(包括用户)之间的信任关系。
- 问:能否通过编程方式获取应用包的信息?
- 答: 可以,使用
PackageManager类(android.content.pm.PackageManager)的getPackageInfo()方法可以获取应用包的信息。该方法返回一个PackageInfo对象(android.content.pm.PackageInfo),其中包含了应用清单文件的所有信息,从配置细节到应用的特定活动和权限列表。
- 答: 可以,使用
- 问:我想了解用户的使用情况,有没有简单的方法从应用内部收集统计信息?
- 答: 有!Google Labs 有一个名为 Google Analytics SDK for Android 的项目,可以用来收集和分析应用的相关信息。更多信息请查看 Google 代码页面: http://goo.gl/yvu2z 。
14. 小测验
- 判断对错:发布流程只对大型项目重要。
- 为了发布目的,应该验证应用的 Android 清单文件中的哪些版本字段?
- A.
android:versionCode - B.
android:versionLabel - C.
android:versionName - D.
android:version - E. 以上所有选项
- A.
- 判断对错:不能发布包含调试签名的应用。
15. 答案
- 错误。无论你是个人开发者还是大型开发团队的成员,花时间验证应用是否准备好发布对于应用的成功都很重要。
- A 和 C。Android 平台使用版本代码来执行升级,版本名称是开发者和市场用于产品支持目的的字符串字段。
- 正确。Android 包管理器只安装经过正确签名的应用。
16. 练习
- 选择一个应用版本,导出 APK 包文件并进行数字签名。
- 查看练习 1 中创建的包文件,它有多大?列出几种可以使包文件更小、更精简的方法。提示:应用资源是包大小的重要组成部分。
- 使用
adb命令行工具在设备(或模拟器,如果没有设备)上安装应用包。 - 使用设备设置中的“管理应用程序”功能在设备(或模拟器,如果没有设备)上卸载应用包。
Android 应用发布前的准备工作
17. 总结回顾
在前面的内容中,我们详细介绍了 Android 应用发布前的各项准备工作。从理解发布流程开始,明确了发布应用需要经过准备构建、测试、打包签名等一系列步骤。接着阐述了准备发布候选版本构建时,要打磨应用、解决问题、移除不必要代码并验证清单文件设置。还介绍了保护应用免受盗版的 ProGuard 工具,以及为发布准备相关服务的要点。在测试、打包和签名应用方面,给出了具体的操作步骤和注意事项,最后说明了测试签名后的应用包、验证应用以及相关的 Q&A、小测验和练习。下面我们对这些关键步骤进行一个梳理总结。
| 步骤 | 主要内容 |
|---|---|
| 理解发布流程 | 准备并执行发布候选版本构建、测试、打包签名、再次测试、发布应用 |
| 准备发布候选版本 | 解决应用问题、测试功能、移除诊断代码、验证清单文件设置 |
| 保护应用 | 使用 ProGuard 工具缩小、优化和混淆代码 |
| 测试发布候选版本 | 严格测试,满足应用市场标准 |
| 打包和签名应用 | 生成 .apk 文件并进行数字签名 |
| 测试签名后的应用包 | 注意安装过程变化,卸载调试版本 |
| 验证应用 | 检查安装、调试功能、服务和配置数据 |
18. 深入探讨发布流程的重要性
发布流程对于 Android 应用的成功至关重要。一个完善的发布流程可以确保应用在用户手中稳定、安全地运行,提升用户体验,从而增加应用的市场竞争力。以下是发布流程重要性的具体体现:
- 质量保证 :通过严格的测试和验证环节,可以发现并解决应用中的缺陷和问题,提高应用的质量。例如,在测试发布候选版本时,不仅要进行常规测试,还要验证是否满足应用市场的标准,如 Android 应用商店对应用包大小的限制。
- 安全保障 :数字签名和保护应用免受盗版的措施可以确保应用的安全性。私钥的使用可以建立开发者和用户之间的信任关系,防止盗版者窃取应用的知识产权。
- 用户体验 :经过充分准备和测试的应用,在安装和使用过程中更加流畅,能够为用户提供良好的体验。例如,验证签名后的应用包是否能顺利安装、调试功能是否已禁用等,都直接影响用户体验。
19. 优化发布流程的建议
为了进一步提高发布流程的效率和质量,可以考虑以下优化建议:
- 自动化测试 :使用自动化测试工具可以提高测试效率,减少人工测试的工作量和错误。例如,使用 Espresso 或 UI Automator 进行 UI 测试,使用 JUnit 进行单元测试。
- 持续集成和持续部署(CI/CD) :建立 CI/CD 流程可以实现应用的自动化构建、测试和部署。例如,使用 Jenkins 或 GitLab CI/CD 等工具,将代码提交与发布流程自动化关联起来。
- 版本管理 :合理管理应用的版本代码和版本名称,便于跟踪和维护应用的更新。例如,采用语义化版本号(Semantic Versioning)来管理版本。
20. 未来趋势展望
随着 Android 技术的不断发展,应用发布流程也可能会发生一些变化。以下是一些可能的未来趋势:
- 更严格的安全要求 :随着应用安全问题的日益突出,应用市场可能会对应用的安全要求更加严格。开发者需要更加注重应用的安全防护,如加强数据加密、防止代码注入等。
- 多平台发布 :除了 Android 应用商店,开发者可能会将应用发布到更多的平台,如华为应用市场、小米应用商店等。这就需要开发者了解不同平台的发布要求和规范。
- 人工智能和机器学习的应用 :人工智能和机器学习技术可能会应用到应用发布流程中,如自动化测试、代码优化等。例如,使用机器学习算法来预测应用的性能和稳定性。
21. 总结
通过本文的介绍,我们全面了解了 Android 应用发布前的准备工作。从发布流程的各个环节,到保护应用、测试验证等方面,都给出了详细的操作步骤和注意事项。同时,我们也探讨了发布流程的重要性、优化建议和未来趋势。希望这些内容能够帮助开发者顺利地将 Android 应用推向市场,为用户提供高质量的应用体验。在实际操作中,开发者可以根据自己的需求和实际情况,灵活运用这些知识和方法,不断完善应用的发布流程。
下面是一个 mermaid 流程图,展示了整个 Android 应用发布前准备工作的主要流程:
graph LR
A[理解发布流程] --> B[准备发布候选版本构建]
B --> C[保护应用免受盗版]
C --> D[测试发布候选版本]
D --> E[打包和签名应用]
E --> F[测试签名后的应用包]
F --> G[验证签名后的应用]
G --> H[发布应用]
最后,再次提醒开发者,在发布应用前一定要认真做好各项准备工作,确保应用的质量和安全性。祝大家的 Android 应用在市场上取得成功!
超级会员免费看
1万+

被折叠的 条评论
为什么被折叠?



