[英]Detect if the App android is in Debug or Release
我有幾個關於調試的問題。
我想創建不同的首選項,以便在應用程序在手機上運行(發布)和測試時使用。 例如,API 的 URL 或密碼或 UserId 在測試階段可能會有所不同。
為此,我正在考慮在 sharedPreferences 中設置所有內容,然后如果應用程序正在調試,則采用正確的變量。
我也想過將所有內容保存在配置文件中,但目前我不明白是否可以這樣做(我正在學習)以及是否方便
我理解它是如何工作的 sharedPreferences。
1)我想知道是否有一種方法可以在應用程序被調試時返回一個值。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (BuildConfig.DEBUG) {
toast("debug")
}
}
但即使我在手機上安裝該應用程序,它也告訴我它始終處於調試狀態
將來我還想尋找自動測試系統(我不知道)。 我讀到有 Appium(當然還有其他的)可以讓您測試應用程序,但現在我還沒有深入研究。
2)最終有一種方法可以了解您是否處於測試階段,我不知道這些實用程序是在測試模式還是實模式下運行應用程序。
3) 你知道其他的測試系統嗎?
謝謝
BuildConfig.DEBUG
指的是當前變體,而不是應用是否部署在設備上。 這是 Kotlin 中的一種方法,用於檢查您的應用程序是否部署在模擬器上
fun isProbablyAnEmulator() = Build.FINGERPRINT.startsWith("generic")
|| Build.FINGERPRINT.startsWith("unknown")
|| Build.MODEL.contains("google_sdk")
|| Build.MODEL.contains("Emulator")
|| Build.MODEL.contains("Android SDK built for x86")
|| Build.BOARD == "QC_Reference_Phone" //bluestacks
|| Build.MANUFACTURER.contains("Genymotion")
|| Build.HOST.startsWith("Build") //MSI App Player
|| (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))
|| "google_sdk" == Build.PRODUCT
我認為,在 Debug 和 Release 之間使用不同配置的最佳方法是在 gradle 文件中使用變量。 例如,您可以像這樣預填表格
構建.gradle
buildTypes {
debug {
resValue("string", "username", "JohnDoe")
resValue("string", "password", "johnny")
}
release {
resValue("string", "username", "")
resValue("string", "password", "")
}
}
如何使用它
R.string.username
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.