2011-03-22 34 views
1

我在這裏遇到了麻煩。我有一個應用程序,它使用Google Analytics for Android lib,並且在我的設備上從eclipse運行應用程序時工作良好。僅在導出簽名的APK上出現IllegalAccessError

當項目準備發佈時,我上傳了我的應用更新到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) 

我不知道爲什麼會發生這種情況。我只能說我項目的/ bin /目錄中的APK比假定簽名和導出的APK大0.1 Mb。我曾嘗試通過ADB手動將已簽名和已導出的APK安裝到我的設備上,但是我得到的錯誤與上面相同。

任何幫助將非常感激。

+0

嘗試重新下載適用於Android的最新Google AnalyticsSDK,然後重做所有步驟,看看它是否有效。 – SteD 2011-03-22 01:41:10

+0

我同意。獲得另一個SDK並重建你的應用程序。打包你的應用程序的最後一步是zipalign你簽名的apk。這將根據apk內容減小尺寸。它不符合你的bin/dir中apk的大小 – apesa 2011-03-22 03:23:33

回答

2

我似乎是同樣的錯誤,但通過添加這對我proguard.cfg固定它:

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

儘管這是一個老問題,它可以幫助某人在某一點。我也遇到了很多麻煩,導出包解決方案相當隨意。

我的一般解決方案是禁用自動構建,清理它,然後手動構建庫項目。

例如

  • 項目菜單
  • 取消選中自動構建
  • 然後項目>清潔...
  • 在這個窗口中,取消開始馬上建立
  • 選擇清潔所有項目並單擊OK
  • 如果你沒有其他的項目包括在你的,是隻有一個,導出項目的簽署APK。

如果項目包括任何庫(夏洛克動作條,HoloEverywhere等)

  • 分別選擇每個項目,做好項目>構建項目(不建全)。
    • 這將只爲這一個庫建立
    • 對包含的任何庫項目執行此操作。
  • 單擊立即點擊,將您的項目導出爲已簽名的APK。

這通常適用於我,並停止了很多不明原因的出口問題。