Слияние Android Gradle Manifest не удалось

Я использую библиотеку Leanback для разработки для Android TV. Мое приложение объявляет минимальный API равным 16, однако минимальное значение API равно 16. Итак, как говорится в документации, я объявил это в своем манифесте:

<?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="com.mypackage.package">

    <uses-sdk tools:overrideLibrary="android.support.v17.leanback" />

Однако у меня все еще есть ошибка:

Ошибка: (6, 5) Не удалось выполнить задачу ':app:processAdhocProdManifest'.

Ошибка слияния манифеста: use-sdk:minSdkVersion 16 не может быть меньше версии 17, объявленной в библиотеке /thepathtotheapp/build/intermediates/exploded-aar/com.android.support/leanback-v17/22.2.0/AndroidManifest.xml. tools:overrideLibrary="android.support.v17.leanback" для принудительного использования

в отчете о слиянии манифеста я вижу:

MERGED from io.fabric.sdk.android:fabric:1.0.2:7:5
    android:targetSdkVersion
        INJECTED from AndroidManifest.xml:0:0
        INJECTED from AndroidManifest.xml:0:0
    android:minSdkVersion
        INJECTED from AndroidManifest.xml:0:0
        INJECTED from AndroidManifest.xml:0:0
    tools:overrideLibrary
        ADDED from AndroidManifest.xml:21:15
    tools:ignore
        ADDED from com.mixpanel.android:mixpanel-android:4.5.4-RC1:14:9
application
ADDED from AndroidManifest.xml:23:5

Похоже, он добавляет tools:overrideLibrary, но все равно не работает.

Кто-нибудь знает, как это исправить?


person Andros    schedule 26.06.2015    source источник
comment
Что ж, смысл tools:overrideLibrary заключается в том, чтобы вы затем предоставили замещающее значение: tools.android.com/tech-docs/new-build-system/user-guide/ Я не понимаю, где вы это делаете.   -  person CommonsWare    schedule 26.06.2015
comment
Он указан в моем файле build.gradle, я удаляю его из файла build.gradle и указываю: в AndroidManifest Но у меня все еще та же ошибка.   -  person Andros    schedule 26.06.2015
comment
Хмммм... Я еще не использовал tools:overrideLibrary, и поэтому я надеялся, что, возможно, помещение значений в <uses-sdk> поможет. Вы можете попробовать переключиться с tools:overrideLibrary="..." на tools:node="replace", что теоретически должно заменить все низкоприоритетные экземпляры <uses-sdk> вашими. Я использовал tools:node="replace", но не на <uses-sdk>.   -  person CommonsWare    schedule 26.06.2015
comment
Хорошая идея, но, к сожалению: элемент uses-sdk не может иметь атрибут tools:node. Поэтому я также попытался выполнить слияние вместо замены, но проблема осталась той же, что и раньше.   -  person Andros    schedule 26.06.2015
comment
Что ж, моя единственная другая идея заключается в том, что сообщение об ошибке неверно, а имя пакета библиотеки другое. Но этот ответ SO выглядит так, как будто он имеет это значение, и 65 человек считают, что это помогло. Возможно что-то изменилось/сломалось с декабря?   -  person CommonsWare    schedule 26.06.2015
comment
Это моя единственная библиотека с minSdkVersion на 17, и имя пакета кажется правильным. Так что либо что-то изменилось/сломалось, либо я что-то не так делаю... все равно спасибо за помощь.   -  person Andros    schedule 26.06.2015


Ответы (1)


Проблема исходила из библиотеки Mixpanel, Mixpanel определяет свой AndroidManifest с помощью этого тега:

<uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="21"
        tools:ignore="GradleOverrides" />

В итоге я отказываюсь от Mixpanel, я предпочитаю отказаться от них, чем от 10% наших пользователей.

person Andros    schedule 26.06.2015
comment
У вас такая же проблема, но похоже, что у mixpanel есть обновления, чтобы исправить это? github.com/mixpanel/mixpanel-android/releases - person John Shelley; 09.03.2016
comment
Видимо да, надо обновить и попробовать. Я больше не пользуюсь Mixpanel... - person Andros; 09.03.2016
comment
Я могу подтвердить, что их обновление 4.8.0 исправило конфликты слияния. - person vanomart; 24.09.2016