2016-04-15 35 views
0

在Redex頁面http://fbredex.com/有非常不錯的說明。如何設置Facebook Redex以優化Android字節碼?

我按照說明,但我有兩個步驟的問題。所以,任何想法/幫助將不勝感激。

1.I具有第一命令的運行(我的OS是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 
  • 我克隆在我的筆記本folly回購某處

  • 我去目錄由$ 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。但是,我在終端上收到此消息。

  • 無命令 '歸約' 發現,你的意思是:從包命令 'redet' 'redet'(宇宙)歸約:找不到命令

    我上面的命令跑,當我我在/home/hesam/android/projects/folly/folly/home/hesam/android/projects/folly/。但是我得到相同的輸出。

    更新

    我克隆Redex回購和隨後Bert的指令。它可以工作,我可以通過運行git submodule update --init來看到發生了什麼。非常感謝Bert。但是,我在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) $ 
    
    +0

    閱讀關於Github上的問題。人們有你的問題,並有答案如何解決它 – WizKid

    回答

    1

    關於您在fbredex中看到的說明以及您在Github redex頁中看到的內容,存在差異。請按照Github頁面所述的makeinstall

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

    關於我的上述問題,Redex團隊的一名開發人員打電話給我,幾分鐘後他發現並解決了問題。他更新了Redex頁面上的FAQ部分,您可以看到at here。由於沒有解釋,我複製/粘貼他在聊天時所說的內容。

    因此,作爲優化,運行時鏈接實際上並沒有去 通過一切拖網尋找庫了它使用的緩存文件 ,這是產生LDCONFIG

    更新

    我忘了提及你必須在PATH中有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 
    
    1

    你不需要單獨克隆愚蠢;它被包含爲redex的子模塊。只要: git clone https://github.com/facebook/redex.git cd redex git submodule update --init 然後根據說明配置/製造。

    +0

    嗨,伯特。感謝您的回覆。你的指導幫助我解決了第一個問題。但是,我的第二個問題仍然存在。請看看更新。謝謝。 – Hesam

    +0

    1.autoreconf -ivf && ./configure && make 2.sudo make install在上述應答命令後運行這個命令,你將得到redex命令的識別。 –