關於Android使用proguard進行代碼混淆

來源:互聯網
上載者:User

  自Android 2.3 SDK發布後,Google便在Android SDK Tools裡加入了proguard,proguard是一個可以對.java檔案進行一定程度上的代碼混淆,使用proguard是一件極方便工作,在你項目中沒有其他外部Jar包的情況下,在“project.properties”檔案裡,添加一行:

  1. proguard.config=proguard.cfg

複製代碼

     代碼即可,然後通過Android Tools(右擊項目名)裡匯出APK即可,如果項目所使用的的SDK版本低於2.3,只需要進行%android_dir%/tools/lib目錄,複製proguard.cfg檔案到項目的根目錄下匯出APK即可。
      這是一般情況,即無第三方Jar包,如果存在第三方Jar包,那麼開啟proguard.cfg檔案進行編輯,在其中加入以下代碼:

  1. -libraryjars %lib_jar_path%

複製代碼

     有幾個Jar包,便添加幾次,如在項目的libs目錄下有a.jar,b.jar,c.jar三個Jar包:

  1. -libraryjars libs/a.jar
  2. -libraryjars libs/b.jar
  3. -libraryjars libs/c.jar

複製代碼

     如此,通過android tools匯出APK即可。
      此外,還有些特殊情況,會令匯出發生異常,視具體異常情況而定,修改proguard.cfg檔案。
      比如出現了以下異常:

  1. Warning: com.google.android.maps.MapView: can't find referenced class com.android.mkstubs.stubber.MethodStubber
  2. Warning: com.google.android.maps.MapView$1: can't find referenced class com.android.mkstubs.stubber.MethodStubber

複製代碼

即:

  1. Warning: %class_full_name%: can't find referenced class %class_full_name%

複製代碼

     這種異常情況,需要在proguard.cfg檔案中,添加以下代碼:

  1. -dontwarn %class_full_name%

複製代碼

     即可,便以上面例子而言,應當如下:

  1. -dontwarn com.google.android.maps.*

複製代碼

     等等,此類情況修改proguard.cfg檔案即可,還有種特殊情況,需要對引入的Jar包進行修改,如下:

  1. Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
  2. Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser

複製代碼

     這是因為引用的Jar包中含有xmlpull類庫,Android系統的類庫中已經包含了xmlpull,這樣混淆出現了衝突,解決辦法是把它裡面已存在的和系統庫衝突的類去掉,就可以了,產生衝突的類可見控制台輸出。
      另外對不想混淆的類/方法/變數,可以使用-keep指定,具體參考proguard.cfg檔案寫法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.