Redex
来源:互联网 发布:区块链雷电网络众筹 编辑:程序博客网 时间:2024/05/17 23:55
ReDex是一个由Facebook开发的Android bytecode(dex)优化库。它提供了一个读、写和分析.dex文件的框架,并且可以对dex文件进行优化。经过ReDex优化过的APK文件通常会体积更小,运行更快。
添加依赖
Mac OS X
安装Xcode命令行工具:
xcode-select --install
使用Homebrew安装Redex:
brew install autoconf automake libtool python3brew install boost double-conversion gflags glog libevent jsoncpp
Ubuntu 14.04 LTS (64-bit)
sudo apt-get install \ g++ \ automake \ autoconf \ autoconf-archive \ libtool \ libboost-all-dev \ libevent-dev \ libdouble-conversion-dev \ libgoogle-glog-dev \ libgflags-dev \ liblz4-dev \ liblzma-dev \ libsnappy-dev \ make \ zlib1g-dev \ binutils-dev \ libjemalloc-dev \ libiberty-dev \ libjsoncpp-dev
下载、编译和安装
从Github下载ReDex:
git clone https://github.com/facebook/redex.gitcd redex
使用自带的配置编译并安装Redex
autoreconf -ivf && ./configure && makesudo make install
Test
这一步是可选的。可以通过预设的脚本下载单元测试功能:
./test/setup.shcd testmake check
使用方法
运行下面的代码:
redex path/to/your.apk -o path/to/output.apk
这里的your.apk是编译打包过的Release版本,没有意外的话就会得到output.apk。但是这里得到的apk是没有签名的,这时安装会出现My app fails to install with Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]错误,你需要对apk重新签名。
ReDex也提供了签名的功能,如果只是想用debug key签名的话,命令如下:
redex --sign [ ... arguments ...]
如果想要用指定的Key签名的话,输入以下命令:
--sign Sign the apk after optimizing it-s [KEYSTORE], --keystore [KEYSTORE]-a [KEYALIAS], --keyalias [KEYALIAS]-p [KEYPASS], --keypass [KEYPASS]
和ProGuard有什么不同?
简而言之ProGuard是从.class文件到.dex文件的优化,而ReDex是从.dex文件到.dex文件的优化。ProGuard和ReDex各有优势,官方的建议是两者都要使用。官方提供的优化数据表明,对比只使用ProGuard的APK减少了25%的体积和冷启动时间。(我手头的实测数据比较尴尬,13M多的APK只减少了0.03MB,冷启动时间没有明显变化)
Facebook官方并没有对使用DexGuard给出优化的建议和数据,并且也没有支持DexGuard的计划。
常见错误
I’m getting “Couldn’t find zipalign. See README.md to resolve this”
zipalign是Android SDK提供的优化工具,需要告诉ReDex Android SDK的路径。例如:SDK的路径是:/path/to/android/sdk,命令如下:
ANDROID_SDK=/path/to/android/sdk redex [... arguments ...]
当然也可以把zipalign配置到环境变量里面:
PATH=/path/to/android/sdk/build-tools/xx.y.zz:$PATH redex [... arguments ...]
My app fails to install with Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
这是没有签名造成的,详细的解决方案上文有提供。
详细原理相关的文章,由于时间有限就不在这里提供了。如各位大佬有需求,以后更新。
- Redex
- Redex踩坑记
- Facebook App 优化工具 ReDex
- Facebook ReDex说明以及使用链接
- Redex 初探与 Interdex:Andorid 冷启动优化
- Redex安卓Apk优化技术研究
- react-redex之connect和Provider组件
- 基于 Facebook Redex 实现 Android APK 的压缩和优化
- 集成facebook redex到mac上来压缩apk的体积
- 基于 Facebook Redex 实现 Android APK 的压缩和优化
- Redex与AndResGuard的针对APK缩减的比较
- 使用Facebook的Redex工具进行android app运行优化
- 基于 Facebook Redex 实现 Android APK 的压缩和优化
- Facebook App 优化工具 ReDex 优化的 6 点及未优化的一大方面
- Facebook App 优化工具 ReDex 优化的 6 点及未优化的一大方面
- 【腾讯Bugly干货分享】Redex初探与Interdex:Andorid冷启动优化
- Redex初探与Interdex:Andorid冷启动优化--转自腾讯Bugly 作者 Bugly_Tony
- android开发学习笔记
- Node封装微信api遇到的坑
- 安卓调用系统录像功能:1、启动录像返回视频,2、启动录像将视频存储在指定路径下
- g++error:expected type-specifier before
- NYOJ C. 饭卡
- Redex
- PATB1001卡拉兹(Callatz)猜想:
- Maven pom文件详解
- js回调函数和函数带参数的使用示例
- oracle数据库
- Redis 持久化之 RDB
- PC端浏览器自适应(火狐、谷歌、IE11),媒体查询@media
- CAS认证(3):验证用户信息
- JavaWeb学习笔记——验证码工具的使用