自動刪除Android工程中無用的資源

開發時間久了, 幾個版本迭代以後, 工程中不免留下不少垃圾資源, 形成apk的包很大, 這裏介紹一個工具, 能夠自動掃描工程中, 沒有使用的資源, 而後自動刪除: 包括圖片, xml, 文本等. html

採用的方案: https://github.com/KeepSafe/android-resource-removerpython

這個開源的項目是基於lint掃描的結果, 執行python腳本自動刪除無用的文件.android

有一段時間沒更新了, 並且是基於以前eclipse的路徑結構, 不過即便是gradle工程, 仍然是可用的. 下面就是具體的方法, 本文是在mac os x上, 其餘的操做系統大同小異.git

1. 安裝github

    首先是安裝: app

pip install android-resource-remover

2. 執行eclipse

     a. eclipse工程工具

   直接在項目根目錄下執行 測試

android-resource-remover

     b. Android Studio工程gradle

   注意, 按照github中的命令: 

    ./gradlew clean build :lint && android-resource-remover --xml build/outputs/lint-results.xml

   是不能工做的, 由於項目好久沒更新, 對gradle的目錄結構等支持很差, 通過本人摸索, 找到了可用的方法.

3. 編譯

  首先clean工程:

  在項目根目錄下執行

./gradlew clean

  而後編譯:

./gradlew build 

  注意, 由於是命令行編譯, 有時會遇到系統jdk版本和Android Studio內置的jdk版本不同, 編譯失敗的問題, 請正確的切換jdk版本.  

      若是不會切換, 最簡單的方法就是將JAVA_HOME設置爲Android Studio內置的jdk路徑, mac上是

export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"

      Android Studio內置的jdk路徑能夠在Android Studio的項目設置的SDK Location中找到, 以下圖所示

              

      設置jdk路徑就能夠正常編譯了, 只要在AndroidStudio裏能編過, 命令行也能編過. build過程最後會執行lint掃描, 這正是咱們想要的結果.

4. 基於lint結果, 刪除圖片

  編譯以後lint掃描的結果在app/build/outputs/lint-results-debug.xml, 這是debug版的, 也有release版的. 

    這裏就有路徑問題了, 因此要按照下面的步驟操做:

  a. cd 到AndroidManifest.xml同一路徑下, 即main文件夾

cd app/src/main

  b. 執行腳本

android-resource-remover --xml ../../../app/build/outputs/lint-results-debug.xml

    注意這裏使用了相對路徑../三次,返回到根目錄, 也可使用絕對路徑來指定lint結果文件.

      腳本就會自動刪除沒有引用的資源了, 會輸出刪除的結果, 以下圖所示.

    

5. 修正

  刪除後編譯一下, 會有一些誤刪, 可是本人測試發現, 誤判數量不多, 基本上是個位數的, 誤判的文件回覆便可, 就能夠編譯經過. 

     而後能夠多執行幾回, 有些文件一次掃不全, 要多掃幾回, 執行4-5次便可, 每次都從clean開始, 而後build, 再執行腳本.

對於大型的工程這個方法很是節省時間, 能夠在每次發版以前掃描一下, 給apk瘦身.

轉載註明出處: http://www.cnblogs.com/dqshll/p/6496325.html 

相關文章
相關標籤/搜索