Android Don';你不知道GoogleAnalyticsV2的版本吗?

Android Don';你不知道GoogleAnalyticsV2的版本吗?,android,android-emulator,google-analytics,Android,Android Emulator,Google Analytics,我的应用程序支持Android 1.5(API3)到4.1.2(API16)。当我添加GoogleAnalyticsV2并重新测试它时,emulator中的API3会出现错误: 11-08 20:00:58.813: E/dalvikvm(732): Could not find method android.content.pm.PackageManager.getInstallerPackageName, referenced from method com.google.analytics

我的应用程序支持Android 1.5(API3)到4.1.2(API16)。当我添加GoogleAnalyticsV2并重新测试它时,emulator中的API3会出现错误:

11-08 20:00:58.813: E/dalvikvm(732): Could not find method
android.content.pm.PackageManager.getInstallerPackageName, referenced
from method
com.google.analytics.tracking.android.GAThread.fillAppParameters 11-08
20:00:58.887: W/dalvikvm(732): VFY: unable to resolve virtual method
226: Landroid/content/pm/PackageManager;.getInstallerPackageName
(Ljava/lang/String;)Ljava/lang/String; 11-08 20:00:58.925:
W/dalvikvm(732): VFY:  rejecting opcode 0x6e at 0x000c 11-08
20:00:58.934: W/dalvikvm(732): VFY:  rejected
Lcom/google/analytics/tracking/android/GAThread;.fillAppParameters
(Ljava/util/Map;)V 11-08 20:00:58.934: W/dalvikvm(732): Verifier
rejected class Lcom/google/analytics/tracking/android/GAThread; 11-08
20:00:58.964: D/AndroidRuntime(732): Shutting down VM 11-08
20:00:58.964: W/dalvikvm(732): threadid=3: thread exiting with
uncaught exception (group=0x4000fe70) 11-08 20:00:58.985:
E/AndroidRuntime(732): Uncaught handler: thread main exiting due to
uncaught exception 11-08 20:00:59.084: E/AndroidRuntime(732):
java.lang.VerifyError: com.google.analytics.tracking.android.GAThread
11-08 20:00:59.084: E/AndroidRuntime(732):  at
com.google.analytics.tracking.android.GoogleAnalytics.<init>(GoogleAnalytics.java:55)
11-08 20:00:59.084: E/AndroidRuntime(732):  at
com.google.analytics.tracking.android.GoogleAnalytics.getInstance(GoogleAnalytics.java:91)
11-08 20:00:59.084: E/AndroidRuntime(732):  at
com.google.analytics.tracking.android.EasyTracker.setContext(EasyTracker.java:309)
11-08 20:00:59.084: E/AndroidRuntime(732):  at
com.tonycode.primenumbers.ListNumsActivity.onCreate(ListNumsActivity.java:32)
11-08 20:00:59.084: E/AndroidRuntime(732):  at
...
11-08 20:00:58.813:E/dalvikvm(732):找不到方法
android.content.pm.PackageManager.getInstallerPackageName,引用
从方法
com.google.analytics.tracking.android.GAThread.fillAppParameters 11-08
20:00:58.887:W/dalvikvm(732):VFY:无法解析虚拟方法
226:Landroid/content/pm/PackageManager;。getInstallerPackageName
(Ljava/lang/String;)Ljava/lang/String;11-08 20:00:58.925:
W/dalvikvm(732):VFY:在0x000c 11-08处拒绝操作码0x6e
20:00:58.934:W/dalvikvm(732):VFY:拒绝
Lcom/google/analytics/tracking/android/GAThread;。fillAppParameters
(Ljava/util/Map;)v11-0820:00:58.934:W/dalvikvm(732):验证器
拒绝类Lcom/google/analytics/tracking/android/GAThread;11-08
20:00:58.964:D/AndroidRuntime(732):关闭VM 11-08
20:00:58.964:W/dalvikvm(732):threadid=3:线程正在退出
未捕获异常(组=0x4000fe70)11-08 20:00:58.985:
E/AndroidRuntime(732):未捕获处理程序:由于
未捕获异常11-08 20:00:59.084:E/AndroidRuntime(732):
java.lang.VerifyError:com.google.analytics.tracking.android.GAThread
11-08 20:00:59.084:E/AndroidRuntime(732):在
google.analytics.tracking.android.GoogleAnalytics.(GoogleAnalytics.java:55)
11-08 20:00:59.084:E/AndroidRuntime(732):在
com.google.analytics.tracking.android.GoogleAnalytics.getInstance(GoogleAnalytics.java:91)
11-08 20:00:59.084:E/AndroidRuntime(732):在
com.google.analytics.tracking.android.EasyTracker.setContext(EasyTracker.java:309)
11-08 20:00:59.084:E/AndroidRuntime(732):在
com.tonycode.primenumbers.ListNumsActivity.onCreate(ListNumsActivity.java:32)
11-08 20:00:59.084:E/AndroidRuntime(732):在
...
在真实设备上进行测试时,安卓2.3.3和安卓4.0.3都可以

在上面的日志中,我发现分析无法启动,因为方法 android.content.pm.PackageManager.getInstallerPackageName不在API3中,它只在[API5]中出现[http://developer.android.com/reference/android/content/pm/PackageManager.html#getInstallerPackageName(java.lang.String)

那么,你能帮我- (1) 有没有办法在API3和API4中启用GoogleAnalyticsV2?
(2) 如果没有,如果应用程序安装在API3/4上,我如何在代码中禁用GoogleAnalyticsV2?

您可以通过选中
Build.VERSION.SDK\u INT
仅为API 5+启用谷歌分析:

if (Build.VERSION.SDK_INT >= 5) {
    // Start Google Analytics...
}
编辑

在API 4之前,
SDK\u INT
不存在。不过,您可以使用稍微不方便的(字符串),这将适用于所有Android版本。对
RELEASE
值进行一些简单的解析可以解决您的问题:

if (android.os.Build.VERSION.RELEASE.startsWith("1.5") == false) {
    // Start Google Analytics...
}

如果您决定支持早于3的API级别(Android 1.5),那么您也需要过滤掉它们。

GoogleAnalytics网站上没有提到这一点,但GA真的需要API5+?有什么想法如何在API3和API4上启用它吗?哎呀,它只适用于API4,API3得到:“验证器错误:VFY:无法解析静态字段34。”(SDK_INT)在Landroid/os/Build$VERSION中;“在run-time.Oops中,确实如此!我已经更新了我的答案,以包含应该在API3+上工作的代码。