One Signal отсутствует библиотека поддержки - Android SDK - PullRequest
0 голосов
/ 10 мая 2018

обновление Я добавил в правила proguard - поддержку класса firebase, так что теперь я могу получить токен GCM. Но OneSignal обнаруживает, что в моем приложении по-прежнему отсутствует библиотека поддержки Android. Раньше у меня было приложение, в котором я мог создать подписанный apk и использовать с ним One Signal. Но теперь, когда я проверил это приложение, я испытал, когда смог создать apk отладки с помощью Build-> Build APK (s) с установленным для minifyEnabled значением false, но когда я установил для minifyEnabled значение true, я получил ту же ошибку для этого проект тоже. После того, как я попытался добавить -keep class com.android.support. ** и -keep interface com.android.support. **, но One Signal все еще обнаруживает, что мое приложение не содержит Библиотека поддержки (в любом случае, которые поддерживают lib ??).

Я реализовал One Signal в своем приложении. Если я запускаю приложение через «Запустить приложение» в Android Studio, все работает нормально. Но если я создаю Apk с помощью 'Build-> Build apk (s)' или создаю подписанный apk, после его установки на панели инструментов One Signal появляется надпись "Missing Android Support Library". Я прочитал дневные учебники на сайте One Signal, но мне не удалось решить эту проблему. Как я могу это исправить?

Я получаю эту ошибку

05-10 21: 12: 21.054 17990-18243 / com.aff.index.main.debug E / OneSignal: неизвестная ошибка при получении токена GCM java.lang.NoClassDefFoundError: Ошибка разрешения: Lcom / google / android / gms / gcm / GoogleCloudMessaging; на com.onesignal.av.a (PushRegistratorGCM.java:41) на com.onesignal.at.a (PushRegistratorAbstractGoogle.java:97) на com.onesignal.at.a (PushRegistratorAbstractGoogle.java:37) на com.onesignal.at $ 1.run (PushRegistratorAbstractGoogle.java:84) на java.lang.Thread.run (Thread.java:762) Вызвано: java.lang.ClassNotFoundException: не найден класс "com.google.android.gms.gcm.GoogleCloudMessaging" по пути: DexPathList [[zip файл "/system/framework/com.sec.android.app.multiwindow .jar ", почтовый файл" /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]] в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) в java.lang.ClassLoader.loadClass (ClassLoader.java:380) в java.lang.ClassLoader.loadClass (ClassLoader.java:312) на com.onesignal.av.a (PushRegistratorGCM.java:41) на com.onesignal.at.a (PushRegistratorAbstractGoogle.java:97) на com.onesignal.at.a (PushRegistratorAbstractGoogle.java:37) на com.onesignal.at $ 1.run (PushRegistratorAbstractGoogle.java:84) at java.lang.Thread.run (Thread.java:762)

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Это проблема с OneSignal v3.9.0.Добавьте эти строки в ваши правила Proguard:

-keep class android.support.v4.view.MenuCompat
-keep class android.support.v4.content.WakefulBroadcastReceiver
-keep class android.support.v4.app.NotificationManagerCompat
-keep class android.support.v4.app.JobIntentService
-keep class com.google.firebase.messaging.FirebaseMessaging

В их хранилище закрыт вопрос https://github.com/OneSignal/OneSignal-Android-SDK/issues/533

Полные рабочие правила Proguard для OneSignal v3.9.0:

-dontwarn com.onesignal.**

# These 2 methods are called with reflection.
-keep class com.google.android.gms.common.api.GoogleApiClient {
    void connect();
    void disconnect();
}


-keep class com.onesignal.ActivityLifecycleListenerCompat** {*;}


# Observer backcall methods are called with reflection
-keep class com.onesignal.OSSubscriptionState {
    void changed(com.onesignal.OSPermissionState);
}

-keep class com.onesignal.OSPermissionChangedInternalObserver {
    void changed(com.onesignal.OSPermissionState);
}

-keep class com.onesignal.OSSubscriptionChangedInternalObserver {
    void changed(com.onesignal.OSSubscriptionState);
}

-keep class ** implements com.onesignal.OSPermissionObserver {
    void onOSPermissionChanged(com.onesignal.OSPermissionStateChanges);
}

-keep class ** implements com.onesignal.OSSubscriptionObserver {
    void onOSSubscriptionChanged(com.onesignal.OSSubscriptionStateChanges);
}

-keep class com.onesignal.shortcutbadger.impl.AdwHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.ApexHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.AsusHomeLauncher { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.DefaultBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.EverythingMeHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.HuaweiHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.LGHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.NewHtcHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.NovaHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.OPPOHomeBader { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.SamsungHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.SonyHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.VivoHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.XiaomiHomeBadger { <init>(...); }
-keep class com.onesignal.shortcutbadger.impl.ZukHomeBadger { <init>(...); }

-dontwarn com.google.firebase.messaging.**
-dontwarn com.amazon.**

# Proguard ends up removing this class even if it is used in AndroidManifest.xml so force keeping it.
-keep public class com.onesignal.ADMMessageHandler {*;}

-keep class com.onesignal.JobIntentService$* {*;}

-keep class com.onesignal.OneSignalUnityProxy {*;}

-keep class android.support.v4.view.MenuCompat
-keep class android.support.v4.content.WakefulBroadcastReceiver
-keep class android.support.v4.app.NotificationManagerCompat
-keep class android.support.v4.app.JobIntentService
-keep class com.google.firebase.messaging.FirebaseMessaging
0 голосов
/ 19 мая 2018

После долгих попыток и ошибок я только что нашел решение, я использовал эти строки в 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] .

и эти зависимости в проекте / 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...