AWS设备农场错误:INSTALL_FAILED_OLDER_SDK,但我有向后兼容
所以,我收到以下错误,当采用Android 7.0(或更低)设备农场设备尝试安装我的应用程序:AWS设备农场错误:INSTALL_FAILED_OLDER_SDK,但我有向后兼容
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版本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'
})
图像从错误页面:
问题没有解决,但回答我自己的问题,因为问题不再相关 - 它与AWS Device Farm无关。
通过分析测试的.apk,我发现Android Studio在覆盖测试minSdkVersion
的地方做了一些奇怪的魔术。
从Android的documentation:必要时,可以添加自己的清单文件,如为minSdkVersion
指定不同的值或寄存器运行听众只为你的测试。
所以我为我的测试创建了一个单独的清单(但它确实使用它),但build.gradle
仍然覆盖minSdkVersion
为targetSdkVersion
。
问题解决后会更新我的答案。
Nikitah,
Failed to install com.carto.advanced.kotlin.test
未能安装的软件包以.test
结尾,它告诉我这是测试APK而不是未安装的实际应用程序APK。
我的猜测是,您的仪器APK中的AndroidManifest.xml
将minSdkVersion
设置为25(或未设置)。
您可以使用aapt
进行确认。例如:
⇒ aapt debug badging <your-instrumentation.apk> | grep -i sdkversion sdkVersion:'14' targetSdkVersion:'24'
希望帮助!
Cheerio,它确实是由具有minSdkVersion =“23”的工具清单引起的,但是,测试的AndroidManifest.xml是自动生成的。 如果我在较低版本的Android设备(例如5.1)上运行测试,自动生成的minSdkVersion是正确的 - 18,如我的build.gradle中指定的。 现在我已经添加了一个清单文件到我的测试,它仍然覆盖它minSdkVersion =“23” 这是一些奇怪的屁股Android Studio魔术在这里。 – Nikitah
我会说,没有什么可通过AWS来解决,设置类似 在AndroidManifest中的androidTest目录是一个有效的解决方案。 – bajicdusko