Android facebook sdk 内部实用程序 java.lang.AssertionError
Android facebook sdk internal utility java.lang.AssertionError
我一直在为 android 使用 facebook SDK 版本 4.27.0
。我只遇到 android 8+ 设备的崩溃。堆栈跟踪如下:
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.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)
我在网上搜索过这个,但找不到任何有用的东西。请在这里指点一下。
是的,即使我在使用 volley 库时在我的应用程序中也面临这种问题,即将进入具有 Android 8.0.1 版本的设备。
致命异常:java.lang.AssertionError
SHORT_STANDARD
没有 NameTypeIndex 匹配
android.icu.impl.TimeZoneNamesImpl$ZNames.getNameTypeIndex
(TimeZoneNamesImpl.java:724)
android.icu.impl.TimeZoneNamesImpl$ZNames.getName
(TimeZoneNamesImpl.java:790)
android.icu.impl.TimeZoneNamesImpl.getTimeZoneDisplayName
(TimeZoneNamesImpl.java:183)
android.icu.text.TimeZoneNames.getDisplayName (TimeZoneNames.java:261)
java.text.SimpleDateFormat.subFormat (SimpleDateFormat.java:1296)
java.text.SimpleDateFormat.format (SimpleDateFormat.java:1004)
java.text.SimpleDateFormat.format (SimpleDateFormat.java:974)
java.text.DateFormat.format (DateFormat.java:341)
com.android.volley.toolbox.HttpHeaderParser.formatEpochAsRfc1123
(HttpHeaderParser.java:152)
com.android.volley.toolbox.BasicNetwork.getCacheHeaders
(BasicNetwork.java:256)
com.android.volley.toolbox.BasicNetwork.performRequest
(BasicNetwork.java:130)
com.android.volley.NetworkDispatcher.processRequest
(NetworkDispatcher.java:120)
com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:87)
当我在 volley github 上提出这个 issue 时,在检查后他们回答说这是设备框架问题,意味着制造定制的 os 错误。
我觉得我们都面临着同样的问题,因为错误实际开始的行是 "android.icu.text.TimeZoneNames.getDisplayName(TimeZoneNames.java:261)" 在我们的两个堆栈跟踪中是相同的。这更多是 google 开发人员的 ICU package issue that is embedded in the framework. I found one personally forked Git class 是 IBM icu 的 class,其中行号 722 " throw new AssertionError("No NameTypeIndex match for " + type);" 实际上在我们的两个案例中都抛出了错误。让我们希望 Google 提出修复或任何解决方法。我的观察可能有误,你自己研究吧。
我也面临这个问题,请将 Facebook SDK 升级到最新版本(Facebook Android SDK 4.35),他们已针对此问题添加了解决方法:
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) {
}
}
我一直在为 android 使用 facebook SDK 版本 4.27.0
。我只遇到 android 8+ 设备的崩溃。堆栈跟踪如下:
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.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)
我在网上搜索过这个,但找不到任何有用的东西。请在这里指点一下。
是的,即使我在使用 volley 库时在我的应用程序中也面临这种问题,即将进入具有 Android 8.0.1 版本的设备。
致命异常:java.lang.AssertionError SHORT_STANDARD
没有 NameTypeIndex 匹配android.icu.impl.TimeZoneNamesImpl$ZNames.getNameTypeIndex
(TimeZoneNamesImpl.java:724)
android.icu.impl.TimeZoneNamesImpl$ZNames.getName
(TimeZoneNamesImpl.java:790)
android.icu.impl.TimeZoneNamesImpl.getTimeZoneDisplayName
(TimeZoneNamesImpl.java:183)
android.icu.text.TimeZoneNames.getDisplayName (TimeZoneNames.java:261)
java.text.SimpleDateFormat.subFormat (SimpleDateFormat.java:1296)
java.text.SimpleDateFormat.format (SimpleDateFormat.java:1004)
java.text.SimpleDateFormat.format (SimpleDateFormat.java:974)
java.text.DateFormat.format (DateFormat.java:341)
com.android.volley.toolbox.HttpHeaderParser.formatEpochAsRfc1123
(HttpHeaderParser.java:152)
com.android.volley.toolbox.BasicNetwork.getCacheHeaders
(BasicNetwork.java:256)
com.android.volley.toolbox.BasicNetwork.performRequest
(BasicNetwork.java:130)
com.android.volley.NetworkDispatcher.processRequest
(NetworkDispatcher.java:120)
com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:87)
当我在 volley github 上提出这个 issue 时,在检查后他们回答说这是设备框架问题,意味着制造定制的 os 错误。 我觉得我们都面临着同样的问题,因为错误实际开始的行是 "android.icu.text.TimeZoneNames.getDisplayName(TimeZoneNames.java:261)" 在我们的两个堆栈跟踪中是相同的。这更多是 google 开发人员的 ICU package issue that is embedded in the framework. I found one personally forked Git class 是 IBM icu 的 class,其中行号 722 " throw new AssertionError("No NameTypeIndex match for " + type);" 实际上在我们的两个案例中都抛出了错误。让我们希望 Google 提出修复或任何解决方法。我的观察可能有误,你自己研究吧。
我也面临这个问题,请将 Facebook SDK 升级到最新版本(Facebook Android SDK 4.35),他们已针对此问题添加了解决方法:
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) {
}
}