2012-03-27 97 views
2

總之,我想知道,如果「使用庫」標籤是在應用程序的Android清單使用另一個Eclipse項目作爲庫必要的。INSTALL_FAILED_MISSING_SHARED_LIBRARY是使用圖書館必要的庫項目

我的問題類似於發現的here,我正在尋找一些額外的說明。我正嘗試將Android項目用作庫(與Google地圖無關)。該應用程序編譯和安裝,但在運行時無法在其應用程序數據中找到某些文件時崩潰。我想確保我正確添加庫,這樣我就可以專注於爲什麼應用程序數據丟失了。

我在Eclipse的屬性中選擇了「Is Library」複選框,並在我的應用程序的屬性菜單中添加了對它的引用。我是否需要修改我的應用程序的清單才能使用庫項目?我在Android Developers上找到了「uses-library」標籤,但之前提到的帖子似乎表明這隻適用於內置庫。添加標籤會導致「INSTALL_FAILED_MISSING_SHARED_LIBRARY」錯誤。

如果清單是不是我就可以開始對應用程序數據的問題一個單獨的後一個問題,我只是想是否「使用庫」確鑿的答案是相關的非谷歌庫。謝謝!

我的清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="tadams.scTest" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="15" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <!-- <uses-library android:name="net.sf.supercollider.android" />--> 
     <activity 
      android:name=".HelloSuperColliderActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

錯誤(沒有「使用庫」):

03-24 00:20:43.057: D/dalvikvm(539): Not late-enabling CheckJNI 
    (already on) 
    03-24 00:20:43.557: W/dalvikvm(539): Exception Ljava/lang/ 
    UnsatisfiedLinkError; thrown while initializing Lnet/sf/supercollider/ 
    android/SCAudio; 
    03-24 00:20:43.566: D/AndroidRuntime(539): Shutting down VM 
    03-24 00:20:43.566: W/dalvikvm(539): threadid=1: thread exiting with 
    uncaught exception (group=0x409c01f8) 
    03-24 00:20:43.597: E/AndroidRuntime(539): FATAL EXCEPTION: main 
    03-24 00:20:43.597: E/AndroidRuntime(539): 
    java.lang.ExceptionInInitializerError 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    tadams.scTest.HelloSuperColliderActivity.onCreate(HelloSuperColliderActivit y.java: 
    27) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.app.Activity.performCreate(Activity.java:4465) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 
    1049) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 
    1920) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 
    1981) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.app.ActivityThread.access$600(ActivityThread.java:123) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.os.Handler.dispatchMessage(Handler.java:99) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.os.Looper.loop(Looper.java:137) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    android.app.ActivityThread.main(ActivityThread.java:4424) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    java.lang.reflect.Method.invokeNative(Native Method) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    java.lang.reflect.Method.invoke(Method.java:511) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    com.android.internal.os.ZygoteInit 
    $MethodAndArgsCaller.run(ZygoteInit.java:784) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    dalvik.system.NativeStart.main(Native Method) 
    03-24 00:20:43.597: E/AndroidRuntime(539): Caused by: 
    java.lang.UnsatisfiedLinkError: Couldn't load sndfile: findLibrary 
    returned null 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    java.lang.Runtime.loadLibrary(Runtime.java:365) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    java.lang.System.loadLibrary(System.java:535) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  at 
    net.sf.supercollider.android.SCAudio.<clinit>(SCAudio.java:56) 
    03-24 00:20:43.597: E/AndroidRuntime(539):  ... 15 more 

回答

2

我想知道在應用程序的Android清單中是否需要「uses-library」標記來將另一個Eclipse項目用作庫。

絕對不是。 <uses-library>圖書館,可能是固件的一部分,也可能不會,如谷歌地圖插件爲Android。

我是否需要修改我的應用程序的清單才能使用庫項目?

不是。您可能需要修改清單以使用庫中的內容(例如,使活動或服務可用)。但是你不需要修改清單只是爲了添加一個庫項目。

+0

謝謝,這正是我想知道的。現在我只需要弄清楚我的崩潰。 – Tbadams 2012-03-27 22:57:55

1

我沒有添加使用庫時,我加入了庫項目,以我的應用程序。您需要確保在嘗試部署該項目時該庫也在eclipse中打開。該jar也應該出現在Library Projects文件夾中。