2016-08-20 45 views
2

我在我的Android項目中使用gson庫:不包括未使用的庫發佈APK

compile 'com.google.code.gson:gson:2.7' 

我使用它沒有應用模塊,但在我的Android庫,這個庫添加到項目。只有幾個班(groupA)使用gson。 Android庫是通用庫,用於多個Android項目,但在當前的Android項目中不使用groupA的類。

我在應用程序的build.gradle

android { 
... 
    buildTypes { 
     release { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

我建發佈的APK,並反編譯classes.dex。我在apk中找不到班級groupA。沒關係。 proguard刪除未使用的代碼。

不幸的是我看到gson類。但爲什麼?爲什麼proguard不刪除gson類? gson真的不用於發佈版本的項目。

+0

不https://docs.gradle.org/current/userguide/userguide_single .html#sec:listing_dependencies顯示添加gson的依賴項? – sschrass

+0

@sschrass,不要幫助 –

回答

0

爲什麼proguard不會刪除gson類?

問它:
使用ProGuard的選項-whyareyoukeeping找出爲什麼GSON類不會被刪除

http://proguard.sourceforge.net/manual/usage.html#shrinkingoptions

+0

我添加到proguard規則文件的下一行:'-whyareyoukeeping類com.google。 gson.Gson'。然後從命令行構建:'gradle assembleRelease --info'。我在日誌單詞'gson'中搜索,然後找到:'com.google.gson。 由配置中的指令保存。 –