[Android] Facebook Redex 压缩优化Apk实践

最近Facebook 又放出了一个用于Android apk字节码优化的工具包——redex,经过redex的优化apk会变的体积更小,速度更快。至于原理大家可以到https://code.facebook.com/posts/1480969635539475/optimizing-android-bytecode-with-redex这个网站去看,今天我想分享一下具体的实践过程。

前两天刚看到FB放出的这个工具包就迫不及待的去尝试了下,结果一直报下面这个错误:

1
configure: error: Please install double-conversion library

但其实这些library都已经安装好了的,那天倒腾了好久也跟群里的朋友交流过,感觉应该是FB的一个小bug于是去github上提了issue,果然第二天得到了回应官方更新了使用说明。下面是我在Mac OS X上的实践过程:

1、首先需要你的Xcode安装了命令行工具:

1
xcode-select --install

2、利用homebrew安装依赖包:

1
2
3
brew install autoconf automake libtool python3 
brew install boost double-conversion gflags glog libevent openssl 
brew link openssl --force

3、通过Git将redex的源码checkout到电脑上:

1
2
3
git clone https://github.com/facebook/redex.git 
cd redex 
git submodule update --init

4、通过autoconf和make来构建redex:

1
2
autoreconf -ivf && ./configure && make 
sudo make install

在执行步骤四的时候就出现了问题:

1
2
configure: error: Please install google-gflags library 
configure: error: ./configure failed for third-party/folly/folly

于是我又提了issue,下面是跟沟通的过程:
按照他的方法执行下面的命令:

1
2
xcode-select --install 
sudo xcode-select --switch /Library/Developer/CommandLineTools/

再执行步骤四就OK了当然如果看到很多warn也不用担心,最终可以编译通过。
接下来就可以通过redex执行最后的优化命令了:

1
redex path/to/your.apk -o path/to/output.apk

不过这里又出现了个问题:
又是环境问题😂 ,下面是配置过程:

1
2
mafeideAir:~ mafei$ vi ~/.bash_profile 
export PATH=/Users/mafei/Development/adt-bundle-mac-x86_64-20140702/sdk/build-tools/23.0.2:$PATH

因为这个是系统只读文件所以退出的时候要输入!wq才行
这下执行下面的命令就完全没问题啦!

1
2
3
mafeideAir:~ mafei$ cd GitHub/
mafeideAir:GitHub mafei$ cd redex/
mafeideAir:redex mafei$ redex metis_release_v1.0.2.apk -o out.apk

刚刚又去看了下redex的官网发现FB已经把这几天遇到的一些典型问题都汇总了一下:


FullStackEngineer的公众号,更多分享

Share Comments