web-dev-qa-db-fra.com

Utilitaire interne Android facebook sdk Java.lang.AssertionError

J'utilise la version 4.27.0 de facebook sdk pour Android. J'ai eu un crash uniquement pour les appareils Android 8+. La trace de la pile est la suivante:

Fatal Exception: Java.lang.AssertionError: No NameTypeIndex match for SHORT_DAYLIGHT
       at Android.icu.impl.TimeZoneNamesImpl$ZNames.getNameTypeIndex(TimeZoneNamesImpl.Java:724)
       at Android.icu.impl.TimeZoneNamesImpl$ZNames.getName(TimeZoneNamesImpl.Java:790)
       at Android.icu.impl.TimeZoneNamesImpl.getTimeZoneDisplayName(TimeZoneNamesImpl.Java:183)
       at Android.icu.text.TimeZoneNames.getDisplayName(TimeZoneNames.Java:261)
       at Java.util.TimeZone.getDisplayName(TimeZone.Java:405)
       at Java.util.TimeZone.getDisplayName(TimeZone.Java:370)
       at com.facebook.internal.Utility.refreshTimezone(Utility.Java:1066)
       at com.facebook.internal.Utility.refreshPeriodicExtendedDeviceInfo(Utility.Java:1056)
       at com.facebook.internal.Utility.setAppEventExtendedDeviceInfoParameters(Utility.Java:707)
       at com.facebook.internal.AppEventsLoggerUtility.getJSONObjectForGraphAPICall(AppEventsLoggerUtility.Java:68)
       at com.facebook.FacebookSdk.publishInstallAndWaitForResponse(FacebookSdk.Java:568)
       at com.facebook.FacebookSdk$4.run(FacebookSdk.Java:547)
       at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1162)
       at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:636)
       at Java.lang.Thread.run(Thread.Java:764)

J'ai cherché cela sur le Web mais je n'ai rien pu trouver d'utile. Veuillez fournir quelques indications ici.

9
Swapnil

Je suis également confronté à ce problème. Pour mettre à niveau le SDK Facebook vers la dernière version (SDK Facebook Android 4.35), ils ont ajouté une solution de contournement pour ce problème:

 private static void refreshTimezone() {
    try {
        TimeZone tz = TimeZone.getDefault();
        deviceTimezoneAbbreviation = tz.getDisplayName(
                tz.inDaylightTime(new Date()),
                TimeZone.SHORT
        );
        deviceTimeZoneName = tz.getID();
    } catch (AssertionError e) {
      // Workaround for a bug in Android that can cause crashes on Android 8.0 and 8.1
    } catch (Exception e) {
    }
}
6
Noam a