2016-04-25 59 views
2

我見過幾個例子proguard的這些行:爲什麼我應該在ProGuard中保存BuildConfig?

# Keep the BuildConfig 
-keep class com.example.BuildConfig { *; } 

我已經沒有這個線運行的應用程序(當然,我的包),並沒有發現任何差異。 我也看過生成的/.../ BuildConfig.java,也沒有改變。

如何在ProGuard中保留我的BuildConfig?

謝謝!

回答

1

與其他課程一樣,如果您通過反射間接訪問該類,則需要-keep該類,以便ProGuard不會混淆它或將其優化爲未使用。

最常與BuildConfig的訪問模式是直接沒有反射所以在這種情況下它的罰款,有ProGuard的過程中你的BuildConfig了。

+0

我沒有通過反射訪問它(至少不是有意的;-),並且當我沒有從反射中排除它時它仍然失敗。我確實通過Gradle添加了參數。但是這應該在混淆之前完成,所以我不明白它爲什麼失敗。 – Torge

2

BuildConfig包含編譯時設置的useful values數。具體來說這些:

boolean DEBUG – if the build is debuggable. 
int VERSION_CODE 
String VERSION_NAME 
String APPLICATION_ID 
String BUILD_TYPE – name of the build type, e.g. "release" 
String FLAVOR – name of the flavor, e.g. "paidapp" 

您還可以設置自己的配置值,例如,用於測試和生產的不同URL,並從BuildConfig文件中檢索它們,而不是維護您自己的Config.java文件。這可以通過添加buildConfigFields您gradle這個buildTypes像這樣做:

buildTypes { 
    debug { 
     buildConfigField "boolean", "SOME_VAR", "true" 
    } 
    release { 
     buildConfigField "boolean", "SOME_VAR", "false" 
    } 
} 

因此,要回答你的問題,據我所知,你沒有保持文件,但它是很好的做法,這樣做,將其用於您的配置需求。

相關問題