`

APK瘦身常用方法

阅读更多

随着业务功能的不断增加,APK安装包的体积会越来越大。当安装包的大小影响到用户体验时,就需要进行瘦身了。APK的瘦身主要通过以下三个方面进行:

 

1、图片资源

 

2、代码

 

3、资源混淆

 

一、图片资源

 

图片资源基本上都是APP中占比最大的一块。对于图片资源的优化是最简单的,也是最容易看到效果的。常用的方法是删除无用的图片资源和压缩图片资源。

 

图片格式的优先级顺序是:

VectorDrawable--WebP--JPG--PNG

 

webp是google研发的一种图片压缩算法,支持有损和无损以及aplha通道。其压缩率要高于jpg。其中android 4.1 原生支持webp图片的解码,4.3原生支持带有alpha通道(透明通道)的webp图片解码。现在大部分APP兼容的最低API版本是4.1,因此可以把所有不带alpha通道的png和所有jpg图统一有损压缩成webp

 

值得关注的是,近日,腾讯推出自研图片编码格式TPG(Tiny Portable Graphics),由腾讯音视频实验室基于AVS2内核自主研发。通过目前已经公开的测试数据,在同等质量的前提下,TPG相对WEBP格式,文件大小可以减少近30%。

 

二、代码

 

主流的方式是使用代码混淆,删除无效代码,无用JAR包以及so库。

使用第三方库时,尽量做代码提取,去除用不到的代码,并尽量减少第三方库的更新。

尽量实现代码复用,提取公共组件。

非必须组件,可以考虑动态下载so。

 

三、资源混淆

 

资源混淆的核心在于对APK中resources.arsc文件的修改。Android项目中res目录下每个资源都会有其对应的ID,通过这些ID我们可以很方便的定位某一项资源。Resources.arsc这个文件是存放在APK包中的,它本身是一个资源的索引表,里面维护着资源ID、Name、Path或者Value的对应关系。而资源混淆的原理就在于修改ID对应的资源路径(如将res/drawable/xxx修改成为r/d/a),通过这个方式可以大大减小resources.arsc文件的内容,从而达到减包的目的。

 

0
1
分享到:
评论

相关推荐

    HTC系统程序可删列表

    在Android设备中,为了实现系统精简,提升设备性能,很多用户会寻求通过删除不必要的预装应用程序来“瘦身”。特别是对于那些不再使用的应用或认为没有必要存在的功能,进行适当的清理能够有效释放存储空间、减少...

    java心得分享技术文章总结.docx

    - "提速 Android Gradle 构建优化/瘦身"提供了提高构建速度和减少APK大小的方法。 6. **Android系统深入理解**: - "Android 开发之漫漫长途"系列详细讲解了Android系统的Activity生命周期、Window和View的关系,...

    BAT Android面试20题详解.docx

    3. **APK瘦身策略**: - 清理冗余和未使用的代码,避免引入不必要的依赖库。 - 使用Proguard混淆代码,优化并减小APK大小。 - 只针对常用架构(如armabi和x86)编译原生代码。 - 使用Lint工具查找未使用的资源并...

    阿里巴巴Android开发手册1.0.pdf

    2. 代码混淆与APK瘦身:讲解ProGuard和R8的配置,以减小应用体积并保护代码安全。 3. 发布流程:包括签名文件的生成、版本管理、Play Store发布策略等。 通过学习《阿里巴巴Android开发手册1.0》,开发者不仅可以...

    eoeAndroid特刊[1~20期]

    12. **性能优化**:包括内存优化、CPU使用监控、APK瘦身、加载速度提升等技巧。 13. **最新技术动态**:可能包含对最新Android版本(如Android 12)的新特性介绍,以及Android Jetpack组件的使用。 14. **实战项目...

    one.rar_thin

    6. **ProGuard**:在Android开发中,ProGuard是一个常用的工具,它可以混淆、优化和压缩Java字节码,以减少APK的大小。 7. **Tree Shaking**:在JavaScript世界里,Tree Shaking是一种消除未使用的ES6模块导入的方法...

    【eoeAndroid特刊】第一期到第十八期

    - APK瘦身:通过压缩资源、去除冗余代码和优化编译过程来减小应用大小。 6. **最新技术趋势**: - Jetpack组件库:介绍Android Jetpack的各个组件,如Lifecycle、ViewModel、Room等,它们为开发者带来了更好的...

    《Android应用开发揭秘》源码

    9. **性能优化**:源码中可能会包含内存优化、UI流畅度优化、APK瘦身等方面的实践案例,有助于提升应用的性能和质量。 10. **第三方库集成**:书中可能涵盖了如Gson、OkHttp、Retrofit等常用第三方库的使用,让...

    传智播客_Andorid_Android基础视频video_第六天修

    11. **资源优化**:包括图片压缩、代码混淆、APK瘦身等,以提高应用性能和下载速度。 12. **Gradle构建系统**:学习如何使用Gradle构建和管理Android项目,包括依赖管理、多模块项目构建等。 这些只是Android开发...

    【Android精品资源】面试题安卓巴士总结

    7. **性能优化**:内存优化、耗电优化、UI流畅性优化、APK瘦身等,理解ANR、OOM等问题的排查与解决。 8. **版本更新与兼容性**:了解Android版本迭代带来的新特性,处理API兼容问题,掌握Support Library和AndroidX...

    android 教程

    11. **性能优化**:包括内存优化、UI流畅性优化、APK瘦身、电量管理等,是提升用户体验的关键。 12. **调试技巧**:学会使用Android Studio的调试工具,如Logcat、Profiler、Memory Monitor等,能够帮助定位和解决...

    百度Android工程师面试题.rar

    12. **性能优化**:探讨绘制性能、启动时间优化、资源压缩、APK瘦身策略等,以及使用Profiler进行性能分析。 13. **Android源码阅读**:对Android源码有一定的理解,例如,了解Activity的启动流程、View的绘制过程...

    Android程序员指南

    12. **性能优化**:内存管理、GPU过度绘制检测、电量优化、APK瘦身等是提高应用性能和用户体验的重要环节。学习如何使用Android Profiler工具进行性能分析和优化是每个开发者都应掌握的技巧。 13. **Material ...

    Android 资料合集

    包括性能优化(内存管理、耗电优化、APK瘦身)、单元测试、自动化测试、热修复、插件化、多进程等,这些都是提升开发质量和效率的关键。 总的来说,"Android资料合集"中的内容涵盖了Android开发的各个方面,从基础...

    MARS 老师Android教学视频第一、二、三、四季视频的源码和ppt

    课程会讲解内存泄漏检测、耗电优化、UI流畅度提升、APK瘦身等技巧。 九、源码分析 视频源码可以帮助学习者更直观地理解教学内容,通过实际代码来加深对理论知识的理解。这包括了MARS老师在视频中演示的项目代码,...

    android问题集

    10. **资源优化**:内存泄漏、图片加载优化、APK瘦身等都是提升应用性能和用户体验的关键。学会使用工具检测和解决这些问题,可以使应用更加健壮。 11. **Gradle构建系统**:Android Studio采用Gradle作为构建工具...

    android完整一套的学习资料

    了解内存泄漏检测、耗电优化、APK瘦身等技巧,以及使用Systrace、Traceview、Profile GPU Rendering等工具进行性能分析,对于提升应用质量和用户体验至关重要。 十二、Android测试 包括单元测试、UI测试、性能测试...

    Android经典项目案例开发实战宝典-源代码

    10. **性能优化**:包括内存优化、CPU优化、布局优化、图片加载优化、APK瘦身等,这些都是提升应用体验的关键。 本书通过实际的项目案例,让读者能够在实践中学习这些知识,逐步成长为一名熟练的Android开发者。从...

    android-java-前端-面经-工具集合

    - **性能优化**:内存泄漏检测,电量优化,APK瘦身策略。 3. **前端知识**: - **HTML/CSS/JavaScript**:基础语法,响应式布局,事件处理,跨域解决方案。 - **框架与库**:React、Vue、Angular等主流框架的...

    Android知识系统汇总

    10. **Android性能优化**:包括内存优化、CPU优化、UI流畅度优化、APK瘦身等。通过Profile GPU Rendering、Memory Profiler等工具分析和优化应用性能,提升用户体验。 11. **Android测试**:包括单元测试、集成测试...

Global site tag (gtag.js) - Google Analytics