根據this Blog BuildConfig.DEBUG是不可靠的。 因爲我的同事正在廣泛使用BuildConfig.DEBUG(看起來像生產代碼中的測試代碼),所以我想知道這個標誌是否仍然像幾年前一樣被竊聽。BuildConfig.DEBUG仍然被竊聽?
回答
你所指的問題似乎是針對ADT + Eclipse的。所以我相信如果你使用Gradle和Android Studio,這應該不是問題。
至關重要:這只是如果你使用自動構建選項,你不清理項目出現。因此,我很難考慮這個錯誤。畢竟,誰說什麼應該和不應該重建,每當你做一個代碼更改,並建立自動啓用?
作爲一個良好的做法,您應該始終在實際發佈之前清理並重建項目,在這種情況下,這不是問題。
所以是的,如果你使用這個設置,並且在發佈之前不重建你的項目,並且你還在使用ADT和Eclipse(這似乎是註定要棄用的),那麼這仍然是一個問題。
這裏是錯誤的討論:https://code.google.com/p/android/issues/detail?id=27940
非常好 - 感謝您的詳細解釋 – 2015-02-06 21:18:45
感謝您的有用信息。僅供參考,與第一段相反,使用Gradle至少有時候會報告發生在Android Studio(從2.1.1開始)中的問題*。 – LarsH 2016-05-19 13:33:54
我可以證實這個錯誤仍然存在,與Android工作室1.2構建AI-140.1782451和搖籃1.1編譯針對Android的API級別21
的問題是測試在Android 5.0.2或類似設備上可以看到Nexus 10。
如果您在源代碼編輯器中打開BuildConfig.DEBUG它說:
public static final boolean DEBUG = Boolean.parseBoolean("true");
但是,如果你受到質疑調試應用程序,DEBUG停留在假。 這阻礙了我的Retrofit-debugging,因爲我想根據構建類型來有條件地啓用它。
'Boolean.parseBoolean(「true」)'return'true',**但**過去與'ADT'構建(即。e:在Gradle構建之前)是 'public final static boolean DEBUG = Boolean.parseBoolean(null);' – 2016-08-16 14:33:20
您是否已將此問題報告給Google? – Sufian 2016-09-27 11:55:15
不,因爲由於一些調試構建類型,我現在使用BuildConfig.BUILD_TYPE並檢查與某個調試類型或分段類型是否相等。 – 2016-09-30 14:57:46
我一直與預定義變量的問題,所以我創建了自己:
buildTypes {
// If we use the same keystore for debug and release, we don't have to wipe all preferences
debug {
//noinspection GroovyAssignabilityCheck
signingConfig signingConfigs.releaseConfig
zipAlignEnabled true
resValue "bool", "DEBUG", "true"
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//noinspection GroovyAssignabilityCheck
signingConfig signingConfigs.releaseConfig
zipAlignEnabled true
resValue "bool", "DEBUG", "false"
}
}
我你的代碼,你可以閱讀這個變量:
if (!MyApplication.get().getResources().getBoolean(R.bool.DEBUG)) {
// Firebase Crash reporting
FirebaseCrash.report(e);
}
- 1. Buffer.byteLength()被竊聽
- 2. 其列和行被竊聽
- 3. .NET ComboBox是否被竊聽?
- 4. 如何檢測哪個UILabel被竊聽?
- 5. 如何知道哪個已被竊聽?
- 6. matlab的imfill函數似乎被竊聽?
- 7. 轉換在Safari中被竊聽
- 8. 當鍵盤下跌,而x被竊聽
- 9. Group Settings API似乎被竊聽
- 10. 顯示在錶行被竊聽
- 11. 是不是Jquery.validate.rules(「add」,{.....})被竊聽?
- 12. Facebook的風扇框被竊聽
- 13. UIAutomation UICollectionView細胞不能被竊聽
- 14. Monotouch.Dialog - 哪一個元素被竊聽
- 15. tabBarItem直到標籤欄被竊聽
- 16. 權限被拒絕仍然被添加到.on()監聽器
- 17. 竊聽的Internet Explorer
- 18. SIP通信竊聽
- 19. preg_match_all崩潰/竊聽?
- 20. AfterTextChanged即使在刪除收聽者後仍然被調用
- 21. dealloc仍然被調用嗎?
- 22. 是比較驗證竊聽
- 23. 解析竊聽?下面
- 24. jquery新聞股票竊聽
- 25. omp_get_thread_num()返回竊聽號碼?
- 26. 一個竊聽查詢
- 27. webclient竊聽或什麼?
- 28. JQuery Mobile Navbar正在竊聽
- 29. StatusStrip中的標籤竊聽
- 30. sqlite3 IOS查詢竊聽表
如果您使用的是Android Studio和搖籃的Android,'BuildConfig'和'R'一樣可靠,因爲它們是使用相同的機制創建的。我從來沒有遇到以前用'BuildConfig'和Eclipse/ADT報告的問題,所以我不知道它們是否被清除。 – CommonsWare 2015-02-06 20:16:33
我們使用的是Android Studio和Gradle - 聽說可以使用,我感到寬慰。 – 2015-02-06 21:26:48
如果BuildConfig.DEBUG正確使用,您實際上不會有生產測試代碼。對於這段代碼:'if(BuildConfig.DEBUG){foo();如果這個常量是錯誤的,那麼整個事情就會被消除。如果是這樣,編譯結果中只會出現'foo()'。 – JohnnyLambada 2016-08-31 23:06:20