与fontVariationSettings有关的Cordova构建问题

时间:2018-11-15 15:02:12

标签: android cordova

我在我特别继承的Cordova项目中遇到了构建问题,引发的错误是:-

  

:CordovaLib:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug   :app:processDebugResourcesC:\ Users \ andy.gradle \ caches \ transforms-1 \ files-1.1 \ support-compat-28.0.0.aar \ 96270291fb4c7e49ddab8d4d1a4f36f7 \ res \ values \ values.xml:133:5-70:AAPT:错误:找不到资源android:attr / fontVariationSettings。

我有另一个成功构建的项目,并且如果我手动更改项目构建的设置,则两个项目之间的区别似乎是platforms\android\project.settings文件。但是,由于每次我运行cordova prepare android时都会重新创建此文件,因此这不是理想的情况,因此该设置为:-

cordova.system.library.1=com.android.support:support-v4:+ 

如果我将其更改为:-

cordova.system.library.1=com.android.support:support-v4:24.1.1+ 

我的构建成功!

所以我的问题是什么会影响此设置,因为我认为我需要了解不同值背后的原因,因为除了工作项目具有更多的依赖关系以外,非工作项目包含相同的引用,但是还有一个附加的依赖关系。 :-

cordova-plugin-file-opener2 

我没有安装SDK版本28,我可以看到错误背后的逻辑,并且我认为安装版本28可以解决此问题,但是我想了解为什么一个项目使用一个版本号创建设置,而第二个创建该设置项目是由一个不同的项目创建的?

2 个答案:

答案 0 :(得分:0)

在Cordova项目中,通过Gradle提取到Android构建中的本机库的版本直接由您在项目中安装的Cordova插件控制。 Gradle配置由Cordova动态生成,因此,每次运行cordova prepare android时,都会重新生成build.gradle文件。

在这种情况下,库依赖项是Android支持库(com.android.support)。

cordova-plugin-file-opener2 specifies version +,它将引入最新版本,目前为v28.0.0,如releases page所示。

但是,如果项目中的另一个插件指定了不同的版本,则将导致问题,并且由于版本冲突而经常导致构建失败。 在原生Android项目中,build.gradle文件在您的直接控制下,因此您永远不会遇到这些问题。

一种解决方案是将cordova-android-support-gradle-release插件安装到您的项目中。 该插件会覆盖其他插件指定的Android支持库的版本,使您能够对齐版本并解决构建问题。

例如,您可以运行:

cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=24.1.1

这将安装该插件并覆盖其他插件指定的版本,以确保支持库v24.1.1包含在您的项目中。

一个考虑因素是v24的版本很旧,因此您可能要尝试更新的版本,例如:

cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=27.+

答案 1 :(得分:0)

只是为我的解决方案添加一些细节,以防将来对其他人有所帮助!

DaveAlden在上面对正在发生的事情添加了非常有用的描述,值得一读,因为很难对这些技术正在发生或应该发生的事情做出清晰,简洁的解释。

我的项目确实确实已经安装了cordova-android-support-gradle-release插件,并将其设置为27.+,但是我按照以下过程进行操作,然后一切都开始起作用:-

  1. 将我的Android SDK软件更新为最新版本
  2. 将Cordova从8.0.0版本更新到8.1.2
  3. 已删除插件cordova plugin add cordova-android-support-gradle-release
  4. cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=27中添加了插件

然后我尝试重新构建,然后一切都开始工作。

更新: 我今天再次来部署我的应用程序,但是我又遇到了同样的错误,以解决我所运行的错误:-

cordova plugin remove cordova-android-support-gradle-release
cordova plugin add cordova-android-support-gradle-release --variable ANDROID_SUPPORT_VERSION=27.+

然后成功构建,我不知道为什么会发生这种情况,但这与\platforms\android\project.properties文件未正确设置有关,因为成功构建此文件时包含以下行:-

cordova.gradle.include.1=cordova-android-support-gradle-release/portal-cordova-android-support-gradle-release.gradle

我敢肯定对构建过程有更深入了解的人可以增加一些清晰度!