Как использовать инструменты: overrideLibrary в файле build.gradle?

Я использую библиотеки leanback, для которых требуется Android 17 или новее. Однако мое приложение поддерживает minSDK из 16, поэтому я получаю ошибку сборки от gradle, говоря

Error:Execution failed for task ':Tasks:processPhoneDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 17 declared in library /Users/mike/Projects/android-for-dummies-v3/Tasks/build/intermediates/exploded-aar/com.android.support/leanback-v17/21.0.2/AndroidManifest.xml
    Suggestion: use tools:overrideLibrary="android.support.v17.leanback" to force usage

Когда я смотрю документацию по инструментам сборки, я вижу, как добавить маркер overrideLibrary к моему манифесту, но проблема в том, что я объявляю свой minSdk в моем gradle файле, а не в моем манифесте.

Как использовать overrideLibrary, когда minSdk объявлен в build.gradle, а не в AndroidManifest.xml?

Ответ 1

Открыть Android Studio → Открыть файл манифеста

добавить <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>  не забудьте также включить xmlns:tools="http://schemas.android.com/tools", перед тегом <application>

enter image description here

Ответ 2

не имеет значения, что вы объявляете ваш minSdk в build.gradle. Вы должны скопировать overrideLibrary в ваш AndroidManifest.xml, как AndroidManifest.xml здесь.

<manifest 
    ... >
<uses-sdk tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
    ...
</manifest>

Система автоматически игнорирует sdkVersion, объявленный в AndroidManifest.xml.

Я надеюсь, что это решит вашу проблему.

Ответ 3

<manifest xmlns:tools="http://schemas.android.com/tools" ... >
  <uses-sdk tools:overrideLibrary="nl.innovalor.ocr, nl.innovalor.corelib" />

Я столкнулся с проблемой конфликта между различными версиями min sdk. Так что это решение сработало для меня.

Ответ 4

Поскольку для библиотеки требуется minSdkVersion 17, вы можете изменить ее в файле build.gradle (Module: Application):

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

и после этого при создании проекта не следует создавать какие-либо ошибки сборки.

Ответ 5

Я просто изменил minSdkVersion="7" в C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml и это сработало.

шаги:

  1. Путь: C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
  2. Значение: <uses-sdk android:minSdkVersion="7"/>
  3. Выполните команду в новой командной строке:

    C:\MyApp>phonegap build android --debug [phonegap] executing 'cordova build android --debug'... [phonegap] completed 'cordova build android --debug'

Ответ 6

только что изменился только android: minSdkVersion = "16" и он отлично работает C:\MyApp\platform\android\CordovaLib\AndroidManifest.xml

Ответ 7

используйте этот код в manifest.xml

<uses-sdk
android:minSdkVersion="16"
android:maxSdkVersion="17"
tools:overrideLibrary="x"/>

Ответ 8

В качестве решения для всех библиотек мы можем сопоставить их версию SDK, поэтому не может произойти непредвиденное событие

subprojects { 
afterEvaluate {project -> 
    if (project.hasProperty("android")) { 
        android { 
            compileSdkVersion 28 
            buildToolsVersion '28.0.3'
            defaultConfig {
                //It kinda tricking android studio but anyway it works
                minSdkVersion 17
            }
        } 
    } 
    if (project.hasProperty("dependencies")) {
        dependencies {
            implementation 'com.android.support:support-core-utils:28.0.0'
            implementation 'com.android.support:appcompat-v7:28.0.0'
            implementation 'com.google.android.gms:play-services-base:16.1.0'
        }
    }
} 
}

Удалите библиотеки, которые вы не используете в своем проекте (gms), и убедитесь, что версия sdk соответствует данным gradle уровня вашего приложения

Ответ 9

откройте файл манифеста проекта

1: добавить xmlns: tools = "http://schemas.android.com/tools" сверху

2: добавить введите описание изображения здесь 3: вы должны изменить имя пакета ( "fr.data_jack.immocalc" ) в соответствии с вашим кодом