Ресурс с ошибкой 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
и импортировать его в свой проект.
- Клонируйте репозиторий библиотеки в вашем регионе.
- Открыть репозиторий в Android Studio найти
xml
имеющий<attr name="android:foregroundInsidePadding" />
и заменить его на<attr name="foregroundInsidePadding" />
и построить. - Откройте ваш проект и импортируйте этот репозиторий в качестве зависимости в ваш проект.
- Удалите операторы компиляции библиотеки с уровня приложения
build.gradle
, - Теперь вы можете использовать
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.
Перестройте свой проект, он должен работать.