2017-10-11 99 views
0

所以,我收到以下錯誤,當採用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' 
    }) 

圖像從錯誤頁面:

Image from error page

從效果圖頁碼: enter image description here

回答

0

問題沒有解決,但回答我自己的問題,因爲問題不再相關 - 它與AWS Device Farm無關。

通過分析測試的.apk,我發現Android Studio在覆蓋測試minSdkVersion的地方做了一些奇怪的魔術。

從Android的documentation必要時,可以添加自己的清單文件,如爲minSdkVersion指定不同的值或寄存器運行聽衆只爲你的測試

所以我爲我的測試創建了一個單獨的清單(但它確實使用它),但build.gradle仍然覆蓋minSdkVersiontargetSdkVersion

問題解決後會更新我的答案。

+0

我會說,沒有什麼可通過AWS來解決,設置類似 <使用-SDK 機器人:maxSdkVersion = 「26」 安卓的minSdkVersion = 「21」 機器人:targetSdkVersion = 「26」/> 在AndroidManifest中的androidTest目錄是一個有效的解決方案。 – bajicdusko

1

Nikitah,

Failed to install com.carto.advanced.kotlin.test

未能安裝的軟件包以.test結尾,它告訴我這是測試APK而不是未安裝的實際應用程序APK。

我的猜測是,您的儀器APK中的AndroidManifest.xmlminSdkVersion設置爲25(或未設置)。

您可以使用aapt進行確認。例如:

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

希望幫助!

+0

Cheerio,它確實是由具有minSdkVersion =「23」的工具清單引起的,但是,測試的AndroidManifest.xml是自動生成的。 如果我在較低版本的Android設備(例如5.1)上運行測試,自動生成的minSdkVersion是正確的 - 18,如我的build.gradle中指定的。 現在我已經添加了一個清單文件到我的測試,它仍然覆蓋它minSdkVersion =「23」 這是一些奇怪的屁股Android Studio魔術在這裏。 – Nikitah