INSTALL_FAILED_MISSING_SHARED_LIBRARY,是图书馆项目所必需的Use-Library

时间:2012-03-27 21:57:10

标签: java android supercollider

简而言之,我想知道应用程序的android清单中是否需要“uses-library”标记才能将另一个Eclipse项目用作库。

我的问题类似于here发现的问题,我正在寻找一些额外的澄清。我正在尝试将Android项目用作库(与Google地图无关)。该应用程序编译并安装,但在运行时无法在其应用程序数据中找到某些文件时崩溃。我想确保我正确地添加库,以便我可以专注于缺少应用程序数据的原因。

我在Eclipse的属性中选中了“Is Library”复选框,并在我的应用程序的属性菜单中添加了对它的引用。我是否需要修改应用程序的清单才能使用库项目?我在Android Developers上找到了“uses-library”标签,但前面提到的帖子似乎表明这只适用于内置库。添加标记会导致“INSTALL_FAILED_MISSING_SHARED_LIBRARY”错误。

如果清单不是问题,我可以针对应用数据问题开设一个单独的帖子,我只想找到关于“使用库”是否与非Google库相关的确定答案。谢谢!

我的宣言:

    <?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>

错误(没有“uses-library”):

  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 个答案:

答案 0 :(得分:2)

  

我想知道应用程序的android清单中是否需要“uses-library”标记才能将另一个Eclipse项目用作库。

绝对不是。对于可能属于固件但可能不属于固件的库,<uses-library>

  

我是否需要修改应用程序的清单才能使用库项目?

不是真的。您可能需要修改清单以使用库中的内容(例如,使活动或服务可用)。但是,您通常不需要修改清单以添加库项目。

答案 1 :(得分:1)

当我向我的应用程序添加库项目时,我没有必要添加使用库。在尝试部署项目时,您需要确保库在eclipse中也是打开的。 jar也应该出现在Library Projects文件夹中。