IllegalAccessError только на экспортированных подписанных APK - PullRequest
1 голос
/ 22 марта 2011

У меня тут настоящие проблемы. У меня есть приложение, которое использует Google Analytics для Android lib и прекрасно работает, когда я запускаю приложение на своем устройстве из eclipse.

Когда проект был готов к выпуску, я загрузил обновление для своего приложения на Android Market. К счастью, я решил проверить, работает ли приложение, поэтому после удаления собственной версии приложения я скачал с 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)

Понятия не имею, почему это происходит. Все, что я могу сказать, это то, что APK в каталоге / bin / моего проекта примерно на 0,1 Мб больше, чем предположительно подписанный и экспортированный APK. Я попытался установить подписанный и экспортированный APK на свое устройство через ADB вручную, но получаю ту же ошибку, что и выше.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 03 июля 2011

У меня была такая же ошибка, но я исправил ее, добавив в proguard.cfg:

-keep class com.google.android.apps.analytics.PipelinedRequester$Callbacks
0 голосов
/ 19 февраля 2013

Хотя это старый вопрос, он может кому-то помочь в какой-то момент. У меня было много проблем с этим, и решения для экспорта пакетов довольно случайны.

Мое общее решение - отключить автоматическую сборку, очистить ее, а затем вручную собрать проекты библиотек.

Например

  • В меню Project
  • Снимите отметку Построить автоматически
  • Тогда Проект > Чистота ...
  • В этом окне снимите флажок Начать сборку немедленно
  • Выберите Очистите все проекты и нажмите OK
  • Если у вас нет других включенных проектов в вашем и это только один, экспортируйте свой проект как подписанный APK.

Если у вас есть какие-либо библиотечные проекты (Sherlock ActionBar, HoloEverywhere и т. Д.)

  • Выберите каждый проект индивидуально и выполните Проект > Построить проект (НЕ Построить все).
    • Это создаст ТОЛЬКО эту библиотеку
    • Сделайте это для любых библиотечных проектов, которые вы включили.
  • Нажмите сейчас, экспортируйте свой проект как подписанный APK.

Это обычно работает для меня и останавливает множество необъяснимых проблем с экспортом.

...