2012-04-17 75 views
4

我跟隨開發指南http://developer.android.com/guide/market/expansion-files.html爲了下載額外的資產到我的apk。包括Google Play下載器庫| APK文件擴展庫

我已經完成了關於輸入庫的所有部分等。 我也在我的主程序中實現了示例代碼(爲了檢測擴展文件是否已經下載,如果我們需要下載他們並啓動下載,等等。)

我在Eclipse中沒有錯誤,但是當我啓動應用程序,並開始打電話從庫中的方法和類,我有不同的崩潰:

1 - 首先,在安裝時,adb說庫找不到..:

[2012-04-17 22:50:13 - MyApp] adb is running normally. 
[2012-04-17 22:50:13 - MyApp] Performing com.gmla.MyApp activity launch 
[2012-04-17 22:50:16 - MyApp] Uploading MyApp.apk onto device 'SH16PV801048' 
[2012-04-17 22:50:16 - MyApp] Installing MyApp.apk... 
[2012-04-17 22:50:22 - MyApp] Success! 
[2012-04-17 22:50:22 - Google Play Downloader Library] Could not find Google Play Downloader Library.apk! 
[2012-04-17 22:50:22 - Google Play License Library] Could not find Google Play License Library.apk! 

下面是我如何試圖導入我的圖書館截圖: http://floy.fr/perso/floy/expfiles/4.PNG

我已經導入與導入項目庫中的Java構建路徑狀部分一),在我的主要項目屬性: (進口許可證庫下載庫太)

我也試着在安裝這一個只導入的罐子像部分b) (沒有錯誤)

並與Android庫導入類似的部分c)(這似乎是在開發指南中推薦的一個,但我有這個編譯錯誤,日食沒有找到一些參考,我可以' t生成該項目):

因此,jar的輸入似乎是最好的,沒有在編譯和安裝錯誤,但我有其他錯誤之後,當我從庫中調用方法和類:

2 - 在該應用:

當我試圖使用助手,以便檢查這種方法的XAPKFiles的存在:

boolean expansionFilesDelivered() { 

     XAPKFile[] xAPKS = {new XAPKFile(true, 3, 687801613L) 
     // main file only 
     }; 

     for (XAPKFile xf : xAPKS) { 
      String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion); 
      if (!Helpers.doesFileExist(this, fileName, xf.mFileSize, false)) 
       return false; 
     } 
     return true; 
    } 

我有這樣的崩潰DDMS:

04-17 23:14:24.614: I/dalvikvm(23201): Could not find method com.google.android.vending.expansion.downloader.Helpers.getExpansionAPKFileName, referenced from method com.gmla.guideaudio.apkexp.GmlaCheckExpFiles.expansionFilesDelivered 
04-17 23:14:24.614: W/dalvikvm(23201): VFY: unable to resolve static method 1295: Lcom/google/android/vending/expansion/downloader/Helpers;.getExpansionAPKFileName (Landroid/content/Context;ZI)Ljava/lang/String; 
04-17 23:14:24.614: D/dalvikvm(23201): VFY: replacing opcode 0x71 at 0x001b 
04-17 23:14:24.614: W/dalvikvm(23201): Unable to resolve superclass of Lcom/gmla/guideaudio/apkexp/GmlaDownloaderService; (250) 
04-17 23:14:24.614: W/dalvikvm(23201): Link of class 'Lcom/gmla/guideaudio/apkexp/GmlaDownloaderService;' failed 
04-17 23:14:24.614: E/dalvikvm(23201): Could not find class 'com.gmla.guideaudio.apkexp.GmlaDownloaderService', referenced from method com.gmla.guideaudio.apkexp.GmlaCheckExpFiles.onCreate 
04-17 23:14:24.614: W/dalvikvm(23201): VFY: unable to resolve const-class 135 (Lcom/gmla/guideaudio/apkexp/GmlaDownloaderService;) in Lcom/gmla/guideaudio/apkexp/GmlaCheckExpFiles; 
04-17 23:14:24.614: D/dalvikvm(23201): VFY: replacing opcode 0x1c at 0x001c 
04-17 23:14:24.624: V/Performance(23201): >>[email protected] onCreate 
04-17 23:14:24.624: D/AndroidRuntime(23201): Shutting down VM 
04-17 23:14:24.624: W/dalvikvm(23201): threadid=1: thread exiting with uncaught exception (group=0x40abf228) 
04-17 23:14:24.624: E/AndroidRuntime(23201): FATAL EXCEPTION: main 
04-17 23:14:24.624: E/AndroidRuntime(23201): java.lang.NoClassDefFoundError: com.google.android.vending.expansion.downloader.Helpers 
04-17 23:14:24.624: E/AndroidRuntime(23201): at com.gmla.guideaudio.apkexp.GmlaCheckExpFiles.expansionFilesDelivered(GmlaCheckExpFiles.java:64) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at com.gmla.guideaudio.apkexp.GmlaCheckExpFiles.onCreate(GmlaCheckExpFiles.java:22) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.app.Activity.performCreate(Activity.java:4524) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2189) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.app.ActivityThread.access$600(ActivityThread.java:139) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.os.Looper.loop(Looper.java:154) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at android.app.ActivityThread.main(ActivityThread.java:4894) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at java.lang.reflect.Method.invokeNative(Native Method) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at java.lang.reflect.Method.invoke(Method.java:511) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
04-17 23:14:24.624: E/AndroidRuntime(23201): at dalvik.system.NativeStart.main(Native Method) 

這個崩潰的時候我」發生當我導入庫時,使用方法1或2。

我試圖更新螞蟻到最新的1.8.3,因爲我讀到1.7.1可能有一些庫導入問題..沒有成功解決我的問題。

我的主要應用是在谷歌API 8(Android 2.2的)

我尋覓了很多事情,以使這個工作,但..現在我完全出出主意!

如果有人知道如何得到這個工作,那將是非常親切:對

對不起,這個長的帖子和我的英語很抱歉,如果我做了錯誤拼寫錯誤,那是因爲我是法國人:對

編輯:我曾嘗試下載示例代碼,與庫導入方法C),我沒有編譯錯誤這段時間,但在安裝過程中:

[2012-04-18 01:56:16 - GuideAudio] Android Launch! 
[2012-04-18 01:56:16 - GuideAudio] adb is running normally. 
[2012-04-18 01:56:16 - GuideAudio] Performing com.gmla.guideaudio.GuideAudio activity launch 
[2012-04-18 01:56:19 - GuideAudio] Uploading GuideAudio.apk onto device 'SH16PV801048' 
[2012-04-18 01:56:19 - GuideAudio] Installing GuideAudio.apk... 
[2012-04-18 01:56:21 - GuideAudio] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY 
[2012-04-18 01:56:21 - GuideAudio] Please check logcat output for more details. 
[2012-04-18 01:56:21 - GuideAudio] Launch canceled! 

我不明白,因爲該庫似乎很好導入... 我可以在Eclipse的「引用庫」下看到它們。

我也寫在清單:

<uses-library android:name="com.google.android.vending.expansion.downloader" /> 
     <uses-library android:name="com.google.android.vending.licensing" /> 

回答

3

答案可能是這個回答類似的問題: https://stackoverflow.com/a/10109546/180538

我前兩天有這個問題,也和答案解決了它。特別閱讀最後一段。

<uses-library>標籤並不意味着用於第三方的東西,只適用於已經安裝在設備上的庫。就像安裝在每個官方安卓設備上的地圖一樣(例如亞馬遜Kindle不是官方的Android設備)。

我也不確定您是否已將圖書館項目添加到您的項目,同時將這些罐子連接起來。這可能也會造成麻煩。

0

對於正在閱讀此內容的用戶,使用導入擴展庫的正確方法是我在第一篇文章中提到的c)

當您在主項目中導入項目庫時,請注意您的路徑長度。 由於我的Android SDK安裝文件夾與我的工作區不在同一個驅動器,因此我的路徑太長。 庫導入可能因此而失敗。 (我花了一天的時間實現。 - _ - )

0

我覺得這裏真正的問題是在this answer所描述的:Eclipse是不能夠解決的路徑名,如果包含庫項目和引用項目是在不同的驅動器。例如。 C中的庫和D中的參考項目: