解决方案 »

  1.   

    你已经拿到.so的文件了的话,就不需要NDK环境了。
    你文件放的位置是否正确,程序中的写法是否正确,还有,加载失败提示什么
      

  2.   


    //这段代码是反编译出来的,加载动态链接器,其中LIBS[j])保存了动态链接器的名字,我把类的其它所有代码删除了,
    //只留这个加载SO的类,在初始化类时调用下面的函数private static boolean loadLibs()
      {
        if (sLoaded)
          return true;
        int i = 0;
        int j = 0;
        while (true)
        {
          if (j >= LIBS.length)
          {
            if (i == 0)
              sLoaded = true;
            return sLoaded;
          }
          try
          {
            System.loadLibrary(LIBS[j]);
            
          }
          catch (UnsatisfiedLinkError localUnsatisfiedLinkError)
          {
            Log.d("FFMpeg", "不能加载动态链接库: " + LIBS[j] + " - " + localUnsatisfiedLinkError.getMessage());
            i = 1;
            j++;
            return false;
          }
        }
      }这是Log输出的错误信息
    05-13 09:47:36.851: D/FFMpeg(7607): 不能加载动态链接库: libffmpeg_jni.so - Couldn't load libffmpeg_jni.so from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.testmedia-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.testmedia-1, /vendor/lib, /system/lib]]]: findLibrary returned null
      

  3.   

    "/data/app/com.example.testmedia-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.testmedia-1, /vendor/lib, /system/lib]]这个目录应该对应我工程的哪个目录呢?
      

  4.   

    so文件有没有放在/libs/armeabi/下?
      

  5.   

    so要符合jni规则才能加载的。
      

  6.   

    还能这样加载?这又不是你写的SO库、
    你有头文件吗?有的话,用dlopen的方式加载。自己在写一层jni封装
      

  7.   

    so放的路径确认下,install安装就会释放到/data/data/包名子目录下的,如果是预装就要看在/system/lib下还是在哪个目录下
      

  8.   

    解决了,是因为我的工程中目录是lib,实际上要放在libs下面
      

  9.   

    对我最有用的是让我知道不用安装ndk也能调用so