繁体   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