海王  
http://www.android1.net/Topic.aspx?BoardID=27&TopicID=1847
 

請問一下各位版大~
小弟現在在跟別的公司合作
我這邊負責開發應用程式,而對方公司提供C++的 API
由於對方不提供source code,只會提供 native 端的 header檔(*.h)以及 share library檔(*.so)
我現在是用NDK在開發,我目前的作法是將 *.h 以及 *.so 放在 project_root / jni 底下
跟我自己的native code放在一起,然後再 Android.mk 裡面寫

LOCAL_MODULE := sample
LOCAL_SRC_FILES := my_sample_jnt.c
LOCAL_SHARED_LIBRARIES := libothers
include $(BUILD_SHARED_LIBRARY)

但是在build NDK的時候,
第一個遇到的問題是會出現他在 project_root / bin / ndk / local / armeabi / 中找不到 libothers.so的檔案
我必須手動在將 *.so copy 過去,但是用這樣的方式build過之後,之後安裝到模擬器時,在 Runtime的時候會在 System.loadLibrary 的時候出現
Library sample not found
但是我用 adb shell 到 data / data / [my_project] / lib / 底下去看的時候,libsample.so 確實是存在的...

主要想請問一下,如果對方只有提供 *.h 以及 *.so 的狀況下,Android.mk要怎麼寫嗎?
因為NDK的Sample裡面只有一個是如果對方有提供source code的時候的用法(Twolib)
感謝!

 

 

如何從現有的share library開發!?

解決了!
分享一下~
目前是把
LOCAL_SHARE_LIBRARIES := libother
更改成
LOCAL_LDLIBS := libother.so

然後把要參考的*.so檔案放在project root 就可以了!
LOCAL_SHARE_LIBRARIES 好像是如果你的library是被 build 出來的話才是用這個
所以他會去它 build 的 out(bin) 那邊去找
而 LOCAL_LDLIBS 的話就是請他去參考某個library!

 

 

http://www.android1.net/Topic.aspx?BoardID=27&TopicID=2861
請問各位,我將libusb編譯成share library(.so),然後將b.so加到另外一個ndk的share library,來實現usb的相關功能。不過當我開啟java的app後,app就當掉。必須要將libusb.so copy到Android system/lib下就可以執行無誤。
這是什麼原因造成的???
我的Android.mk
LOCAL_MODULE := sample
LOCAL_SRC_FILES := my_sample_jnt.c
LOCAL_LDLIBS := libusb.so
LOCAL_SHARED_LIBRARIES := libc
include $(BUILD_SHARED_LIBRARY)

我是參考以下文章
 

 

posted on 2011-04-29 15:36  海王  阅读(1006)  评论(0编辑  收藏  举报