错误aapt:属性“font”已使用不兼容的格式定义。原始属性在此定义

时间:2017-12-14 14:27:22

标签: android android-studio gradle aapt build-tools

在将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. 删除构建文件夹没有帮助
  3. 在我的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"/>
    

    Both Project and Module Gradle file

3 个答案:

答案 0 :(得分:1)

重命名type =&#34; font&#34;在您的自定义TextView类中,并将其更改为任何其他名称说 <attr name="font" format="string" /><attr name="typefont" format="string" />

并在每个xml文件中替换它 app:typefont="ProximaNova-Light.ttf"

答案 1 :(得分:1)

attrs.xml找到以下属性

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

并将字体替换为其他名称,例如<attr name="font_name" format="string" />

之后,在每个xml文件中将app:font替换为app:font_name

为什么会出现这个错误?

将android版本nougat更新为oreo之后,还有构建功能可下载字体

因此该字体已使用不兼容的格式定义。

有关更多信息,请参阅此链接。

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

希望这可以帮助你。

答案 2 :(得分:0)

为什么会发生这种情况的原因可能很少。首先是您定义了自己的字体属性。但根据您粘贴的代码,不是它。

第二个可能是您更新了依赖项。由于android gradle插件无法正确处理此场景,因此该属性可能与旧版本的库冲突。如果是这种情况./gradlew clean将解决问题。

第三个选项可能是您的某个依赖项定义了字体属性。你是否包括任何其他使用字体的库?

我记得的最后一个选项是其他一些库正在导入不同版本的appcompat库。这不是很有可能,但您可以通过在终端中运行./gradlew :app:dependencies来查看。

修改

aapt2是在androud构建系统的lates版本中引入的。也许这就是问题所在。您可以将android.enableAapt2=false放入gradle.properties文件中以验证是否存在问题。