Android Espresso apk 文件及其 sdk 版本
Posted
技术标签:
【中文标题】Android Espresso apk 文件及其 sdk 版本【英文标题】:Android Espresso apk file and its sdk version 【发布时间】:2018-07-12 05:05:43 【问题描述】:目前我需要两个 apk 文件,以便我可以在 AWS 设备场上运行测试:
-
app.apk
app-androidTest.apk
app.apk 按我的预期生成
$ ./aapt list -a .../apk/app-debug.apk | grep SdkVersion
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10 A: android:targetSdkVersion(0x01010270)=(type 0x10)0x19 A: android:maxSdkVersion(0x01010271)=(type 0x10)0x19
但是无论我做什么,app-androidTest.apk 的 sdk 版本都固定为 0x19(25)
$ ./aapt list -a .../apk/app-debug-androidTest.apk | grep SdkVersion
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x19 A: android:targetSdkVersion(0x01010270)=(type 0x10)0x19
我的 gradle 设置如下:
compileSdkVersion 25
buildToolsVersion '25.0.2'
lintOptions
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
defaultConfig
applicationId "com.thisclicks.appdataroom"
minSdkVersion 16
targetSdkVersion 25
versionCode versCode as Integer
versionName versName
multiDexEnabled true
testInstrumentationRunner
我需要一个 minSdk 0x10、targetSdk 0x19 的测试 apk。但它不遵循我的 gradle 设置并被其他东西覆盖。但是没有 gradle 或 androidManifest 干扰。我的猜测是,当我生成测试 apk 时,我是通过在具有 API 25 的模拟器上手动运行来完成的。它会自动生成 apk。这是我的测试 apk 与 25 的 sdk 版本(最小和目标)绑定的可能原因吗?如果那你知道如何解决这个问题吗?
【问题讨论】:
【参考方案1】:我找到的唯一解决方案。是使用 API 级别低于目标 SDK 的模拟器运行测试。
如果我使用我的 android 8.0.1 设备运行测试,它会将 testcase.apk minsdk 设置为与目标 sdk 相同,即 26。但如果我在 android studio 中使用 api level 21 模拟器运行测试,它将构建测试用例apk 与 minsdk 18
希望对你有所帮助。
【讨论】:
【参考方案2】:assembleAndroidTest 命令也会在未连接设备时正确构建 APK。
【讨论】:
以上是关于Android Espresso apk 文件及其 sdk 版本的主要内容,如果未能解决你的问题,请参考以下文章
使用 Espresso for APK 编写 UI 测试,无需源代码