Определить, находится ли приложение android в режиме отладки или выпуска - PullRequest
0 голосов
/ 24 марта 2020

У меня есть несколько вопросов об отладке.

Я хотел бы создать различные настройки для использования, когда приложение запускается на телефоне (выпуск) и когда оно тестируется. Например, URL-адреса для API или пароли или UserId, которые могут отличаться на этапе тестирования.

Чтобы сделать это, я собираюсь установить все внутри sharedPreferences, а затем, если приложение отлаживается или нет, возьмите правильные переменные.

Я также думал о том, чтобы сохранить все в конфигурационных файлах , но сейчас я не понял, возможно ли это сделать или нет (я изучаю), и если это удобно

sharedPreferences Я понял, как это работает.

1) Я хотел бы знать, есть ли метод, который возвращает значение, если приложение отлажено или нет.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    if (BuildConfig.DEBUG) {
        toast("debug")
    }

}

но даже когда я устанавливаю приложение на телефон, оно говорит мне, что оно всегда отлажено

В будущем я также хотел бы искать автоматику c тестирование систем (чего я не знаю). Я читал, что есть Appium (но, конечно, и другие), который позволяет вам тестировать приложение, но пока я еще не углублялся в это.

2) В конце концов, есть способ понять, если вы находитесь в фаза тестирования, я не знаю, запускают ли эти утилиты приложение в тестовом или реальном режиме.

3) Знаете ли вы о других тестовых системах?

Спасибо

1 Ответ

1 голос
/ 24 марта 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...