更新 我添加到 proguard 规则 -keep class firebase,所以现在我可以获得 GCM token 。 但 OneSignal 检测到我的应用程序仍然缺少 Android 支持库。 我之前有一个应用程序,我可以在其中构建一个签名的 apk 并使用 One Signal。 但是现在当我检查这个应用程序时,我遇到了当我能够使用 Build->Build APK(s) 将 minifyEnabled 设置为 false 来构建调试 apk 时,但是当我将 minifyEnabled 设置为 true 时,我得到了同样的错误项目也是。 在我尝试添加 -keep class com.android.support. ** 和 -keep interface com.android.support. ** 但 One Signal 仍然检测到我的应用程序后不包含支持库(无论如何支持 lib??)。
我在我的应用中实现了 One Signal。 如果我在 Android Studio 中通过“运行应用程序”启动应用程序,一切正常。 但是如果我通过“Build->Build apk(s)”构建一个 Apk 或者我生成一个签名的 apk,在我安装它之后 One Signal 仪表板会显示“缺少 Android 支持库”。 我已经阅读了 One Signal 网站上的全天教程,但我无法解决这个问题。 我该如何解决?
我收到这个错误
05-10 21:12:21.054 17990-18243/com.aff.index.main.debug E/OneSignal: Unknown error getting GCM Token java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/gcm/GoogleCloudMessaging; at com.onesignal.av.a(PushRegistratorGCM.java:41) at com.onesignal.at.a(PushRegistratorAbstractGoogle.java:97) at com.onesignal.at.a(PushRegistratorAbstractGoogle.java:37) at com.onesignal.at$1.run(PushRegistratorAbstractGoogle.java:84) at java.lang.Thread.run(Thread.java:762) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.gcm.GoogleCloudMessaging" on path: DexPathList[[zip file "/system/framework/com.sec.android.app.multiwindow.jar", zip file "/data/app/com.aff.index.main.debug-1/base.apk"],nativeLibraryDirectories=[/data/app/com.aff.index.main.debug-1/lib/arm64, /data/app/com.aff.index.main.debug-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:380) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.onesignal.av.a(PushRegistratorGCM.java:41) at com.onesignal.at.a(PushRegistratorAbstractGoogle.java:97) at com.onesignal.at.a(PushRegistratorAbstractGoogle.java:37) at com.onesignal.at$1.run(PushRegistratorAbstractGoogle.java:84) at java.lang.Thread.run(Thread.java:762)
最佳答案
经过大量尝试和错误后,我找到了解决方案,我在 app/build.gradle 中使用了这些行:
plugins {
id 'com.onesignal.androidsdk.onesignal-gradle-plugin' version '0.8.1'
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: 'com.android.application'
android {
...
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
...
implementation 'com.onesignal:OneSignal:**3.8.4**'
}
apply plugin: 'com.google.gms.google-services'
注意:3.8.4 是重点,它被用来代替 [3.8.3, 3.99.99]。
以及 project/build.gradle 中的这些依赖项:
buildscript {
repositories {
jcenter()
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.google.gms:google-services:3.2.0'
}
}
allprojects {
repositories {
jcenter()
google()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
关于android - One Signal 缺少支持库 - Android SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50277710/