仅在导出的签名APK上出现IllegalAccessError

时间:2011-03-22 01:00:43

标签: java android eclipse release

我在这里遇到了麻烦。我有一个使用Google Analytics for Android lib的应用程序,当我从eclipse运行我的设备上的应用程序时效果很好。

当项目准备发布时,我将应用的更新上传到Android电子市场。幸运的是,我决定检查该应用程序是否有效,因此在卸载我自己的应用程序版本后,我从Android Market下载了刚刚上传的新版本。在打开应用程序时,应用程序崩溃并出现以下错误:

java.lang.IllegalAccessError: tried to access method com.google.android.apps.analytics.g$a.<init>:(Lcom/google/android/apps/analytics/a$a;Lcom/google/android/apps/analytics/g;Ljava/lang/String;Ljava/lang/String;)V from class com.google.android.apps.analytics.c
    at com.google.android.apps.analytics.c.<init>(Unknown Source)
    at com.google.android.apps.analytics.c.<init>(Unknown Source)
    at com.google.android.apps.analytics.c.<init>(Unknown Source)
    at com.google.android.apps.analytics.b.a(Unknown Source)
    at com.google.android.apps.analytics.f.a(Unknown Source)
    at com.me.myapp.onCreate(Unknown Source)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3683)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)

我不知道为什么会这样。我可以说的是,我项目的/ bin /目录中的APK比所谓的签名和导出的APK大约0.1 Mb。我已经尝试通过ADB手动将已签名和导出的APK安装到我的设备上,但是我得到了与上面相同的错误。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的错误,但通过将其添加到我的proguard.cfg来修复它:

-keep class com.google.android.apps.analytics.PipelinedRequester$Callbacks

答案 1 :(得分:0)

虽然这是一个老问题,但在某些时候它可能对某人有帮助。我也遇到了很多麻烦,出口包解决方案相当随机。

我的一般解决方案是禁用自动构建,清理它然后手动构建库项目。

例如

  • 项目菜单
  • 取消选中自动构建
  • 然后项目&gt;的清洁...
  • 在此窗口中,取消选中立即开始构建
  • 选择清除所有项目,然后点击确定
  • 如果您的项目中没有其他项目,请将项目导出为已签名的APK。

如果你有任何图书馆项目(Sherlock ActionBar,HoloEverywhere等)

  • 单独选择每个项目并执行项目&gt; 构建项目(NOT Build All)。
    • 这将只构建这一个库
    • 对您所包含的任何图书馆项目执行此操作。
  • 单击“立即”,将项目导出为已签名的APK。

这通常对我有用,并且会阻止很多无法解释的出口问题。