2014-01-14 24 views
25

我正在使用android studio構建調試和發佈應用程序。 當我建立調試/發佈應用如何在ProGuard中使用-twtwarn?

./gradlew assembleDebug 

./gradlew assembleRelease 

兩個構建完美地創建和運行也是如此。顯示相應的對話框進行調試或釋放的build.gradle

現在我已經加入proguard的細節:

signingConfigs { 
    myConfig { 
      storeFile file("keystore.jks") 
      storePassword "abc123!" 
      keyAlias "androidreleasekey" 
      keyPassword "pqrs123!" 
    } 
} 

buildTypes { 
    release { 
     runProguard true 
     proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 
     signingConfig signingConfigs.myConfig 
    } 
} 
productFlavors { 
    defaultFlavor { 
     proguardFile 'proguard-rules.txt' 
    } 
} 

現在,它顯示了在事件日誌錯誤的

警告:有7懸而未決對類或接口的引用。 您可能需要添加缺少的庫罐或更新其版本。 如果您的代碼在沒有缺失的類的情況下正常工作,您可以使用'-twtwarn'選項禁止 警告。 (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass

警告:有2個未解析的程序類成員的引用。 您的輸入類似乎不一致。 您可能需要重新編譯代碼。

http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) :閃存銷售:proguardDefaultFlavorRelease失敗

如果我把runProguard選項設置爲false,然後它的運行。

我有以下問題:

1)它是確定釋放APK與runProguard =假?

2)如何在創建發佈版本時使用dontwarn?

+0

那是完整的錯誤日誌?看起來你遺漏了實際的7 + 2未解決的參考。使用'-twtwarn'很容易,例如參見這個例子:http://stackoverflow.com/questions/6974231/proguard-hell-cant-find-referenced-class – Jonik

+1

至於你的問題1),對於實際版本構建(谷歌播放等),建議使用ProGuard。 (但是,如果您不關心您的應用程序很容易進行逆向工程,則不是強制性的。)我認爲絕對值得花兩個小時學習使用ProGuard並解決您遇到的錯誤。 – Jonik

+0

感謝您的快速響應。 現在,當在proguard-rules.txt 中添加該行dontwarn時,構建已成功創建。 現在我有一個問題 我正在參考的警告, 警告:jcifs.http.NetworkExplorer:找不到超類或接口javax.servlet.http.HttpServlet 警告:jcifs.http。NtlmHttpFilter:找不到超類或javax.servlet.Filter接口 當我用 方式1:-dontwarn的javax.servlet ** 或該 方式2:-dontwarn jcifs.http ** 的構建成功創建。 那麼,哪種方式應該是首選,這兩者之間有什麼不同? – morya

回答

23

當我將新的lib添加到項目中通常我需要爲Progaurd定義這個方法。

假設我正在使用Twitter4J lib,然後我用這種方法添加dontwarn。

-keep class twitter4j。​​* {*; }

-dontwarn twitter4j。​​*

+0

是否存在「未解決的參考」警告意味着Proguard確實刪除了類?我不應該過濾那些而不是dontwarn? –

+3

你在哪裏添加它? – jonney

+0

@jonney請檢查[**這個**](http://stackoverflow.com/questions/4732656/enabling-proguard-in-eclipse-for-android)後,可能會幫助你。 – swiftBoy