Как настроить Facebook Redex для оптимизации байт-кодов Android?
На странице Redex очень хорошая инструкция по адресу http://fbredex.com/.
Я следую инструкции, но у меня проблема в два этапа.
1. У меня нет проблем с запуском первой команды (моя ОС - Ubuntu)
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 \
libssl-dev \
libiberty-dev
Я клонирую репозиторий где-то на моем ноутбуке
Я иду в каталог по
$ cd android/projects/folly/folly/
я бегу
git submodule update --init
но ничего не происходит Я даже запускаю эту команду в$ cd android/projects/folly/
но ничего не происходит.я бегу
autoreconf -ivf && ./configure && make && make install
, Кажется, работает, как я вижу, процесс занимает около минуты или двух, и распечатывается много сообщений.Я копирую / вставляю образец файла.apk на рабочий стол и запускаю
redex ~/Desktop/my_android_app.apk -o ~/Desktop/my_android_app-redexed.apk
, Тем не менее, я получаю это сообщение на терминале.Команда 'redex' не найдена, вы имели в виду: Команда 'redet' из пакета 'redet' (юниверс) redex: команда не найдена
Я побежал выше команды, когда я в /home/hesam/android/projects/folly/folly
или же /home/hesam/android/projects/folly/
, Но я получаю такой же вывод.
Обновить
Я клонировал репо Redex и следовал инструкциям Берта. Это работает, и я мог видеть, что что-то происходит, запустив git submodule update --init
, Так что спасибо Берту. Тем не менее, я получил ошибку в конце autoreconf -ivf && ./configure && make && make install
команда.
Пожалуйста, посмотрите на следующий вывод:
Making all in unit
make[3]: Entering directory `/home/hesam/android/projects/redex/test/unit'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/hesam/android/projects/redex/test/unit'
make[2]: Leaving directory `/home/hesam/android/projects/redex/test'
make[1]: Leaving directory `/home/hesam/android/projects/redex'
Making install in third-party/folly/folly
make[1]: Entering directory `/home/hesam/android/projects/redex/third-party/folly/folly'
Making install in .
make[2]: Entering directory `/home/hesam/android/projects/redex/third-party/folly/folly'
make[3]: Entering directory `/home/hesam/android/projects/redex/third-party/folly/folly'
/bin/mkdir -p '/usr/local/lib'
/bin/bash ./libtool --mode=install /usr/bin/install -c libfolly.la libfollybenchmark.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libfolly.so.57.0.0 /usr/local/lib/libfolly.so.57.0.0
/usr/bin/install: cannot create regular file '/usr/local/lib/libfolly.so.57.0.0': Permission denied
make[3]: *** [install-libLTLIBRARIES] Error 1
make[3]: Leaving directory `/home/hesam/android/projects/redex/third-party/folly/folly'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory `/home/hesam/android/projects/redex/third-party/folly/folly'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/hesam/android/projects/redex/third-party/folly/folly'
make: *** [install-recursive] Error 1
hesam: redex (master) $ redex ~/Desktop/my_android_app.apk -o ~/Desktop/my_android_app-redexed.apk
No command 'redex' found, did you mean:
Command 'redet' from package 'redet' (universe)
redex: command not found
hesam: redex (master) $
2 ответа
Есть разница в инструкциях, которые вы видите в fbredex, и в том, что вы видите на странице переопределения Github. Пожалуйста, следуйте тому, что говорит страница Github make
а также install
,
autoreconf -ivf && ./configure && make
sudo make install
Что касается моей вышеупомянутой проблемы, мне позвонил разработчик из команды Redex, и через несколько минут он нашел и решил проблему. Он обновил раздел FAQ на странице Redex, который вы можете увидеть здесь. Поскольку там нет никаких объяснений, я копирую / вставляю то, что он сказал в чате.
Таким образом, в качестве оптимизации компоновщик времени выполнения на самом деле не перебирает все, чтобы искать библиотеки, он использует файл кеша, сгенерированный ldconfig
Обновить
Я забыл упомянуть, что вы должны иметь ANDROID_SDK
в вашем ПУТИ. У меня есть следующие пути в моем .profile
, Не забудь source
это после внесения изменений в нем. ~/android/sdk
путь к моей директории Android SDK
export ANDROID_HOME=~/android/sdk
export ANDROID_SDK=${ANDROID_HOME}
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
Вам не нужно отдельно клонировать глупости; он включен как подмодуль переопределения. Просто делать:
git clone https://github.com/facebook/redex.git
cd redex
git submodule update --init
а затем настроить / сделать в соответствии с инструкциями.