[英]Can't build an Android Cordova project (Ionic 5)
我正在 Ionic 5 中制作一个应用程序(使用 Angular 作为我选择的框架),它使用 Cordova 来编译最终的混合应用程序。
随着最后的开发期即将到来,我正在尝试将一些广告放入应用程序中。 为此,我使用了 Cordova 的插件“AdMobFree”,并将其与 ionic-native/admob-free NPM package 集成,以使用我的代码库中的插件。
问题是,我无法编译任何东西。 我得到的错误似乎与 Google Play Services package 有关。 此错误开始给我以下警告:
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:经过多次尝试和两个答案,这仍然不起作用。 我一遍又一遍地遇到同样的错误,提到了谷歌播放服务依赖错误,特别是com.google.android.gms:play-services-measurement-api
ZEFE90A8E604A7C840E88D03A67F。
这已经失控了,因为我已经尝试了所有解决方案,但似乎没有任何结果。 我不能强调我在这方面需要多少帮助。
我能够重现类似的问题,创建一个空的 Ionic 应用程序并添加以下两个插件: cordova-plugin-firebase-analytics
和cordova-plugin-admob-free
。 我必须在 Admob 和 Firebase 注册测试应用程序并下载 Firebase 配置文件。 日志中的相同依赖项相关错误。 我遵循了这个 线程的建议。
这是我所做的:
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"
这为我解决了这个问题。
这似乎是一些 google 依赖项相互冲突,并且包含在 ionic 框架中。
检查以下线程因为它可以解决您的问题。
此外,尝试将以下内容添加到您的 build.gradle 文件并再次构建您的应用程序以查看 gradle 是否为您提供更多详细信息。
googleServices {
disableVersionCheck = false
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.