【问题标题】:Ionic Cordova build always use last version of androidx.appcompat:appcompatn and failedIonic Cordova 构建始终使用最新版本的 androidx.appcompat:appcompatn 并且失败
【发布时间】:2021-11-23 10:19:48
【问题描述】:

我正在运行 ionic cordova build android 并且失败了。

经过两天的研究,我尝试了几种方法,终于找到了问题所在,但找不到解决办法。

我使用的是cordova平台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 特定版本,但这不起作用。

我还在 config.xml 中添加了 <framework custom="true" src="config-extras.gradle" type="gradleReference" /> 以放置额外的 gradle 配置,如下所示:

allprojects {
  repositories {
      configurations.all {
          resolutionStrategy {
               force 'androidx.appcompat:appcompat:1.3.1'
          }
      }
  } 
}

强制使用特定版本,但这不起作用。

我需要覆盖 project.properties 的特定值,或者至少强制使用我需要的特定版本。

【问题讨论】:

    标签: angular cordova ionic-framework build ionic-native


    【解决方案1】:

    此问题与 2021 年 9 月 29 日发布的 androidx.appcompat:appcompat 1.4.0-beta01 有关。

    由于 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[" 来修复我的构建。

    【讨论】:

    • 谢谢,我现在正在尝试。你能解释一下“[1.0, 1.4[”是什么意思???。我认为限制版本,但我不明白这两个[。
    • 谢谢,它工作得很好,你救了我的命。我看到 cordova.plugin.diagnostic 将 ANDROIDX_APPCOMPAT_VERSION 限制为 1.3.1 版本,这正是我所需要的,但我从来没有去 package.json 更改该值,我正在查看其他文件。我是 ionic 新手,我不知道一些带有变量的插件工作
    猜你喜欢
    • 2018-09-07
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 2020-11-11
    • 2019-06-01
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多