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

cardlib error resource android: attr/foregroundInsidePadding является частным, в то время как таргетинг SDK 26

Хорошо, я создал совершенно новый проект в Android Studio 3.0. Gradle build отлично работает в этом недавно создаваемом проекте, пока я не build.gradle следующие строки в мой модуль build.gradle

dependencies {
    ...
    compile 'com.github.gabrielemariotti.cards:cardslib-core:2.1.0'
    compile 'com.github.gabrielemariotti.cards:cardslib-cards:2.1.0'
    compile 'com.github.gabrielemariotti.cards:cardslib-recyclerview:2.1.0'
}

Вот ошибка, которую я получаю в журнале сборки

/home/sparker0i/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.1.aar/e06e09188fb79d4d895b39247477d1c1/res/values/values.xml
Error:(246, 5) resource android:attr/foregroundInsidePadding is private

Когда я дважды нажимаю на него, я получаю файл values.xml (объединенный), где указатель находится в

<dimen name="abc_action_bar_content_inset_material">16dp</dimen>

Моя минимальная версия SDK - 16, целевой SDK - 26. Я использую Android Studio 3.0 Beta 2, версия инструментов для разработчиков - 26.0.1. Плагин Gradle 3.0.0-beta2.

Готов поспорить, это из-за немного устаревшей библиотеки Cardlib. Нет ли способа исправить это? (Удаление этих строк из зависимостей отлично работает)

4b9b3361

Ответ 1

Попробуйте отключить AAPT2, добавив в файл gradle.properties файл android.enableAapt2=false.

Сборка может завершиться неудачей, пока включен AAPT2. Кроме того, AAPT2 в настоящее время не совместим с Robelectric. Если ваша сборка завершилась неудачно из-за проблемы с обработкой ресурсов AAPT2 или вы хотите использовать Roboelectric, вы можете отключить AAPT2, установив в файл gradle.properties файл android.enableAapt2 = false и перезапустив демона Gradle, запустив. /gradlew --stop из командная строка.

Ссылка: здесь

Я использовал Android studio 3.0 beta 5, в котором я отключил AAPT2 и он разрешил мою ошибку.

ОБНОВЛЕНИЕ: 28 марта 2018 г.

С Android Studio 3.1.1 это может не сработать. Одна из ваших библиотек может использовать частный ресурс android. Вам нужно найти ошибку, вызывающую библиотеку, и заменить android:attr/foregroundInsidePadding на foregroundInsidePadding android:attr/foregroundInsidePadding foregroundInsidePadding и импортировать его в свой проект.

  1. Клонирование репо библиотеки в вашем местном.
  2. Открытый репозиторий в Android Studio найдет xml с <attr name="android:foregroundInsidePadding"/> и замените его на
    <attr name="foregroundInsidePadding"/> и Build.
  3. Откройте проект и импортируйте этот репозиторий в зависимости от вашего проекта.
  4. Удалите команды компиляции библиотек из уровня приложения build.gradle.
  5. Теперь вы можете использовать AAPT2 поэтому попробуйте изменить параметр android.enableAapt2=false на true в gradle.properties если он присутствует.

Ответ 2

Это связано с тем, что вы не должны использовать пространство имен android для этого ресурса. Чтобы решить эту проблему, замените android: foregroundInsidePadding на foregroundInsidePadding.
Подробнее о руководстве по миграции Android Studio AAPT2.

Ответ 3

Я обновил свои зависимости от:

compile 'com.android.support:support-v4:19.1.0'
compile 'com.android.support:appcompat-v7:19.1.0'

в

compile 'com.android.support:support-v4:21.0.1'
compile 'com.android.support:appcompat-v7:21.0.1'

И это сработало для меня

Ответ 4

Попробуйте это: отключите AAPT2, добавив android.enableAapt2=false в свойствах gradle. Также убедитесь, что у вас есть compileSdkVersion и targetSdkVersion одинаковой версии. Мой 28 с андроид студией 3.2.1.

Перестройте свой проект, он должен работать.