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