android 下报错 AAPT: error: resource android:attr/fontVariationSettings not found

这个问题排查了几个小时。在这里提供一下具体的排查思路,但愿能给各位老铁一点提示。react

问题从天而降

昨天原本打包还好好的。今天在 android 打包的时候,今天忽然间有一个奇怪的报错,致使打包失败了:android

/Users/PAMPANG/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/aeb63fa7e61ad852e8a67f3e8b29c11b/res/values/values.xml:251:5-69: AAPT: error: resource android:attr/fontVariationSettings not found.

/Users/PAMPANG/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.1.aar/aeb63fa7e61ad852e8a67f3e8b29c11b/res/values/values.xml:251:5-69: AAPT: error: resource android:attr/ttcIndex not found.

error: failed linking references.

FAILURE: Build failed with an exception.
复制代码

开始排查

嗯??什么奇怪的错误??git

定睛一看,错误中有关键词:github

appcompat-v7-27.1.1.aar
AAPT: error: resource android:attr/fontVariationSettings not found
复制代码

OK,根据这两个关键词上网冲浪去。web

排查第一步:看 issue

咱们用的是 react-native,所以先看看 react-native 的 issue 里有没有相似的问题。react-native

搜到了两个相关的 issue:bash

https://github.com/facebook/react-native/issues/25338
https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/issues/207
复制代码

经过这两个连接,又发现了一个 stackOverFlow 的网站:app

https://stackoverflow.com/questions/56654226/ionic-cordova-app-stopped-compiling-after-googles-june-17th-firebase-sdk-update
复制代码

排查第二步:根据现有信息思考总结,从新调整问题

在这里,我获得了有效信息:google 在 20190617 发布了新版本,须要作 XXX 才能适配。我虎躯一震,难道要我更新?!ionic

但再细细一想,不该该啊,那全部的 android 项目不都得挂了?应该是个人包里有了什么错误的依赖致使的。ide

带着这个问题,我再次搜索信息。

排查第三步:带着新问题,再次搜索

我又从新开始查信息了。这个 issue 中一位小哥的回答给了我很大的提示。他的主要思路是整个 app 的依赖列表输出出来,看看哪一个小坏蛋引入了不应有的依赖。

排查第四步:找到方案,开始试行

我在命令行运行 ./gradlew app:dependencies 把整个 app 的依赖列表输出出来,对应着 google 的更新列表,看看究竟是哪一个小坏蛋引用了最新的依赖。

根据包名搜索了一番,发现是 react-native-device-info 中引用了 gms,而 gms 的版本号是 +,即直接去最新版,因此就拿了最新的版本依赖了。而这个最新的版本,是须要作适配才能启用的,所以就出问题了。

能够看到,在 react-native-device-info@0.24.3 的这一行代码 中,用 + 号引入了 gms

那么,想要解决就很简单了:

根据 这个 issue 连接 中的提示,加一个常量 googlePlayServicesVersion,给固定版本便可 或者,更新 react-native-device-info 到最新版,它对这个依赖的版本号加了一个默认版本,而不是 + 了。

至此,problem solved。

相关资料

google 在 20190617 发布了新的更新: stackoverflow.com/questions/5…

google 更新查询列表: developers.google.com/android/gui…

google 依赖列表: ./gradlew app:dependencies

相关文章
相关标签/搜索