为了播放AAC文件,我已经设置了NDK并下载了http://code.google.com/p/aacplayer-android/代码

我从中下载的那个来源

 svn checkout http://aacplayer-android.googlecode.com/svn/trunk/ aacplayer-android-read-only


之后,我从以下代码下载了播放器

http://aacplayer-android.googlecode.com/files/aacplayer-android-r25.zip

现在我必须在我的项目中使用该代码,所以我创建了一个新的JNI文件夹并复制了所有代码.c和.h文件...下面是一个图像



然后我已经运行ndk-build命令并生成了.so文件,如下所示



现在您可以看到在libs文件夹中并带有.so文件的这两个文件夹已创建,如下所示



现在,当我使用下面的代码构建和运行应用程序时,一切正常,库正在加载,没有任何java.lang.UnsatisfiedLinkError:nativeStart错误

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list);

    System.loadLibrary("aacarray");
    System.loadLibrary("mms");


但是当我开始播放以下流式AAC文件时,将生成错误

      02-19 23:13:47.090: W/dalvikvm(847): No implementation found for native Lcom/example/xmlparsingex/ArrayDecoder;.nativeStart (ILcom/example/xmlparsingex/ArrayBufferReader;Lcom/example/xmlparsingex/Decoder$Info;)I
      02-19 23:13:47.100: W/dalvikvm(847): threadid=11: thread exiting with uncaught exception (group=0x40015560)
      02-19 23:13:47.100: E/AndroidRuntime(847): FATAL EXCEPTION: Thread-12
      02-19 23:13:47.100: E/AndroidRuntime(847): java.lang.UnsatisfiedLinkError: nativeStart
      02-19 23:13:47.100: E/AndroidRuntime(847):    at com.example.xmlparsingex.ArrayDecoder.nativeStart(Native Method)
      02-19 23:13:47.100: E/AndroidRuntime(847):    at com.example.xmlparsingex.ArrayDecoder.start(ArrayDecoder.java:100)
     02-19 23:13:47.100: E/AndroidRuntime(847):     at com.example.xmlparsingex.ArrayAACPlayer.playImpl(ArrayAACPlayer.java:114)
     02-19 23:13:47.100: E/AndroidRuntime(847):     at com.example.xmlparsingex.AACPlayer.play(AACPlayer.java:273)
     02-19 23:13:47.100: E/AndroidRuntime(847):     at com.example.xmlparsingex.AACPlayer.play(AACPlayer.java:242)
     02-19 23:13:47.100: E/AndroidRuntime(847):     at com.example.xmlparsingex.AACPlayer$1.run(AACPlayer.java:202)
     02-19 23:13:47.100: E/AndroidRuntime(847):     at java.lang.Thread.run(Thread.java:1019)


请注意,我已经发布了具有相同错误java.lang.UnsatisfiedLinkError: nativeStart android NDK的问题,但是此问题与此不同,所以请不要投票:(

我已经竭尽全力解决了这个问题,但未能成功,请任何人都可以帮助我...

最佳答案

您从原始包com.spoledge.aacplayer中获取了aacplayer类,并将它们放入了自己的包com.example.xmlparsingex中(可能起源于某些Android示例)。你不能那样做。纯Java类将幸免于此(Eclipse重构支持),但是具有本机方法的类则不能。本机方法绑定到本机库中的特定函数名称。如果本机库libaacarray.so导出函数Java_com_spoledge_aacplayer_ArrayDecoder_nativeStart,则对应的java类必须为com.spoledge.aacplayer.ArrayDecoder,并且无法解决。除非您也想调整和重新编译本机库。

08-28 02:11