了解APK结构
Android Size Analyzer
移除未使用的资源
启用资源缩减 (不打包)
动态库打包配置
总结
了解APK结构在讨论如何缩减应用的大小之前,需要了解应用APK的结构。APK文件是由一个Zip压缩文件组成,其中包含构成应用的所有文件。其中包括Java类文件、资源文件及已编译资源的文件。
APK 包含以下目录:
META-INF/ :包含 CERT.SF 和 CERT.RSA 签名文件,以及 MANIFEST.MF 清单文件。
assets/ :包含应用的资源;应用可以使用 AssetManager 对象检索这些资源。
res/ :包含未编译到 resources.arsc 中的资源(图片、音视频等)。
lib/ :包含特定于处理器软件层的已编译代码。此目录包含每种平台类型的子目录,如 armeabi 、armeabi-v7a 、 arm64-v8a 、 x86 、 x86_64 和 mips 。
APK 还包含以下文件。在这些文件中,只有 AndroidManifest.xml 是必需的。
resources.arsc :包含已编译的资源。此文件包含 res/values/ 文件夹的所有配置中的 XML 内容。打包工具会提取此 XML 内容,将其编译为二进制文件形式,并压缩内容。此内容包括语言字符串和样式,以及未直接包含在 resources.arsc 文件中的内容(例如布局文件和图片)的路径。
classes.dex :包含以 Dalvik/ART 虚拟机可理解的 DEX 文件格式编译的类。
AndroidManifest.xml :包含核心 Android 清单文件。此文件列出了应用的名称、版本、访问权限和引用的库文件。该文件使用 Android的二进制XML文件
Android Size AnalyzerAndroid Size Analyzer 工具可轻松地发现和实施多种缩减应用大小的策略。
首先在 Android Studio 中的插件市场下载安装 Android Size Analyzer 插件。安装插件后,从菜单栏中依次选择 Analyze > Analyze App Size,对当前项目运行应用大小分析。分析了项目后,系统会显示一个工具窗口,其中包含有关如何缩减应用大小的建议。
移除未使用的资源APK瘦身关键就在一个字:删!没用的就删了。
启用资源缩减 (不打包)如果在应用的 build.gradle 文件中启用了资源缩减: shrinkResources ,则 Gradle 在打包APK时可以自动忽略未使用资源。 资源缩减只有在与代码缩减: minifyEnabled 配合使用时才能发挥作用。在代码缩减器移除所有不使用的代码后,资源缩减器便可确定应用仍要使用的资源 。
android {
// Other settings
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
动态库打包配置
so文件是由ndk编译出来的动态库,是 c/c++ 写的,所以不是跨平台的。ABI 是应用程序二进制接口简称(Application Binary Interface),定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android 系统中,每一个CPU架构对应一个ABI,目前支持的有:armeabi-v7a,arm64- v8a,x86,x86_64。目前市面上手机设备基本上都是arm架构, armeabi-v7a 几乎能兼容所有设备。因此可以配置:
android{
defaultConfig{
ndk{
abiFilters "armeabi-v7a"
}
}
}
对于第三方服务,如百度地图、Bugly等会提供全平台的cpu架构。进行了上面的配置之后,表示只会把armeabi-v7a打包进入Apk。从而减少APK大小。
总结到此这篇关于Android开发优化之Apk瘦身优化指南的文章就介绍到这了,更多相关Android Apk瘦身优化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!