android - androidTest错误AAPT:错误:属性android:forceQueryable未找到
问题描述
尝试运行 androidTest 时出现以下错误
错误
> Task :app:processDebugAndroidTestResources FAILED
AGPBI: {"kind":"error","text":"Android resource linking failed","sources":[{"file":"/Users/xx/yy/app/build/intermediates/packaged_manifests/debugAndroidTest/AndroidManifest.xml","position":{"startLine":21}}],"original":"/Users/xx/yy/app/build/intermediates/packaged_manifests/debugAndroidTest/AndroidManifest.xml:22: AAPT: error: attribute android:forceQueryable not found.\n ","tool":"AAPT"}
Execution failed for task ':app:processDebugAndroidTestResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Android resource linking failed
/Users/xx/yy/app/build/intermediates/packaged_manifests/debugAndroidTest/AndroidManifest.xml:22: AAPT: error: attribute android:forceQueryable not found.
测试文件
package com.xx.view
import android.app.Application
import android.content.Context
import androidx.recyclerview.widget.RecyclerView
import androidx.test.InstrumentationRegistry.getTargetContext
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.IdlingRegistry
import androidx.test.espresso.action.ViewActions
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.contrib.RecyclerViewActions
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.filters.LargeTest
import androidx.test.rule.ActivityTestRule
import androidx.test.rule.GrantPermissionRule
import androidx.test.runner.AndroidJUnit4
import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.UiSelector
import com.xx.R
import kotlinx.android.synthetic.main.activity_main.*
import org.hamcrest.Matchers.allOf
import org.hamcrest.core.IsInstanceOf
import org.junit.*
import org.junit.runner.RunWith
@LargeTest
@RunWith(AndroidJUnit4::class)
class MainActivityTest {
@Rule
@JvmField
var mActivityTestRule = ActivityTestRule(MainActivity::class.java)
@Rule
@JvmField
val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION)
lateinit var context: Context
lateinit var app: Application
lateinit var mainActivity: MainActivity
lateinit var idlingResource: MainActivityIdlingResource
private lateinit var myDevice: UiDevice
@Before
fun setup() {
context = InstrumentationRegistry.getTargetContext()
app = InstrumentationRegistry.getTargetContext().applicationContext as Application
mainActivity = mActivityTestRule.activity
myDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
idlingResource = MainActivityIdlingResource(mActivityTestRule.activity.recyclerList, mActivityTestRule.activity.javaClass.simpleName)
IdlingRegistry.getInstance().register(idlingResource)
//mActivityTestRule.launchActivity(null)
}
@After
fun teardown() {
IdlingRegistry.getInstance().unregister(idlingResource)
}
}
应用 Gradle 文件
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'kotlin-kapt'
}
android {
compileSdkVersion 29
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.xx"
minSdkVersion 18
targetSdkVersion 29
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dataBinding {
enabled = true
}
kotlinOptions {
jvmTarget = '1.8'
}
packagingOptions {
pickFirst("META-INF/atomicfu.kotlin_module")
}
}
dependencies {
//Test dependencies
androidTestImplementation 'junit:junit:4.13'
androidTestImplementation "org.koin:koin-test:$koin_version"
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0'
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0';
androidTestImplementation 'androidx.test:rules:1.3.1-alpha02'
testImplementation "io.mockk:mockk:$mockk_version"
}
解决方案
推荐阅读
- sas - 使用宏而不是 25 个 proc sql 步骤?
- python - 如何根据另一个数据框行值通过连接填充一个数据框行单元格?
- android - 房间:为参数传递值
- wordpress - 带有 3 个链接数据点的 Wordpress 自定义字段
- laravel - laravel 什么时候执行 yearly() 函数
- django - Django REST 框架 - 反向 ForeignKey 关系
- java - 接口的静态和最终规则
- css - 为什么chrome浏览器在第一时间无法显示div的裁剪部分?
- java - 为什么Splitter直接返回集合在Spring Integration中处理集合的项的情况下?
- python-3.x - 有没有办法将整数列表转换为单个变量?