最近Facebook 又放出了一个用于Android apk字节码优化的工具包——redex,经过redex的优化apk会变的体积更小,速度更快。...至于原理大家可以到https://code.facebook.com/posts/1480969635539475/optimizing-android-bytecode-with-redex这个网站去看...的源码checkout到电脑上: git clone https://github.com/facebook/redex.git cd redex git submodule update --init...接下来就可以通过redex执行最后的优化命令了: redex path/to/your.apk -o path/to/output.apk 不过这里又出现了个问题: ? 又是环境问题?...mafeideAir:~ mafei$ cd GitHub/ mafeideAir:GitHub mafei$ cd redex/ mafeideAir:redex mafei$ redex metis_release_v1.0.2
第22条:Facebook的redex优化字节码 redex是facebook发布的一款android字节码的优化工具,需要按照说明文档自行配置一下。...only redex 如果先进行微信混淆,再redex,减小了565k,redex只贡献了10k: ?...only redex 如果先进行redex,在进行微信混淆,减小了711k,redex贡献了157k: ?...详情参考:ReDex: An Android Bytecode Optimizer 在线评估 针对很多朋友的反馈,有必要对条例的适用范围、易用性和风险指数做个粗略的评估,汇总如下,方便大家执行。...全方位性能调优,Android架构师脑图,全套视频 1.Android架构师脑图; ?
直到今年4月,redex终于开源了,我们也第一时间对redex做了研究(有观众可能要说我骗人,这都11月了怎么还第一时间呢?...PS:本篇提到的冷启动速度优化,不包括Android 5.0及以上系统 一、redex的使用与坑 1.安装与使用 使用redex的第一个坑就是环境。...2.优化原理与配置 Redex的优化项众多,并且可以很方便的修改配置文件来选择需要执行的优化,默认的配置文件如下 ? 根据官方的介绍文档,redex的优化主要有以下几项: A.内联。...E.签名 redex执行后需要对apk重新签名,而手Q在签名之后还有一些优化逻辑。 这个时候redex可配置优化项的方便之处就体现出来了。遇到问题时,可以把可疑的优化项屏蔽掉,继续验证。...Android编译时把.class转换成.dex是依靠dx.bat,这个工具实际执行的是sdk中的dx.jar。我们可以修改dx的源码,替换这个jar包,就可以执行自定义的dx逻辑了。
从 深入探索 Android 启动优化 时就提及到了 Redex 的类重排优化,当时卡在这一步,所以一直没法真正完成类的重排优化。...3、接着,从 Github 上获取 ReDex 的源码并切换到 redex 目录下 git clone https://github.com/facebook/redex.git cd redex 4、...Dex 调用造成的信息冗余,命令如下所示(注意,在 redex 的前面可能需要加上 Android sdk 的路径,因为 redex 中使用到了sdk下的zipalign工具): ANDROID_SDK...=/Users/quchao/Library/Android/sdk redex --sign -s wan-android-key.jks -a wanandroid -p wanandroid -c...-a androiddebugkey -p android -c redex-test/interdex_stripdebuginfo.config -P ReDexSample/proguard-rules.pro
下面我就分别讲讲 ProGuard、d8、R8 和 ReDex 这四种我们可能会用到的代码优化工具。...ReDex 如果说 R8 是未来想取代的 ProGuard 的工具,那 Facebook 的内部使用的ReDex其实已经做到了。...Facebook 内部的很多项目都已经全部切换到 ReDex,不再使用 ProGuard 了。...在前面的文章中,我已经不止一次提到 ReDex 这个项目,因为它里面的功能实在是太强大了,具体可以参考专栏前面的文章《包体积优化(上):如何减少安装包大小?》。...ReDex、d8、R8 其实都是相辅相成,可以看到 Google 也在摄取社区的知识,但同时我们也会从 Google 的新技术发展里寻求思路。
Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身。...从Android 4.0+开始原生支持,但是不支持包含透明度,直到Android 4.2.1+才支持显示含透明度的webp,使用的时候要特别注意。...Facebook的redex优化字节码 redex是facebook发布的一款android字节码的优化工具,需要按照说明文档自行配置一下。...157k: 下面我们来看看它的效果,仅redex的话,减小了157k: 如果先进行微信混淆,再redex,减小了565k,redex只贡献了10k: 如果先进行redex,在进行微信混淆...另外,据反应redex后会有崩溃的现象,这个要留意一下,我这里压缩之后都是可以正常运行的。 详情参考:ReDex
AndroidManifest.xml:包含核心Android清单文件。该文件列出应用程序的名称,版本,访问权限和引用的库文件。该文件使用Android的二进制XML格式。...优化res,assets文件 手动lint检查,手动删除无用资源 在Android Studio中打开“Analyze” 然后选择"Inspect Code..."...所以建议是让UI去搞,这里可以参考使用lottie-android,如果项目中动画效果多的话效果更加明显。...Facebook的redex优化字节码 redex是facebook发布的一款android字节码的优化工具,需要按照说明文档自行配置一下。...redex input.apk -o output.apk --sign -s -a -p
android.enableR8=false android.enableR8.libraries=false 混淆参考:Android混淆从入门到精通 7.缩减资源 shrinkResources true...4.ReDex dex文件是打包中的产物,redex是facebook开源的分包优化方案。 可以参考:ReDex。...<ImageView android:layout_width="wrap_content" android:layout_height=..."wrap_content" android:src="@drawable/ic_back_black" android:tint="@android...ReDex SoLoader 支付宝 App 构建优化解析:Android 包大小极致压缩 AndResGuard 深入探索 Android 包体积优化 Android开发高手课包体积优化
dex2oat可以通过shell命令执行cmd package compile -m speed-profile -f packageName 4 Redex Linux 文件系统从磁盘读文件的时候,会以...class A { static { //记录 } } 然后通过 ReDex 的Interdex调整类在 Dex 中的排列顺序,最后可以利用 010 Editor 查看修改后的效果...从多方拿到的数据来看,收益在0-6%,整体不是很明显,而且需要把redex工程化、考虑和proguard的兼容等问题。...Google 也注意到了后台 GC 对于应用启动速度的影响,并尝试了在 Android 中对这一场景进行优化。在 Android 10 的代码中。...相关视频推荐: 【2021最新版】Android studio安装教程+Android(安卓)零基础教程视频(适合Android 0基础,Android初学入门)含音视频_哔哩哔哩_bilibili 【
热启动 即进程存活情况下,点击桌面图标,应用从后台切换到前台 二.如何检测启动耗时 1.查看Logcat 在Android Studio Logcat中过滤关键字“Displayed”,可以看到对应的冷启动耗时日志...4.使用TraceView 这个的使用参考我以前写的文章 《Android性能优化系列之App启动优化》 三.启动优化进阶方法 启动优化一些常用的方法参考《Android性能优化系列之App启动优化》...name 记录到文件 writeToFile(name,"coldstart_classes.txt"); return super.findClass(name); } } 具体实现可以参考 ReDex...最后附上redex地址:https://github.com/facebook/redex 启动阶段抑制GC 启动时CG抑制,允许堆一直增长,直到手动或OOM停止GC抑制。...参考: 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%
="http://schemas.android.com/apk/res/android" android:opacity="opaque"> <!...类重排 类重排的实现通过 ReDex 的 Interdex 调整类在 Dex 中的排列顺序。...不明白可以看这篇文章:Redex 初探与 Interdex:Andorid 冷启动优化 根据interdex官方介绍的原理,我们可以知道要实现这个优化需要解决三个问题: 如何获取启动时加载类的序列?...redex中的方案是dump出程序启动时的hprof文件,再从中分析出加载的类,比较麻烦。...redex的做法应该是解析出所有dex中的类,再按配置的加载类序列,从主dex开始重新生成各个dex,所以会打乱原有的dex分布。
一、前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理论到实战,从入门到深挖,手把手将性能优化实践到项目中...但是因为类的继承关系短时间内无法直接替换,作为优化点暂时遗留; 可以考虑根据实际情况将启动时部分接口合并为一,减少网络请求次数,降低频率; 相同功能的组件只保留一个,例如:友盟、GrowingIO、自有统计等功能重复; 使用ReDex...进行优化;实验Redex发现Apk体积确实是小了一点,但是启动速度没有变化,或许需要继续研究。...相关视频: 【2021最新版】Android studio安装教程+Android(安卓)零基础教程视频(适合Android 0基础,Android初学入门)_哔哩哔哩_bilibili Android...Android高级UI性能优化——LayoutInflater.inflate函数意义与参数说明_哔哩哔哩_bilibili Android高级UI性能优化——ViewPager嵌套Fragment
Redex 为什么会加快应用启动速度? 再比如我们经常说的 Handler,MessageQueue,Looper。...再比如说 Android 的进程管理机制。AMS 把 Android 进程按照一定的规则,设置不同的优先级,在内存比较低的时候,高优先级的 App 比低优先级的 App 更不容易被系统干掉!...image.png 面试中那些Framework相关的问题 通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android...程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组件的运行原理,例如Binder的运行机制、ServiceManager的作用等等...在Android面试中,关于 Framework 的问题是必备的,但是这些关于字节跳动 Framework 的高频面试题你都掌握了吗?
该公司认为,Kotlin 是一种流行的 Android 开发语言,与 Java 相比具有一些关键优势。...截至目前,Facebook、Messenger 和 Instagram 的 Android 应用程序都有超过 100 万行 Kotlin 代码,并且转换率正在提高。...这种设计使 JetBrains 能够为开发人员社区提供 J2K,即 IntelliJ/Android Studio 中的 Java 到 Kotlin 转换器。...而在尝试为现有应用程序引入 Kotlin 时,Meta 也遇到了很多麻烦,例如需要更新 Redex 以支持 Java 不生成的字节码模式。...“我们已经允许 Meta 的任何想要使用 Kotlin 的 Android 开发人员这样做,并为他们提供了工具来轻松地将现有代码迁移到 Kotlin。
上述是在windows7系统下的操作,xp用户的操作略有不同,xp用户请在C盘根目录下创建一个android目录,将xp版本的dex解包工具Xtemp文件夹放到android目录下,如下图。...XP下的用户在打包dex时,请将classes文件夹拖拽到redex.bat上,会自动在同目录下产生一个out.dex文件,只需重命名为classes.dex替换原文件即可。
作者:jsonchao 链接:https://juejin.im/post/5e7ad1c0e51d450edc0cf053 复习上篇:《深入探索 Android 包瘦身(上)》 中篇:《深入探索 Android...1、So 移除方案 So 是 Android 上的动态链接库,在我们 Android 应用开发过程中,有时候 Java 代码不能满足需求,比如一些 加解密算法或者音视频编解码功能,这个时候就必须要通过...至此,可以看到,FaceBook 出品的 Buck 同 ReDex 一样,里面的功能都十分强大,Buck 除了实现 Library Merge 和 Relinker 功能之外,还实现了三大功能,如下所示...: 1)、多语言拆分 2)、分包支持 3)、ReDex 支持 如果有相应需求或对 Buck 感兴趣的同学可以去看看它们的实现源码。...插件化相关的知识非常多而且不属于我们的重点,并且,插件化严格来说属于 基础架构研发 这块的知识,掌握它是成为 Android 架构师的必经之路,关于 Android 架构师的学习路线 可以参考 Awesome-Android-Architecture
补充知识: Zygote zygote名字翻译叫受精卵,zygote进程的创建是由Linux系统中init进程创建的,Android中所有的进程都是直接或者间接的由init进程fork出来的,Zygote...当需要启动一个新的android应用程序的时候,ActivityManagerService就会通过Socket通知Zygote进程为这个应用创建一个新的进程。...Binder Binder是Android跨进程通信(IPC)的一种方式,也是Android系统中最重要的特性之一,android 四大组件以及不同的App都运行在不同的进程,它则是各个进程的桥梁将不同的进程粘合在一起...微信的AndResGuard 3.图片压缩 1)tinypng 2)svg 3)webp 4.so库配置 只保留两个abi平台,即armeabi和armeabi-v7a 5.dex优化 Facebook的redex
一、前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理论到实战,从入门到深挖,手把手将性能优化实践到项目中...但是因为类的继承关系短时间内无法直接替换,作为优化点暂时遗留; 可以考虑根据实际情况将启动时部分接口合并为一,减少网络请求次数,降低频率; 相同功能的组件只保留一个,例如:友盟、GrowingIO、自有统计等功能重复; 使用ReDex...进行优化;实验Redex发现Apk体积确实是小了一点,但是启动速度没有变化,或许需要继续研究。...转发+点赞+关注,第一时间获取最新知识点 Android架构师之路很漫长,一起共勉吧!
该公司认为,Kotlin 是一种流行的 Android 开发语言,与 Java 相比具有一些关键优势。...这种设计使 JetBrains 能够为开发人员社区提供 J2K,即 IntelliJ/Android Studio 中的 Java 到 Kotlin 转换器。...而在尝试为现有应用程序引入 Kotlin 时,Meta 也遇到了很多麻烦,例如需要更新 Redex 以支持 Java 不生成的字节码模式。...“我们已经允许 Meta 的任何想要使用 Kotlin 的 Android 开发人员这样做,并为他们提供了工具来轻松地将现有代码迁移到 Kotlin。...更多详情可查看官方博客:https://engineering.fb.com/2022/10/24/android/android-java-kotlin-migration/ ------ 我们创建了一个高质量的技术交流群
一、前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理论到实战,从入门到深挖,手把手将性能优化实践到项目中...但是因为类的继承关系短时间内无法直接替换,作为优化点暂时遗留; 可以考虑根据实际情况将启动时部分接口合并为一,减少网络请求次数,降低频率; 相同功能的组件只保留一个,例如:友盟、GrowingIO、自有统计等功能重复; 使用ReDex...进行优化;实验Redex发现Apk体积确实是小了一点,但是启动速度没有变化,或许需要继续研究。
领取专属 10元无门槛券
手把手带您无忧上云