OneSignalDevelopers / OneSignal-Cordova-Example

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Could not resolve com.google.android.gms:play-services-base

sync-by-unito opened this issue · comments

Description:
I have an error when running cordova build after adding the OneSignal Cordova SDK. It seems to be looking in the wrong place for GMS libraries.

There is a demo of this on github at https://github.com/mikebridge/CordovaOneSignalProblem

$ cordova build
=>
...
Could not resolve com.google.android.gms:play-services-base:[15.0.0, 16.0.0).
  Required by:
      project :app > com.onesignal:OneSignal:3.15.1
 ... (full details below)

Environment

$ cordova --version
9.0.0 (cordova-lib@9.0.1)

Steps to Reproduce Issue:

mkdir cordova_test
cd cordova_test
cordova create hello com.example.hello HelloWorld
cd hello/
cordova platform add android
cordova plugin add @iotize/device-com-nfc.cordova
cordova build # <- this works
cordova plugin add onesignal-cordova-plugin --save
cordova build # <- now this doesn't work

FULL ERROR

cordova build
=>
$ cordova  build

Monetize your app with AdMob ads. Now available with this cordova / phonegap plugin:
cordova plugin add cordova-admob
Docs: https://github.com/appfeel/admob-google-cordova

Checking Java JDK and Android SDK versions
ANDROID_SDK_ROOT=undefined (recommended setting)
ANDROID_HOME=/home/bridge/Android/Sdk (DEPRECATED)
Subproject Path: CordovaLib
Subproject Path: app

> Configure project :app
WARNING: The onesignal-gradle-plugin MUST be before com.android.application!
   Please put onesignal-gradle-plugin first OR update to com.android.tools.build:gradle:3.0.0 or newer!

> Task :app:preBuild UP-TO-DATE
> Task :CordovaLib:preBuild UP-TO-DATE
> Task :CordovaLib:preDebugBuild UP-TO-DATE
> Task :CordovaLib:checkDebugManifest UP-TO-DATE
> Task :CordovaLib:processDebugManifest UP-TO-DATE
> Task :app:preDebugBuild FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all files for configuration ':app:debugCompileClasspath'.
> Could not resolve com.google.android.gms:play-services-base:[15.0.0, 16.0.0).
  Required by:
      project :app > com.onesignal:OneSignal:3.15.1
   > Failed to list versions for com.google.android.gms:play-services-base.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'. Received status code 401 from server: Unauthorized
> Could not resolve com.google.android.gms:play-services-base:[15.0.1,16.0.0).
  Required by:
      project :app > com.google.android.gms:play-services-location:15.0.1
   > Failed to list versions for com.google.android.gms:play-services-base.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'. Received status code 401 from server: Unauthorized
> Could not resolve com.google.android.gms:play-services-basement:[15.0.1,16.0.0).
  Required by:
      project :app > com.google.android.gms:play-services-location:15.0.1
      project :app > com.google.android.gms:play-services-places-placereport:15.0.1
   > Failed to list versions for com.google.android.gms:play-services-basement.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-basement/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-basement/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-basement/maven-metadata.xml'. Received status code 401 from server: Unauthorized
> Could not resolve com.google.android.gms:play-services-tasks:[15.0.1,16.0.0).
  Required by:
      project :app > com.google.android.gms:play-services-location:15.0.1
   > Failed to list versions for com.google.android.gms:play-services-tasks.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-tasks/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-tasks/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-tasks/maven-metadata.xml'. Received status code 401 from server: Unauthorized

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s
3 actionable tasks: 1 executed, 2 up-to-date
/home/bridge/work/cordova_test/hello/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all files for configuration ':app:debugCompileClasspath'.
> Could not resolve com.google.android.gms:play-services-base:[15.0.0, 16.0.0).
  Required by:
      project :app > com.onesignal:OneSignal:3.15.1
   > Failed to list versions for com.google.android.gms:play-services-base.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'. Received status code 401 from server: Unauthorized
> Could not resolve com.google.android.gms:play-services-base:[15.0.1,16.0.0).
  Required by:
      project :app > com.google.android.gms:play-services-location:15.0.1
   > Failed to list versions for com.google.android.gms:play-services-base.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-base/maven-metadata.xml'. Received status code 401 from server: Unauthorized
> Could not resolve com.google.android.gms:play-services-basement:[15.0.1,16.0.0).
  Required by:
      project :app > com.google.android.gms:play-services-location:15.0.1
      project :app > com.google.android.gms:play-services-places-placereport:15.0.1
   > Failed to list versions for com.google.android.gms:play-services-basement.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-basement/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-basement/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-basement/maven-metadata.xml'. Received status code 401 from server: Unauthorized
> Could not resolve com.google.android.gms:play-services-tasks:[15.0.1,16.0.0).
  Required by:
      project :app > com.google.android.gms:play-services-location:15.0.1
   > Failed to list versions for com.google.android.gms:play-services-tasks.
      > Unable to load Maven meta-data from http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-tasks/maven-metadata.xml.
         > Could not get resource 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-tasks/maven-metadata.xml'.
            > Could not GET 'http://repo.iotize.com/artifactory/gradle-release/com/google/android/gms/play-services-tasks/maven-metadata.xml'. Received status code 401 from server: Unauthorized

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s

Possibly related: https://stackoverflow.com/questions/60107246/could-not-determine-the-dependencies-while-using-com-onesignalonesignal-sdk-and

┆Issue is synchronized with this Asana task by Unito

➤ Mike Bridge commented:

I was able to get this to the point where it will compile, inspired by this thread ( OneSignal/OneSignal-Gradle-Plugin#91 ), but now I am getting runtime errors.

This is what I did:

  1. comment out this line in app/platforms/android/project.properties:

cordova.system.library.7=com.onesignal:OneSignal:3.15.22) update the implementation for OneSignal so it looks kind of like this:dependencies {
implementation fileTree(dir: 'libs', include: '*.jar')
implementation ('com.onesignal:OneSignal:3.15.2') {
exclude group: 'com.google.android.gms'
}
// SUB-PROJECT DEPENDENCIES START
implementation(project(path: ":CordovaLib"))
//...
// SUB-PROJECT DEPENDENCIES END
}Then under android:

android {
// ...
configurations.all {
resolutionStrategy {
force 'com.google.android.gms:play-services-base:17.2.1'
force 'com.google.android.gms:play-services-basement:17.2.1'
force 'com.google.android.gms:play-services-ads:19.1.0'
force 'com.google.android.gms:play-services-location:17.0.0'
force 'com.google.android.gms:play-services-tasks:17.0.1'
force 'com.google.firebase:firebase-messaging:20.1.6'
force 'com.google.firebase:firebase-analytics:17.4.0'
force 'com.google.firebase:firebase-crashlytics:17.0.0'
force 'com.google.android.gms:play-services-ads-identifier:17.0.0'
}
}
}This allows me to build, but now I have this error at runtime in logcat:

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.Preconditions"

➤ Rodrigo Gomez Palacio commented:

Reproducible.

We also tried updating the app/build.gradle with suggestsion from here ( OneSignal/OneSignal-Cordova-SDK#556 )

YzTQ75W5LDJmiJhVPESkarUFLdJU5Qdq3MXU2i1AopWifBE1EPwp0/e0C245BVf24mWKZWnZZHml6x98J3z0jq57E+mY3qgJajcrJK7KUZs1S/oU9O79GwIPUZ1Xg+wvtaB2JgJHDBCPSo6OaFsIbD83JT2LzyhssDElbMibu40=

➤ Mike Bridge commented:

I was able to get this to compile and boot successfully by moving those dependencies out of the resolutionStrategy and into the dependencies. So:
  1. comment out this line in app/platforms/android/project.properties (so that build.gradle is not auto-updated):

cordova.system.library.7=com.onesignal:OneSignal:3.15.2

  1. Delete the line implementation "com.onesignal:OneSignal:3.15.2" from within the SUB-PROJECT DEPENDENCIES and replace it with this:

dependencies {
implementation fileTree(dir: 'libs', include: '*.jar')
implementation "com.google.android.gms:play-services-base:17.4.0"
implementation "com.google.android.gms:play-services-location:17.0.0"
implementation "com.google.android.gms:play-services-basement:17.4.0"
implementation "com.google.android.gms:play-services-tasks:17.2.0"
implementation "com.google.android.gms:play-services-stats:17.0.0"
implementation "com.google.firebase:firebase-measurement-connector:18.0.0"
implementation "com.google.firebase:firebase-messaging:17.3.4"
implementation "com.google.firebase:firebase-analytics:17.5.0"
implementation "com.google.firebase:firebase-common:19.3.1"
implementation "com.google.firebase:firebase-iid:17.0.4"
implementation ('com.onesignal:OneSignal:3.15.2') {
exclude group: 'com.google.android.gms'
}
// SUB-PROJECT DEPENDENCIES START
implementation(project(path: ":CordovaLib"))
//...
// SUB-PROJECT DEPENDENCIES END
}I used the most-recently-available versions for all but firebase-messaging and firebase-iid.

  1. Once I added all the dependencies explicitly, it told me that the result was too big for dex, so I had to also convert the project to androidx, including adding this to gradle.properties:

android.useAndroidX=true
android.enableJetifier=true(I actually performed the refactor using Android Studio's Refactor -> Migrate to AndroidX... feature)

... I was then able to sync gradle, and deploy a debug apk.