什么意思,sample下面有个例子 two-libs 是这个吗?如果只是想调别人写的so,注意目录和文件名:libs/armeabi/libxxxx.so

解决方案 »

  1.   

    LZ的意思是,jni中调用so里的方法是吧?
      

  2.   


    注意你把别人给你的so放到你的项目的 libs/armeabi 目录下(建一个这样的目录),名称是叫libXXXXX.so,那个XXXXX是你System.loadLibrary("XXXXX")的名称。
      

  3.   

    System.loadLibrary("A"); 可以加载 libA.so
      

  4.   

    请问您那里有在java里面System.loadLibrary("A")
    然后再libA.so里面调用和libA.so同目录的libB.so里面函数的demo吗 谢谢!
      

  5.   


    当初有听说过这个问题。好像是不好用。不过我建议你参考two-lib的例子LOCAL_PATH:= $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE    := libtwolib-first
    LOCAL_SRC_FILES := first.cinclude $(BUILD_STATIC_LIBRARY)# second lib, which will depend on and include the first one
    include $(CLEAR_VARS)
    LOCAL_MODULE    := libtwolib-second
    LOCAL_SRC_FILES := second.c
    LOCAL_STATIC_LIBRARIES := libtwolib-firstinclude $(BUILD_SHARED_LIBRARY)标红处的stattic 改为shared 试试
      

  6.   

    另外,你的so文件要通过NDK交叉编译的。
      

  7.   

    在JNI里调用别人的SO库有两种方法可以实现,
    1) 在JNI文件里通过dlopen函数显示的调用第三方SO库;
    2) 在Android.mk文件里添加 
        LOCAL_STATIC_LIBRARIES := **** 或者: LOCAL_SHARE_LIBRARIES := ****