Подтвердить что ты не робот

Поддержка Android Repo 46.0.0 с Android Studio 2.3

Я обновил сегодня мой репозиторий поддержки до 46.0.0, когда появилось уведомление Android Studio.

Ниже приведена ошибка:

Ошибка: выполнение выполнено для задачи ': app: processDevDebugManifest'.

Не удалось слияние манифеста: атрибут meta-data#[email protected] value = (25.3.0) из   [com.android.support:support-v13:25.3.0] AndroidManifest.xml: 27: 9-31     также присутствует на [com.android.support:preference-v7:26.0.0-alpha1]   AndroidManifest.xml: 24: 9-38 value = (26.0.0-alpha1). Предложение: добавить   'tools: replace = "android: значение" "для элемента в   AndroidManifest.xml: 25: 5-27: 34 для переопределения.

Я обновил все свои зависимости, чтобы использовать Revision 26.0.0 Alpha 1 из 25.3.0, но, оказывается, мне нужно поднять compileSdk с 25 до 26. Вы не можете этого сделать, если у вас есть AS 2.3, вам нужно получить нестабильную альфа/бета-версию от канарейки.

Эта ссылка показывает изменения: https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0-alpha1

И что касается перехода на новый Android-O, то ссылка: https://developer.android.com/preview/migration.html

Кажется, что использование стабильной версии AS не будет работать с новым репозиторием.

Как я могу вернуться в версию репозитория Android Studio версии 45 вместо новых 46?

** Обновление: объединенный манифест показывает, что один из сгенерированных манифеста библиотеки содержит

<meta-data
        android:name="android.support.VERSION"
        android:value="26.0.0-alpha1" />

Но так как это сгенерированное редактирование файлов бесполезно, вот почему я теперь придерживаюсь rev 45 до тех пор, пока новый AS не будет в стабильной структуре

4b9b3361

Ответ 1

Какая проблема

Некоторые библиотеки зависят от версии "X" или "Новее" от библиотек поддержки Android, поэтому разрешение зависимостей Gradle захватывает все, что является самым новым доступным, игнорируя, что у вас действительно есть точная версия, указанная в вашем блоке dependencies.

Это не то, что вы хотите. Вы хотите, чтобы все библиотеки поддержки с одинаковой версией и основной версией соответствовали компиляции версии SDK.

Какое решение

К счастью, вы можете принудительно установить определенную версию библиотеки поддержки.

Поместите это в конец вашего модуля приложения build.gradle:

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}

Конечно, замените версию тем, что вы используете.

Значения версии для библиотек поддержки в блоке dependecies теперь неактуальны.

Если у вас есть сомнения

Это хорошо документированный метод и он работает.

Что вы можете сделать, чтобы помочь

Найдите библиотеки, которые зависят от диапазона версий библиотеки поддержки

gradlew dependencies --configuration compile -p <module name> | grep ,

и пусть авторы указанных библиотек знают, что они должны транзитивно зависеть от самых старых библиотек поддержки, с которыми может работать их библиотека.

Цель состоит в том, чтобы избежать проблемы вообще.

Ответ 2

Это решение для исправления:

  • Перейти к представлению проводника проекта
  • Дойти до их внешних библиотек
  • Посмотрите, какая библиотека использует 26.0.0-alpha6
  • Теперь напишите это в app.gradle на основе библиотеки на шаге 3

Ex. в моем случае:

configurations.all {
    resolutionStrategy.force 'com.android.support:appcompat-v7:25.3.0'
    resolutionStrategy.force 'com.android.support:support-v13:25.3.0'
}

Это заставит проект использовать указанную библиотеку.

Ответ 3

Я думаю, что лучшим решением является просто вернуть библиотеку поддержки Android до версии 45.

Для этого откройте эту ссылку (измените версию на то, что вам подходит)

https://dl-ssl.google.com/android/repository/android_m2repository_r45.zip

При загрузке распакуйте и скопируйте m2repository в android-sdk-root-folder\extras\android. Обязательно удалите существующий m2repository перед распаковкой, чтобы избежать проблем.

Ответ 4

Шаг 1

Чтобы избежать Gradle проверки несовместимых версий com.android.support, быстрое исправление заключается в добавлении следующего кода в модуль приложения build.gradle.

dependencies {
    //noinspection GradleCompatible
}

Это временное решение, которое не решает основные проблемы! Это помогло продолжить разработку вашего приложения с минимальными изменениями.

Шаг 2

Добавьте это в основной файл манифеста AndroidManifest.xml.

<meta-data
    tools:replace="android:value"
    android:name="android.support.VERSION"
    android:value="25.3.1" />

Эта запись будет удалена, если доступно одно из следующих обновлений репозитория поддержки.

Шаг 3

Добавьте следующий код в конец файла модуля приложения build.gradle:

configurations.all {
    resolutionStrategy.eachDependency { details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.1'
            }
        }
    }
}

NB. Рекомендуется убедиться, что ваши библиотеки Gradle обновлены и совместимы, чтобы избежать ошибок времени выполнения.

Ответ 5

Это временное решение, которое не решает основные проблемы! Это помогло мне продолжить разработку программного обеспечения с минимальными изменениями. Просто добавьте это в основной манифест:

<meta-data
    tools:replace="android:value"
    android:name="android.support.VERSION"
    android:value="25.3.0" />

Эта запись, можно надеяться, снова будет удалена с одним из следующих обновлений репозитория поддержки.

РЕШЕНИЕ: Помеченное решение работало для меня, добавив следующие 4 из моих 10 файлов build.gradle:

configurations.all {
    resolutionStrategy.eachDependency { details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}

Ответ 6

просто сделайте так, чтобы все: -

compile 'com.android.support:appcompat-v7:25.3.1'

здесь v7: 25.3.1 - это моя текущая версия, которую вы просто положили urs.

в приложении gradle файл