【问题标题】:Can't build an Android Cordova project (Ionic 5)无法构建 Android Cordova 项目(Ionic 5)
【发布时间】:2020-09-05 06:39:00
【问题描述】:

我正在 Ionic 5 中制作一个应用程序(我选择 Angular 作为框架),它使用 Cordova 编译最终的混合应用程序。

随着最后的开发期即将到来,我正在尝试在应用中投放一些广告。为此,我使用了 Cordova 的插件“AdMobFree”,并将其与 ionic-native/admob-free NPM 包集成,以便使用我的代码库中的插件。

问题是,我无法编译任何东西。我得到的错误似乎与 Google Play Services 包有关。此错误开始给我以下警告:

WARNING in ./node_modules/parse/node_modules/crypto-js/core.js
Module not found: Error: Can't resolve 'crypto' in 'D:\Dev\bygymapp\node_modules\parse\node_modules\crypto-js'

因为它只是一个警告,所以我不会给它太多的功劳,但我会添加它以防万一。问题的很大一部分似乎在这里:

    BUILD FAILED in 14s
D:\Dev\bygymapp\platforms\android\gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> In project 'app' a resolved Google Play services library dependency depends on another at an exact version (e.g. "[17.0.
  0]", but isn't being resolved to that version. Behavior exhibited by the library will be unknown.

  Dependency failing: com.google.android.gms:play-services-measurement-api:17.0.0 -> com.google.android.gms:play-services-
  measurement-sdk-api@[17.0.0], but play-services-measurement-sdk-api version was 17.1.0.

  The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
  ifact with the issue.
  -- Project 'app' depends onto com.google.android.gms:play-services-ads@11.0.4
  -- Project 'app' depends onto com.google.android.gms:play-services-measurement-sdk@17.0.0
  -- Project 'app' depends onto com.google.android.gms:play-services-ads@19.0.1
  -- Project 'app' depends onto com.google.android.gms:play-services-gass@19.0.1
  -- Project 'app' depends onto com.google.firebase:firebase-core@17.0.0
  -- Project 'app' depends onto com.google.android.gms:play-services-ads@16.0.0
  -- Project 'app' depends onto com.google.android.gms:play-services-tagmanager-api@17.0.0
  -- Project 'app' depends onto com.google.firebase:firebase-analytics@17.0.0
  -- Project 'app' depends onto com.google.android.gms:play-services-tagmanager@17.0.0
  -- Project 'app' depends onto com.google.android.gms:play-services-measurement-api@17.0.0
  -- Project 'app' depends onto com.google.android.gms:play-services-measurement-sdk-api@17.1.0
  -- Project 'app' depends onto com.google.android.gms:play-services-ads-lite@19.0.1

  For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep
  endency paths to the artifact. This error message came from the google-services Gradle plugin, report issues at https://
  github.com/google/play-services-plugins and disable by adding "googleServices { disableVersionCheck = false }" to your b
  uild.gradle file.

我尝试在 package.json 中声明不同版本的 Google Play 服务,但我无法消除此错误。当我将它与ionic serve 一起使用时,该应用程序运行良好(即使 AdMobFree 插件不起作用,因为它位于浏览器而不是移动设备上),所以我想这不是我的代码库或插件本身的问题,但是而是我的 Android SDK 版本等问题。

有人知道如何解决这个烦人的错误吗?

非常感谢!

编辑:我的环境如下所示:

Windows 10
Node Version: 14.1
Ionic Version: 5.4.14
Cordova Android: ^8.1.0

这是我的 build.gradle:

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath 'com.android.tools.build:gradle:3.3.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }

    //This replaces project.properties w.r.t. build settings
    project.ext {
      defaultBuildToolsVersion="28.0.3" //String
      defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4
      defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default
      defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

编辑 2: 经过多次尝试和两个答案,这仍然不起作用。我一遍又一遍地遇到同样的错误,提到了 Google Play Services 依赖错误,尤其是 com.google.android.gms:play-services-measurement-api 包。

这已经失控了,因为我已经尝试了所有解决方案,但似乎没有任何结果。在这方面我需要多少帮助,我怎么强调都不为过。

【问题讨论】:

  • 日志明确指出,听起来像是依赖版本冲突或者你错过了添加一些东西。无法具体说明发生了什么,谷歌它的日志标题 - In project app a resolved Google Play services library dependency depends on another at an exact version
  • 当然@AnoopM,但我不知道如何解决这个问题。 Gradle 编译是否有问题,或者我的 package.json 依赖项有问题?
  • 尝试找到一个build.gradle 文件并将其发布到您的问题中。
  • @ahasbini 谢谢!我刚刚发布了它:)
  • 您发布的build.gradle 文件状态良好。文件夹/子文件夹中可能有多个build.gradle 文件,如果您找到更多或全部,请也发布它们

标签: android cordova ionic-framework


【解决方案1】:

我能够重现类似的问题,创建一个空的 Ionic 应用程序并添加以下两个插件:cordova-plugin-firebase-analyticscordova-plugin-admob-free。我必须在 Admob & Firebase 注册测试应用并下载 Firebase 配置文件。日志中的相同依赖项相关错误。我听从了thread 的建议。

这就是我所做的:

cordova plugin rm cordova-plugin-admob-free --variable ADMOB_APP_ID="xxx"
cordova plugin add cordova-admob-sdk
cordova plugin add cordova-plugin-admob-free --variable ADMOB_APP_ID="xxx"

这已经解决了我的问题。

【讨论】:

  • 我尝试了解决方案,但它对我不起作用。 StackOverFlow 将随机答案标记为有效,因为我已经离开了几天,但实际问题尚未解决。无论如何,非常感谢您的尝试。在测试了您的解决方案后,我偶然发现了同样的问题。你有没有做其他事情来解决这个问题?
  • @Zerok 很抱歉,它没有帮助。这就是我所做的一切。起初,我尝试将"cordova-admob-sdk": { "PLAY_SERVICES_VERSION": "15.0.1" } 用于cordova-admob-sdk,正如我提到的胎面的最后一篇文章中所说的那样。我玩过不同的版本号,但由于某种原因,当我明确设置版本时出现随机错误。
  • 我会继续努力,但无论如何,非常感谢@scor4er!如果我一直失败,我会发布更新。
【解决方案2】:

这似乎是一些 google 依赖项相互冲突,并且包含在 ionic 框架中。

检查the following thread 因为它可以解决您的问题。

另外,请尝试将以下内容添加到您的 build.gradle 文件并再次构建您的应用,以查看 gradle 是否为您提供更多详细信息。

googleServices { 
    disableVersionCheck = false 
}

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 2019-01-06
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多