2015-02-05 35 views
0

我想學習NDK,並且想使用外部庫(libopus)。閱讀一些文章後,我得到了這些步驟:如何在Android中使用外部本機庫

git clone https://android.googlesource.com/platform/external/libopus 
mv libopus jni 
NDK_PROJECT_PATH=. ndk-build 

它裝箱libs/armeabi/libopus.so文件。耶,真棒! ...現在呢?我怎樣才能使用這個庫?我怎樣才能調用它的函數和方法?

此外,我的應用程序是否將在非ARM體系結構(x86,MIPS)上運行,因爲armeabi表明它將僅用於ARM。

+2

https://github.com/tbocek/opus-wrapper libopus是與NDK來啓動非常複雜的地方,因爲在接口級你還必須深入到爲這些流媒體流和線程處理與指針一起/對在媒體流上操作的功能的引用。 – 2015-02-05 15:45:51

回答

1

你不能只使用標準的Linux庫。 Java/Android使用Java Native Interface(JNI),它是構建Java部件和本機部件之間橋樑的特殊C代碼。

看起來您已經安裝了NDK。查看項目樣本,例如「hello-jni」項目。在這個例子中,你可以看到你要編寫的JNI C代碼以及如何從Java代碼中訪問自寫的函數。

關於架構:是的,一個ARM庫僅適用於ARM平臺。如果你想創建一個跨平臺的應用程序,你必須爲每個支持的平臺(通常是ARM,ARMv7,x86和MIPS)編譯所有本地庫。

+0

因此,我將不得不在C語言中編寫一些額外的包裝器,以便爲Java啓用opus函數? – Pitel 2015-02-05 15:36:55

+0

如果還沒有您想要使用的庫的現有包裝器或「Java綁定」子項目,那麼是的。 – Robert 2015-02-05 20:49:43