Библиотеки с конфликтующими пользовательскими атрибутами - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь использовать библиотеку Shimmer и библиотеку Slider View вместе.

К сожалению, в обеих библиотеках есть пользовательские атрибуты, которые конфликтуют: я получаю ошибку duplicate attribute found.

Я прочитал, что это ошибка, и на данный момент нет решений, и мы не можем создавать собственные атрибуты в контексте каждой библиотеки. Но есть ли другой способ обойти это, кроме как реализовать сам слайдер?

Android resource compilation failed 
app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:4619: error: duplicate value for resource 'attr/shape' with config ''.
\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:4619: error: resource previously defined here.
\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml: error: file failed to compile.````

1 Ответ

0 голосов
/ 22 мая 2019

Я думаю, что есть решение этой проблемы.Однако я не уверен, что вы можете сделать это из-за лицензирования.

Я не проверял это.Не уверен, что это будет работать.Но я думаю, что вы можете попробовать.Если это не сработает, дайте мне знать, и я удалю ответ.

Чтобы избежать этой ошибки, вы можете прибегнуть к тому, что у вас есть доступ к исходному коду AndroidImageSlider.Таким образом, вместо добавления этой библиотеки в виде файла AAR, вы можете импортировать исходный код в виде модуля.Таким образом, вы можете переименовать attr/shape, и он будет перекомпилирован как часть вашего проекта.

1) Удалите AndroidImageSlider из вашего проекта (из build.gradle и т. Д.)

2) Затем создайте новый модуль под названием «библиотека» (File -> Project Structure -> Modules -> + -> Android Library)

3) Это создаст новую папку для вашего проекта <ProjectPath>/library

4) Загрузите библиотекуИсходный код (используя git или zip-файл) и замените содержимое папки библиотеки содержимым из папки библиотеки, которую вы скачали (вы можете игнорировать все остальные папки ... Вы можете заменить файлы с тем же именем).

5) Удалить файл library/gradle-mvn-push.gradle и удалить следующую строку из: library/build.gradle:

 apply from: './gradle-mvn-push.gradle'

6) Добавить следующие строки в вашу app/build.gradle

dependencies {
    ...
    implementation project(":library")
    ...
}

7) Синхронизацияи перестройте ваш проект.

8) Откройте файл ./library/src/main/res/values/attrs.xml и переименуйте атрибут shape (например, customShape).

9) Попробуйте построить заново.Некоторые ошибки могут произойти, поскольку вы переименовали этот атрибут.Исправьте их.

10) Вы можете добавить представление к вашему макету следующим образом:

Это позволит вам скомпилировать ваш проект.Недостатком является то, что вы несете ответственность за исправление / обновление библиотеки самостоятельно.С другой стороны, вы можете управлять библиотеками build.gradle, а затем обновлять версию инструментов сборки, поддерживать версию библиотеки и т. Д.

В любом случае, это может помочь вам

...