Ошибка aapt: шрифт атрибута уже определен в несовместимом формате. Исходный атрибут определен здесь

Следующее сообщение об ошибке, которое я получаю после обновления supportlibs до 27.0.2 и compileVersion до 27

Error:(252, 5) Attribute "font" already defined with incompatible format.

> /home/ralfi/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.0.1.aar/644e31926a52609e6fffe47c9016abcc/res/values/values.xml
> Error:(252, 5) Attribute "font" already defined with incompatible
> format. Error:(252, 5) Original attribute defined here.
> /home/ralfi/ProjectFolder/android-example/app/build/intermediates/res/merged/internal/debug/values/values.xml
> Error:(631) Attribute "font" already defined with incompatible format.
> Error:(607) Original attribute defined here.

и это:

> Error:java.util.concurrent.ExecutionException:
> com.android.ide.common.process.ProcessException: Error while executing
> process /opt/sdk/build-tools/26.0.2/aapt with arguments {package -f
> --no-crunch -I /opt/sdk/platforms/android-27/android.jar -M /home/ralfi/ProjectFolder/android-example/build/intermediates/manifests/full/internal/debug/AndroidManifest.xml
> -S /home/ralfi/ProjectFolder/android-example/build/intermediates/res/merged/internal/debug
> -m -J /home/ralfi/ProjectFolder/android-example/build/generated/source/r/internal/debug
> -F /home/ralfi/ProjectFolder/android-example/build/intermediates/res/internal/debug/resources-internalDebug.ap_
> -D /home/ralfi/ProjectFolder/android-example/build/intermediates/multi-dex/internal/debug/manifest_keep.txt
> --custom-package com.example.android -0 apk -c de,en --output-text-symbols /home/ralfi/ProjectFolder/android-example/build/intermediates/symbols/internal/debug
> --no-version-vectors}
  1. Также, возвращая supportLibs к 25, я получаю ту же ошибку.
  2. удаление папок сборки не помогло

РЕДАКТИРОВАТЬ в моих значениях/attrs.xml имя, связанное с шрифтом, происходит только следующим образом:

 <declare-styleable name="Styleable">
        <attr name="fontFace" format="string"/>
        <attr name="underlined" format="boolean"/>
        <attr name="android:lineSpacingMultiplier"/>
        <attr name="android:textSize"/>
 </declare-styleable>

и этот тег:

<attr name="minFontSize" format="reference|dimension"/>

Файл Gradle проекта и модуля


person Ralf Wickum    schedule 14.12.2017    source источник
comment
вы используете пользовательский TextView или EditText?   -  person Sachin Varma    schedule 18.12.2017
comment
Похоже, что шрифт — это переменная, объявленная где-то дважды (или больше раз)   -  person Zoe    schedule 21.12.2017
comment
Не добавляйте файлы Gradle извне @RalfWickum. Добавьте их прямо в вопрос   -  person Zoe    schedule 21.12.2017


Ответы (3)


переименуйте type="font" в своем классе Custom TextView и измените его на любое другое имя, скажем, с <attr name="font" format="string" /> на <attr name="typefont" format="string" />

и замените его в каждом файле xml app:typefont="ProximaNova-Light.ttf"

person Tanveer Bulsari    schedule 16.12.2017
comment
Где я могу найти файлы для замены содержимого? Я просмотрел все /res, и там не появился шрифт - person Ralf Wickum; 18.12.2017
comment
это будет attrs.xml - person Tanveer Bulsari; 21.12.2017

В вашем attrs.xml найдите свойство ниже

<attr name="font" format="string" />

и замените шрифт на другое имя, например <attr name="font_name" format="string" />

После этого замените app:font на app:font_name в каждом файле xml.


Почему возникла эта ошибка?

После обновления версии Android Nougat до Oreo в сборке появилась функция Загружаемые шрифты.

Так что этот шрифт уже определен с несовместимым форматом.

Для получения дополнительной информации перейдите по этой ссылке.

https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts.html

Надеюсь, это поможет вам.

person Mitesh Vanaliya    schedule 18.12.2017
comment
Пожалуйста, поделитесь файлом grad. - person Mitesh Vanaliya; 18.12.2017

Может быть несколько причин, почему это происходит. Во-первых, вы определили свой собственный атрибут шрифта. Но согласно коду, который вы вставили, это не так.

Второй может заключаться в том, что вы обновили свои зависимости. Поскольку плагин Android Gradle неправильно обрабатывает этот сценарий, возможно, этот атрибут конфликтует со старой версией библиотеки. Если это так, ./gradlew clean решит проблему.

Третий вариант может заключаться в том, что одна из ваших зависимостей определяет атрибут шрифта. Включаете ли вы какие-либо другие библиотеки, которые работают со шрифтами?

Последний вариант, который я могу вспомнить, это то, что какая-то другая библиотека импортирует другую версию библиотеки appcompat. Это не очень похоже, но вы можете увидеть это, запустив ./gradlew :app:dependencies в своем терминале.

ИЗМЕНИТЬ

aapt2 был представлен в последних версиях системы сборки Android. Может быть, это проблема. Вы можете отключить его, вставив android.enableAapt2=false в свой файл gradle.properties, чтобы убедиться, что это проблема.

person Blaz    schedule 18.12.2017