【问题标题】:Detect if the App android is in Debug or Release检测 App android 是否处于 Debug 或 Release
【发布时间】:2020-03-24 16:01:19
【问题描述】:

我有几个关于调试的问题。

我想创建不同的首选项,以便在应用程序在手机上运行(发布)和测试时使用。 例如 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) 你知道其他的测试系统吗?

谢谢

【问题讨论】:

标签: android android-studio kotlin


【解决方案1】:

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 文件中使用变量。例如,您可以像这样预先填写表格

build.gradle

buildTypes {
    debug {
        resValue("string", "username", "JohnDoe")
        resValue("string", "password", "johnny")
    }

    release {
        resValue("string", "username", "")
        resValue("string", "password", "")
    }
}

如何使用它

R.string.username

【讨论】:

  • 感谢您的回复。 isProbablyAnEmulator() 比 BuildConfig.DEBUG 工作得更好。不能正常工作的是 buildTypes。当我安装应用程序时,我总是有调试的价值 code release { resValue "string", "facebook_app_id", "release 123" } debug { resValue "string", "facebook_app_id", "debug 345" } var ci= getString(R.string.facebook_app_id) toast("var Grandle" + ci) code
  • 你生成了Release版本吗?
  • 我用过Build APK
  • 默认情况下,您的变体处于调试状态。在 Android Studio 中勾选“Build Variant”窗口,在 Debug 和 Release 之间切换
猜你喜欢
  • 2013-10-25
  • 2018-12-16
  • 2016-05-09
  • 2018-12-30
  • 2013-03-24
  • 2011-05-02
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
相关资源
最近更新 更多