Ресурс с ошибкой cardslib android:attr/foregroundInsidePadding является приватным при нацеливании на SDK 26

Хорошо, я создал совершенно новый проект в Android Studio 3.0. Gradle build прекрасно работает в этом недавно созданном проекте, пока я не вставлю следующие строки в мой модуль 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-бета2.

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

3 ответа

Решение

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

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

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

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

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

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

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

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

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

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'

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

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

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

Другие вопросы по тегам