【问题标题】:Ionic 3 Android Build Error (could not find support-v4.jar)Ionic 3 Android 构建错误(找不到 support-v4.jar)
【发布时间】:2018-09-21 21:04:39
【问题描述】:

我有一个 Ionic 3 应用程序,它在开发机器上运行良好已有一段时间了。今天我们尝试了一台新机器,但它没有在那里建造。它使用的是较旧的 cordova-android 版本(6.1.2),但我认为它仍然会构建。我看到的错误如下:

> ionic cordova build android
...
* What went wrong:
A problem occurred configuring root project 'android'.
> Could not find support-v4.jar (com.android.support:support-v4:26.1.0).
  Searched in the following locations:
      https://jcenter.bintray.com/com/android/support/support-v4/26.1.0/support-v4-26.1.0.jar

另一条背景信息。该项目存在多个插件的 android 支持版本要求冲突的问题,这要求我们使用build-extras.gradle 文件将所有内容强制为com.android.support:support-v4:26+。那是几个月前的事了,所以应该不相关,但我想我应该添加它以防万一。

【问题讨论】:

    标签: android cordova ionic3 cordova-android


    【解决方案1】:

    您必须在platforms/android 中的build.gradle 文件中进行一些修改,如下所示:

    allprojects { 
      repositories { 
        mavenCentral()
        maven { url 'https://maven.google.com' } //add this code
        jcenter() 
     } 
    }
    

    这对于新版本的谷歌图书馆是必不可少的。他们将他们的库从 android SDK 移到了 maven repo。

    【讨论】:

    • 这也是我的研究引导我的方向。但是,Cordova/Ionic 会生成这个 build.gradle 文件。我想了解为什么 Cordova/Ionic 不能正确生成它? Cordova 开发人员通常最好不要手动编辑 build.gradle 文件(否则未来的构建会影响这些编辑)。
    • 对于在本地 PC 上工作的任何开发人员来说,这是一个很好的解决方法,但是我如何在我的 Jenkins/Teamcity 管道上修复它,它会在构建我的项目时自动生成整个平台/android 目录?每次夜间构建后,我无法手动更改管道上的 build.grade 文件..
    【解决方案2】:

    我确信我可以调整 Cordova 生成的 build.gradle 文件来解决这个问题。但是,Cordova 会在每台 Dev 机器上执行此操作。我找到了一个不同的解决方法。

    我之前不得不搞乱com.android.support 库,因为不同的插件需要不同的版本,而且它们不能很好地相互配合。我的方法是添加一个带有以下内容的 build-extras.gradle 文件(通过挂钩,请参阅here(选项 2),最终导致 here)。这有效(直到最近)。

    configurations.all {
        resolutionStrategy {
           force 'com.android.support:support-v4:26+'
        }
    }
    

    据我所知,这个库的 26.1.0 版本有些不同。似乎它在同一个存储库中不可用或什么?无论如何,切换到较早的版本(如下)是可行的。请注意,真正的变化是从 26+26.0+ (应该拉入 26.0.2)。这再次构建良好。

    configurations.all {
        resolutionStrategy {
            force 'com.android.support:support-v4:26.0+'
        }
    }
    

    【讨论】:

    • 您能否更新您的答案并添加挂钩定义,尤其是您如何将build-extras.gradle 文件复制到platforms/android 位置?
    • 你是不是和这里的方法类似:stackoverflow.com/q/51723145/2849346 ?
    • 当然 - 我在答案中添加了几个链接来说明我是如何找到它的。
    • 感谢您提供这些额外信息。它可以帮助不熟悉 Ionic/Cordova 设置的其他人处理这些问题。
    【解决方案3】:

    以下解决方案对我有用:

    follow this step:- 
    
    step 1: cordova plugin add cordova-android-support-gradle-release
    step 2: cordova clean android
    step 3: ionic cordova build android
    

    【讨论】:

      【解决方案4】:

      这也发生在我身上,今天。它在两天前编译,现在构建失败。我没有对项目或配置进行任何更改。可能是因为 google 将他们的库迁移到了 maven,但是我们能做些什么呢?

      警告:模块 'com.android.support:support-v4:26.1.0' 依赖于一个或多个 Android 库,但它是一个 jar

      构建失败

      总时间:2.87 秒 FAILURE:构建失败并出现异常。

      【讨论】:

      • 这篇文章已经有多个选项了。一种选择是强制使用 maven(请参阅 Sandy 的帖子)。另一种选择是强制使用 v26.1.0 (26.0+) 之前的内容。
      • 将顺序切换为maven,然后jcenter终于工作了(桑迪的帖子)
      • 好的。作为参考,通常您不会发布像您这样的答案,这实际上是一个新问题(不是答案)。
      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      相关资源
      最近更新 更多