Как настроить 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
  1. Я клонирую репозиторий где-то на моем ноутбуке

  2. Я иду в каталог по $ cd android/projects/folly/folly/

  3. я бегу git submodule update --init но ничего не происходит Я даже запускаю эту команду в $ cd android/projects/folly/ но ничего не происходит.

  4. я бегу autoreconf -ivf && ./configure && make && make install, Кажется, работает, как я вижу, процесс занимает около минуты или двух, и распечатывается много сообщений.

  5. Я копирую / вставляю образец файла.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 а затем настроить / сделать в соответствии с инструкциями.

Другие вопросы по тегам