ProGuard最佳化Android日誌

來源:互聯網
上載者:User

標籤:android   style   blog   http   java   使用   

Android應用開發過程中,一般會加入各種日誌列印,便於代碼調試,android.util.Log的方法經常被使用。如果應用總是在後台不斷的輸出Log.i或Log.d的內容,除了增加系統開銷外,對應用的整體效率受影響。ProGuard通過刪除從未用過的代碼和使用晦澀名字重新命名類、欄位和方法,對代碼進行壓縮,最佳化和混淆。結果產生一個比較小的.apk檔案,該檔案比較難進行逆向工程,因此安全性較高。

1 基礎配置

       在Eclipse中建立一個Android工程,一個proguard-project.txt檔案會在工程的根目錄下自動建立。預設情況下,Eclipse中的建立工程不會加入ProGuard功能,需要修改project.properties檔案。即將“#proguard.config=…”前端的“#”去掉就可以了。“proguard.config=”的配置資訊由兩部分組成:預設部分和工程特有部分,工程特有部分將附加到預設部分(如提示),共同組成工程的混淆配置,因此如果需要根據需求配置混淆檔案,只需要修改proguard-project.txt。

2 最佳化日誌

       預設情況下,上一節的配置沒有最佳化功能,因此我們應該將project.properties檔案中的“${sdk.dir}/tools/proguard/proguard-android.txt”替換為“${sdk.dir}/tools/proguard/proguard-android-optimize.txt”,這樣最佳化功能才沒有被關閉。

       最佳化日誌主要是通過如下命令實現:

        -assumenosideeffects class_specification

       這個命令指出了哪些方法是無副作用的。在最佳化階段,此命令將會去除這些方法的調用。

3  執行個體

       按照以上介紹的步驟和方法,建立工程,並配置ProGuard,在proguard-project.txt檔案中新增如下指令。

-assumenosideeffects class android.util.Log {             public  static int v(...);             public  static int i(...);             public  static int w(...);             public  static int d(...);   }

需要注意的是,在Eclipse裡的Run或BuildProject/Build All來產生Apk,是不會混淆代碼的!“Export UnsignedApplication Package...”,然後按照嚮導操作即可,最終產生了不簽名的Apk。查看效果可以用7z等壓縮程式開啟,將其中的classes.dex解壓,用dex2jar轉成jar格式後,再用Java反編碼工具jd-gui開啟,就會看到代碼的混淆效果。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.