我正在使用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?
那是完整的錯誤日誌?看起來你遺漏了實際的7 + 2未解決的參考。使用'-twtwarn'很容易,例如參見這個例子:http://stackoverflow.com/questions/6974231/proguard-hell-cant-find-referenced-class – Jonik
至於你的問題1),對於實際版本構建(谷歌播放等),建議使用ProGuard。 (但是,如果您不關心您的應用程序很容易進行逆向工程,則不是強制性的。)我認爲絕對值得花兩個小時學習使用ProGuard並解決您遇到的錯誤。 – Jonik
感謝您的快速響應。 現在,當在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