java.lang.UnsatisfiedLinkError:无法从加载器加载aacdecoder

时间:2014-04-19 18:02:20

标签: android eclipse import

我正在创建一个“Hello World”AAC流播放器。

我的步骤:

  1. 在ADT Eclipse v22.6.2中,我创建了一个新的Android应用程序,默认设置为所有内容。
  2. here
  3. 下载aacdecoder-android-libs-0.8.zip
  4. 将其全部提取到我项目的libs文件夹。
  5. 在活动中添加了以下导入:

    import com.spoledge.aacdecoder.AACPlayer;
    

    onCreate(...)方法的末尾添加了以下内容:

    AACPlayer aacPlayer = new AACPlayer();
    aacPlayer.playAsync( "http://prem4.di.fm:80/trance?gzufXm01F8D2Y6hj2" );        
    

    跑了。我收到了错误:

      

    找不到类com.spoledge.aacdecoder.AACPlayer',从com.example.cardi.MainActivity.onCreate方法引用

    在阅读了一些SO问题之后,唯一突然出现的是“Project”中的“Order and Export”选项卡> “属性”>需要玩“Java Build Path”。之前:

    enter image description here

    我通过改变它取得了一点进展:

    • 检查了aacdecoder条目
    • 将aacdecoder条目移至顶部

    导致此错误:

      

    java.lang.UnsatisfiedLinkError:无法从加载器dalvik.system.PathClassLoader加载aacdecoder [dexPath = / data / app / com.example.cardi-1.apk,libraryPath = / data / app-lib / com。 example.cardi-1]:findLibrary返回null

    每当我回到Android时,我都会感到愚蠢。请帮忙!

3 个答案:

答案 0 :(得分:6)

事实证明,在其他问题和答案中已经指出了非常简单的事情,但并未完全明确。因此,对于任何其他人拔头发,这里是勺子喂:

该库有一个zip文件,aacdecoder-android-libs-0.8.zip

它具有以下目录结构:

aacdecoder-android-libs-0.8.zip
    > aacdecoder-android-libs-0.8
        > aacdecoder-android-0.8.jar
        > armeabi
            > libaacdecoder.so
        > armeabi-v7a
            > libaacdecoder.so
        > mips
            > libaacdecoder.so
        > x86
            > libaacdecoder.so

什么是行不通的是将zip的内容复制到应用程序的libs文件夹中。相反,您必须将zip文件中的文件夹内容复制到libs文件夹。例如,目录结构将是:

c:/users/me/EclipseWorkspace/Myproject/libs/

> aacdecoder-android-0.8.jar
> armeabi
    > libaacdecoder.so
> armeabi-v7a
    > libaacdecoder.so
> mips
    > libaacdecoder.so
> x86
    > libaacdecoder.so

然后转到Project>属性> Java构建路径>图书馆>添加JAR,然后选择JAR包 然后转到Project>属性> Java构建路径>订单和出口。检查JAR,并将其移至顶部。

瞧。头发长了

答案 1 :(得分:1)

检查你的lib文件夹是否包含filename.so文件。我们只有在这个ndk文件错过时才会出现此错误。

或者您的包名称与您的Native C或C ++代码不匹配。

示例:您的包名称为com.example.project,类名为Test

然后你应该从JNI调用的方法如下所示。

com_example_project_Test_sum(......) {

}

此处 sum 是您的原生方法的名称。希望这会对你有所帮助。

答案 2 :(得分:1)

我不确定你是否找到了你的问题的答案但是我的项目中的libs文件夹被错误地命名(是lib而不是libs)。我的问题是由于意外删除我的项目而不得不通过从手机中提取APK来恢复它。一旦我重命名该文件夹,我的问题就解决了。希望有所帮助。