Ошибка фермы устройств AWS: INSTALL_FAILED_OLDER_SDK, но у меня обратная совместимость

Поэтому я получаю следующую ошибку, когда устройства фермы устройств с Android 7.0 (и ниже) пытаются установить мое приложение:

Failed to install com.carto.advanced.kotlin.test - 
INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: 
/data/app/vmdl777879102.tmp/base.apk (at Binary XML file line #5): 
Requires newer sdk version #25 (current version is #24)

Хотя это технически правильно, я нацеливаюсь на SDK 25, у меня также установлена обратная совместимость, и это не должно быть проблемой.

compile 'com.android.support:appcompat-v7:25.2.0'

Вот соответствующий раздел моего build.gradle:

compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "com.carto.advanced.kotlin"
    minSdkVersion 18
    targetSdkVersion 25
    versionCode 4
    versionName "0.3.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    manifestPlaceholders = [HOCKEYAPP_APP_ID: "xxxx"]
}

Он устанавливает и работает на всех >=18 просто отлично, я тестировал его на нескольких устройствах. Что тут происходит?

Стоит отметить, что я использую эспрессо версии 2.2.2 и UIAutomator version-v18:2.0.0

compile 'com.android.support.test.uiautomator:uiautomator-v18:2.0.0'
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

Изображение со страницы ошибки:

Изображение со страницы ошибки

Изображение со страницы результатов:

2 ответа

Решение

Проблема не решена, но отвечаю на мой собственный вопрос, так как вопрос больше не актуален - он не связан с AWS Device Farm.

Проанализировав.apk теста, я обнаружил, что Android Studio совершает странную магию, когда переопределяет тесты. minSdkVersion,

Из документации Android: при необходимости вы можете добавить свой собственный файл манифеста, например, указать другое значение для minSdkVersion или зарегистрируйте прослушиватели run только для ваших тестов.

Поэтому я создал отдельный манифест для своего теста (и он его использует), но build.gradle все еще переопределяет minSdkVersion быть targetSdkVersion,

Обновлю мой ответ, когда он будет решен.

Nikitah,

Не удалось установить com.carto.advanced.kotlin.test

Пакет, который не удается установить, заканчивается .test что говорит мне о том, что это APK инструментария, а не само приложение APK, которое не удается установить.

Я думаю, что AndroidManifest.xml в вашей аппаратуре APK имеет minSdkVersion установить на 25 (или не установлен).

Вы можете подтвердить, используя aapt, Например:

⇒ aapt debug badging <your-instrumentation.apk> | grep -i sdkversion sdkVersion:'14' targetSdkVersion:'24'

Надеюсь, это поможет!

Другие вопросы по тегам