【问题标题】:Android StringIndexOutOfBoundsException inside Google Analytics SDKGoogle Analytics SDK 中的 Android StringIndexOutOfBoundsException
【发布时间】:2014-01-09 08:52:12
【问题描述】:

最近,我的应用收到了一些崩溃报告,但该异常:

0  java.lang.StringIndexOutOfBoundsException: length=8; regionStart=0; regionLength=32
1   at java.lang.String.startEndAndLength(String.java:593)
2   at java.lang.String.substring(String.java:1474)
3   at com.google.ads.util.AdUtil.b(SourceFile:447)
4   at com.google.ads.AdRequest.<clinit>(SourceFile:210)
5   at java.lang.Class.classForName(Native Method)
6   at java.lang.Class.forName(Class.java:217)
7   at java.lang.Class.forName(Class.java:172)
8   at com.google.analytics.tracking.android.AdHitIdGenerator.<init>(AdHitIdGenerator.java:17)
9   at com.google.analytics.tracking.android.GoogleAnalytics.<init>(GoogleAnalytics.java:65)
10  at com.google.analytics.tracking.android.GoogleAnalytics.<init>(GoogleAnalytics.java:56)
11  at com.google.analytics.tracking.android.GoogleAnalytics.getInstance(GoogleAnalytics.java:92)
12  at com.buscaalimento.android.proxies.GoogleAnalyticsProxy.<init>(GoogleAnalyticsProxy.java:26)
13  at com.buscaalimento.android.proxies.GoogleAnalyticsProxy.createInstance(GoogleAnalyticsProxy.java:40)

显然,这似乎是 Google Analytics SDK jar 中的一个错误。我已经使用 JD-GUI 工具查看了 jar 中的代码。触发异常的行看起来像:

AdHitIdGenerator.java:

try
{
  this.mAdMobSdkInstalled = (Class.forName("com.google.ads.AdRequest") != null);
} catch (ClassNotFoundException e) {
  this.mAdMobSdkInstalled = false;
}

调用 GoogleAnalytics 类的代码(我的代码)是这样的:

public GoogleAnalyticsProxy(Context context) {
    GoogleAnalytics gaInstance = GoogleAnalytics.getInstance(context);
    if (DietaeSaudeApplication.isDebugging() || FORCE_DEBUG) {
        MvLog.d(this, "Running in debug mode!!");
        mTracker = gaInstance.getTracker(DEBUG_TRACKING_ID);
        gaInstance.setDebug(true);
    } else {
        MvLog.d(this, "Running in release mode!!");
        mTracker = gaInstance.getTracker(RELEASE_TRACKING_ID);
        gaInstance.setDebug(false);
    }
    GAServiceManager.getInstance().setDispatchPeriod(30); //dispatch a cada 30 segundos
}

异常发生在这一行:

GoogleAnalytics gaInstance = GoogleAnalytics.getInstance(context);

此代码在 Application 类中调用,我在其中创建应用程序的单例。 我真的不知道这个错误。有人通过这个问题吗?

【问题讨论】:

  • StringIndexOutOfBoundsException 在哪里?
  • 我编辑了问题,现在使用 StringIndexOutOfBoundsException 堆栈跟踪

标签: java android google-analytics


【解决方案1】:

佩德罗,

您似乎从另一个 SDK 类中得到了错误。

根据堆栈跟踪,在第 4 行,SDK 包名称从 com.google.analytics.tracking.android 更改为 com。 google.ads。这意味着它从 Google Mobile Ads SDK 广告包中找到了“AdRequest”类,但不知何故引发了异常。

您可以尝试将所有 SDK 更新到最新版本。或者,在最坏的情况下,在未发布修复程序的情况下为广告使用旧的 SDK 版本。

【讨论】:

  • 哦,我明白了。我会试试你的方法。
猜你喜欢
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多