工具:overrideLibrary 不工作

问题描述 投票:0回答:3

我想在支持 Android 至 11 级的构建中使用库

android.support.test.uiautomator.v18
。我的清单开始:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="xxxdeletedxxx"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk
        android:targetSdkVersion="23"
        android:minSdkVersion="11"
        tools:overrideLibrary="com.android.support.test.uiautomator:uiautomator-v18" />

在 build.gradle 中我有

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

运行 ./gradlewconnectedCheck 给出:

* What went wrong:
Execution failed for task ':app:processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 11 cannot be smaller than version 18 declared in library [com.android.support.test.uiautomator:uiautomator-v18:2.1.1] /Users/ewanbenfield/AndroidStudioProjects/TM/app/build/intermediates/exploded-aar/com.android.support.test.uiautomator/uiautomator-v18/2.1.1/AndroidManifest.xml
    Suggestion: use tools:overrideLibrary="android.support.test.uiautomator.v18" to force usage
android android-studio
3个回答
3
投票

您的 build.gradle 和 AndroidManifest 中提到的软件包之间可能存在差异。

AndroidManifest 至少应包含

<uses-sdk
    tools:overrideLibrary="com.android.support.test.uiautomator.v18"/>

你的 build.gradle 应该包含

androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'

我最近遇到了类似的问题,我忘记输入“com”。在我的 AndroidManifest 中


1
投票

可能是这个错误:https://code.google.com/p/android/issues/detail?id=230777(“构建工具:processDebugManifest步骤是否失败取决于项目依赖项的顺序”)

在报告的情况下,重新排序依赖项有效。


0
投票

如果你想知道这个问题,你必须注意android studio给出的日志推荐。 就我而言,我发现 use-sdk 标签内的依赖关系必须与 gradle 内的依赖关系不同。

例如,这是我在 gradle 中的实现:

implementation "com.xxxx.xxxxxx:api:1.6.6"

但是根据错误日志需要的依赖是:

<uses-sdk tools:overrideLibrary="com.xxxx.xxxxxxapi"/>

请注意,uses-sdk 标签内的 api 单词之前没有 : 。

我已将 gradle 中的字符串复制并粘贴到 use-sdk 中...这就是错误。

希望这有帮助...编码愉快!

© www.soinside.com 2019 - 2024. All rights reserved.