大家好,了解Android Studio 2.2 中的APK 打包相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于了解Android Studio 2.2 中的APK 打包和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
1.APK签名方案v2
随着Android 7.0 Nougat 中引入新的APK 签名方案v2,我们决定重新设计程序集APK 在Android Gradle 插件中的工作方式。您可以在文档中阅读有关v2 签名的所有基础技术信息,但这里只是作为Android 应用开发人员需要了解的内容的快速概述:
用于验证APK 完整性的APK 加密签名现在直接位于ZIP 中央目录前面。
在v1 中,签名是根据整个APK 文件的二进制内容计算和验证的,而不是根据存档中每个文件的解压文件内容。
APK 可以使用v1 和v2 签名进行签名,以便它们保持与以前的Android 版本的向后兼容。
为什么Android 验证APK 的方式会发生这种变化?首先是为了增强这种新签名格式的安全性和可扩展性,其次是为了提高性能,新签名可以显着减少在设备上验证的时间(无需耗时的解压),从而加快应用程序安装速度。
然而,这种新的签名架构对APK 创建过程施加了新的限制。由于v1 中仅验证解压后的文件内容,因此在APK 签名后可以进行许多修改- 文件可以移动甚至重新压缩。事实上,编译期间使用的zipalign 工具就是这样做的,将ZIP 条目调整为正确的字节限制以提高运行时性能。
由于v2 签名验证存档中的所有字节而不是单个ZIP 条目,因此签名后无法运行zipalign。因此,我们现在在编译过程中将压缩、调整和签名合并为一个步骤。
在编译过程中,如果有任何自定义任务篡改APK 文件或对其进行后处理(以任何方式),请务必禁用它们,否则,您将面临v2 签名无效的风险,导致您的APK 与Android 不兼容7.0 及以上版本。
如果您选择手动签名和调整(例如,通过命令行),我们在Android SDK 中有一个名为apksigner 的新工具,它提供v1 和v2 APK 签名和验证。请注意,如果您使用v2 签名,则必须在运行apksigner 之前运行zipalign。另请记住,JDK 中的jarsigner 工具与Android v2 签名不兼容,因此如果您想保留v2 签名,则无法使用它来重新签名APK。
如果您想在使用Android Gradle 插件构建时禁用添加v1 或v2 签名,可以将以下行添加到build.gradle 中的signingConfig 部分:
v1SigningEnabled false
v2SigningEnabled false
注意:Android Gradle 插件2.2 默认启用这两种签名方案。
2. 发布编译版本以减少APK大小
当我们重新设计打包程序时,我们借此机会对已发布的APK 大小进行了一些优化,从而加快了下载速度,减少了Play 商店上的增量更新大小,并减少了设备上浪费的空间。以下是我们所做的一些更改:
存档中的文件现在已排序,以最大程度地减少APK 版本之间的差异。
所有文件时间戳和元数据都被清除。
对所有文件并行选择级别6 和级别9 压缩,并使用两者中最好的压缩,例如,级别9 压缩在存档大小方面几乎没有什么好处,在这种情况下,选择级别6 将获得更好的性能。
以未压缩的形式存储本机库并调整APK 中的页面。这为Android 6.0 Marshmallow 中的android:extractNativeLibs='false' 选项提供支持,并允许应用程序使用更少的设备空间,同时导致Play 商店上的更新更小。
使用Zopfli 压缩并不能为Play 商店更新算法提供更好的支持。因此,不建议您使用Zopfli 重新压缩您的APK。我们建议您仍然可以预先优化项目中的单个资源,例如PNG 文件。
这些更改有助于确保您的版本尽可能精简,以便用户即使网络连接速度较慢或设备性能较差,仍然可以下载和更新您的应用。但是调试版本会发生什么情况呢?
3. 调试版本,加快安装速度
开发应用程序时,您需要快速迭代周期- 更改代码、编译并在连接的设备或模拟器上部署。
自Android Studio 2.0 以来,我们一直致力于使所有步骤尽可能快。借助Instant Run,我们现在可以在运行时仅更新更改的代码和资源,而新模拟器提供多处理器支持和更快的ADB 速度,以实现更快的APK 传输和安装。编译改进可以进一步减少所需的时间,在Android Studio 2.2 中,我们引入了用于调试构建的增量打包和并行压缩。通过将其与其他功能(例如针对目标设备密度和ABI 选择性打包资源)相结合来加速您的开发。
注意:为即时运行或通过调用调试版本创建的APK 文件无法在Play 商店上分发!它们包含用于即时运行的附加检测代码,但除了开始编译时连接的资源之外,缺少设备配置资源。
请确保您仅分发可使用Android Studio 生成签名APK 命令或assembleRelease Gradle 任务创建的APK 的发布版本。
用户评论
终于找到了讲清楚Android Studio 2.2 APK 打包的方法!之前一直在网上碰壁,各个教程都复杂繁琐,看完你的文章才明白原来这么简单。
有9位网友表示赞同!
最近刚开始学习Android开发,这个帖子真是太棒了,正好解决了我手忙脚乱的打包问题,谢谢博主分享!
有9位网友表示赞同!
这篇关于 2.2 APk 打包的文章对新手解释得非常清晰了,图文并茂,操作步骤也很详细。我已经顺利将我的应用打包成apk格式了!
有20位网友表示赞同!
Android Studio 的更新总是让我措手不及,这篇文章刚好帮帮我记录下新功能,比如2.2里面APK打包的方法。以后也不用担心版本升级后怎么打包了。
有6位网友表示赞同!
写的不错,对 Android Studio 不同版本的 APK 打包有比较详细的解读,方便快速上手和回顾学习。
有18位网友表示赞同!
想找个全面的教程来学习Android Studio 2.2的APK打包方法,这篇文章讲的很透彻,操作步骤也很清晰易懂。
有8位网友表示赞同!
文章写的太长了,而且有些细节不太详细,比如关于发布到应用商店的过程?如果能更全面地讲解这些信息,就更好了。
有9位网友表示赞同!
我试了一下,这个方法真的有效!Android Studio 2.2 的 APK 打包操作一下子变得简单明了了很多。
有12位网友表示赞同!
感觉文章比较偏向初学者,对于已经熟悉 Android Studio 操作的开发者来说,可能不太有帮助。可以适当增加一些进阶的操作技巧和细节讲解。
有15位网友表示赞同!
文章确实很实用,帮我解决了我之前一直困扰的 APK 打包问题。只是希望能够添加一些常见错误解决方案和应对策略,方便遇到问题时快速查阅。
有10位网友表示赞同!
这篇文章是学习 Android Studio 2.2 的必读!感谢博主分享如此宝贵的信息。
有17位网友表示赞同!
安卓开发一直是我想认真学习的方向,这篇关于APK打包的文章很有启发性,让我更坚定了我继续学习的决心。
有11位网友表示赞同!
以前都是通过其他途径了解 Android Studio 相关内容,这篇文章介绍得非常全面,涵盖了基本面和一些实践经验,受益匪浅。
有11位网友表示赞同!
我之前用的是 older 版本的 Studio,升级到 2.2 后发现打包方法有了变化,这篇教程刚好帮到忙!感谢作者!
有7位网友表示赞同!
这个帖子很不错! android studio 学习一直有点困难,终于找到一个简单易懂的文章可以参考了!打包流程现在明白了。
有16位网友表示赞同!
Android Studio 的更新迭代速度真的蛮快的。感觉自己总是跟不上版本升级的速度,幸好有这类博文帮助我们快速了解新功能和使用方法
有9位网友表示赞同!
想分享一些我的学习心得, 在学习 Android Studio 2.2 的 APK 打包的时候,遇到了一些小技巧,比如可以利用Gradle构建脚本进行自动化打包,这样可以更高效的完成工作...等等 希望能对其他人有所帮助!
有5位网友表示赞同!
对于安卓开发入门者来说,这篇关于Android Studio 2.2 中 APk 打包的文章非常实用。 希望未来博客还能分享更多关于安卓开发的干货知识!
有9位网友表示赞同!