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

Следующее сообщение об ошибке я получаю после обновления 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. удаление папок сборки не помогло

РЕДАКТИРОВАТЬ в моем values ​​/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"/>

Файл Project и Module Gradle

3 ответа

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

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

В вашем attrs.xml find the below property

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

and replace font to other name like <attr name="font_name" format="string" />

After that replace app:font в app:font_name in every xml file.


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

After update android version nougat to oreo, there is on build functionality Downloadable Fonts

So that font already defined with an incompatible format.

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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ

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

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