簡體   English   中英

檢測 App android 是否處於 Debug 或 Release

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM