我在我特别继承的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可以解决此问题,但是我想了解为什么一个项目使用一个版本号创建设置,而第二个创建该设置项目是由一个不同的项目创建的?
答案 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.+
,但是我按照以下过程进行操作,然后一切都开始起作用:-
cordova plugin add cordova-android-support-gradle-release
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
我敢肯定对构建过程有更深入了解的人可以增加一些清晰度!