我見過幾個例子proguard的這些行:爲什麼我應該在ProGuard中保存BuildConfig?
# Keep the BuildConfig
-keep class com.example.BuildConfig { *; }
我已經沒有這個線運行的應用程序(當然,我的包),並沒有發現任何差異。 我也看過生成的/.../ BuildConfig.java,也沒有改變。
如何在ProGuard中保留我的BuildConfig?
謝謝!
我見過幾個例子proguard的這些行:爲什麼我應該在ProGuard中保存BuildConfig?
# Keep the BuildConfig
-keep class com.example.BuildConfig { *; }
我已經沒有這個線運行的應用程序(當然,我的包),並沒有發現任何差異。 我也看過生成的/.../ BuildConfig.java,也沒有改變。
如何在ProGuard中保留我的BuildConfig?
謝謝!
與其他課程一樣,如果您通過反射間接訪問該類,則需要-keep
該類,以便ProGuard不會混淆它或將其優化爲未使用。
最常與BuildConfig
的訪問模式是直接沒有反射所以在這種情況下它的罰款,有ProGuard的過程中你的BuildConfig
了。
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"
}
}
因此,要回答你的問題,據我所知,你沒有保持文件,但它是很好的做法,這樣做,將其用於您的配置需求。
我沒有通過反射訪問它(至少不是有意的;-),並且當我沒有從反射中排除它時它仍然失敗。我確實通過Gradle添加了參數。但是這應該在混淆之前完成,所以我不明白它爲什麼失敗。 – Torge