因此,当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就好了,我已经在几个设备上对其进行了测试。这里发生了什么?
值得一提的是,我使用espresso 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'
})
错误页面中的图片:
答案 0 :(得分:1)
Nikitah,
无法安装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'
希望有所帮助!
答案 1 :(得分:0)
问题没有得到解决,但回答了我自己的问题,因为问题不再相关 - 它与AWS Device Farm无关。
通过分析测试的.apk,我发现Android Studio在它覆盖测试minSdkVersion
时会做一些奇怪的魔术。
来自Android的documentation:您可以根据需要添加自己的清单文件,例如为minSdkVersion
指定不同的值或仅为您的测试注册运行侦听器。
所以我为我的测试创建了一个单独的清单(它确实使用了它),但build.gradle
仍然覆盖minSdkVersion
为targetSdkVersion
。
解决后会更新我的答案。