Ionic Cordova 构建始终使用 androidx.appcompat:appcompatn 的最新版本并且失败
Ionic Cordova build always use last version of androidx.appcompat:appcompatn and failed
我正在 运行 ionic cordova build android 但失败了。
研究了两天,尝试了几种方法,终于找到了问题所在,但是找不到解决方法。
我使用的是cordova platform 10.1.0,生成的project.properties是这样的
target=android-30
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.system.library.1=androidx.annotation:annotation:1.1.0
cordova.system.library.2=androidx.legacy:legacy-support-v4:1.+
cordova.system.library.3=androidx.appcompat:appcompat:1.+
直到两天前,当内置仪表板 ionic 失败时,它工作正常。
我发现 androidx.appcompat:appcompat:1.+ 总是使用最新版本 androidx.appcompat:appcompat:1.4.0-beta01。 cordova.cmd build android 命令抛出以下错误
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.appcompat:appcompat:1.4.0-beta01.
AAR metadata file: C:\Users\YOAN\.gradle\caches\transforms-3\cf625c79807b9ffa78b701a3a960597e\transformed\appcompat-1.4.0-beta01\META-INF\com\android\build\gr
adle\aar-metadata.properties.
如果我将 androidx.appcompat:appcompat:1.+ 更改为 androidx.appcompat:appcompat:1.3.1 ,它的工作原理,
如果我删除整条线也可以工作,但只在本地构建,如果我部署到 dashboardionicframework ci/cd,再次失败,因为更改不会反映在 CI CD 构建中。
我尝试将 <framework src="androidx.appcompat:appcompat:1.3.0" />
添加到 config.xml,以强制加载 appcompat 特定版本,但这不起作用。
我还添加了 <framework custom="true" src="config-extras.gradle" type="gradleReference" />
到 config.xml 以放置额外的 gradle 配置,如下所示:
allprojects {
repositories {
configurations.all {
resolutionStrategy {
force 'androidx.appcompat:appcompat:1.3.1'
}
}
}
}
强制使用特定版本,但这不起作用。
我需要覆盖 project.properties 特定值,或者至少强制使用我需要的特定版本。
此问题与 androidx.appcompat:appcompat 1.4.0-beta01 于 2021 年 9 月 29 日发布有关。
由于 plugin.xml 将 ANDROIDX_VERSION 定义为主要版本 1 (1.+),因此使用 1.4.0-beta01 而不是 1.3.0。不幸的是,您不能简单地使用 cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.3.+
来覆盖该值,因为相同的版本将用于 androidx.legacy:legacy-support-v4,它仅作为版本 1.0.0 存在。
我成功地使用 cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION="[1.0, 1.4["
修复了我的构建。
我正在 运行 ionic cordova build android 但失败了。
研究了两天,尝试了几种方法,终于找到了问题所在,但是找不到解决方法。
我使用的是cordova platform 10.1.0,生成的project.properties是这样的
target=android-30
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.system.library.1=androidx.annotation:annotation:1.1.0
cordova.system.library.2=androidx.legacy:legacy-support-v4:1.+
cordova.system.library.3=androidx.appcompat:appcompat:1.+
直到两天前,当内置仪表板 ionic 失败时,它工作正常。
我发现 androidx.appcompat:appcompat:1.+ 总是使用最新版本 androidx.appcompat:appcompat:1.4.0-beta01。 cordova.cmd build android 命令抛出以下错误
A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.appcompat:appcompat:1.4.0-beta01.
AAR metadata file: C:\Users\YOAN\.gradle\caches\transforms-3\cf625c79807b9ffa78b701a3a960597e\transformed\appcompat-1.4.0-beta01\META-INF\com\android\build\gr
adle\aar-metadata.properties.
如果我将 androidx.appcompat:appcompat:1.+ 更改为 androidx.appcompat:appcompat:1.3.1 ,它的工作原理, 如果我删除整条线也可以工作,但只在本地构建,如果我部署到 dashboardionicframework ci/cd,再次失败,因为更改不会反映在 CI CD 构建中。
我尝试将 <framework src="androidx.appcompat:appcompat:1.3.0" />
添加到 config.xml,以强制加载 appcompat 特定版本,但这不起作用。
我还添加了 <framework custom="true" src="config-extras.gradle" type="gradleReference" />
到 config.xml 以放置额外的 gradle 配置,如下所示:
allprojects {
repositories {
configurations.all {
resolutionStrategy {
force 'androidx.appcompat:appcompat:1.3.1'
}
}
}
}
强制使用特定版本,但这不起作用。
我需要覆盖 project.properties 特定值,或者至少强制使用我需要的特定版本。
此问题与 androidx.appcompat:appcompat 1.4.0-beta01 于 2021 年 9 月 29 日发布有关。
由于 plugin.xml 将 ANDROIDX_VERSION 定义为主要版本 1 (1.+),因此使用 1.4.0-beta01 而不是 1.3.0。不幸的是,您不能简单地使用 cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION=1.3.+
来覆盖该值,因为相同的版本将用于 androidx.legacy:legacy-support-v4,它仅作为版本 1.0.0 存在。
我成功地使用 cordova plugin add cordova.plugins.diagnostic --variable ANDROIDX_VERSION="[1.0, 1.4["
修复了我的构建。