我想實現這idea。我花了幾天的時間尋找信息,但找不到任何東西。所有的教程都說如何用JNI編寫我自己的庫,但是如何包裝已經存在的?我需要一步一步的簡單教程(以及爲什麼?如果可能的話)。所以我想開始創建原生的android應用程序。Wrapp現有庫(.so)jni的Android應用程序
我有什麼: 我創建C++庫QTCreator通過教程從youtube:基於C簡單的庫++(的.so)與頭(.h)中其做簡單的cout控制檯: 不編譯代碼MYLIB的.cpp:
#include "mylib.h"
MyLib::MyLib() { }
void MyLib::Test() {
qDebug() << "Hello from our DLL";
// .so
}
部首mylib.h:
#ifndef MYLIB_H
#define MYLIB_H
#include "mylib_global.h"
#include <QDebug>
class MYLIBSHARED_EXPORT MyLib
{
public:
MyLib();
void Test();
};
#endif // MYLIB_H
和mylib_global.h(我認爲這件事簡化版,)
所以經過構建我myLib.so。
現在我需要將它包裝在我的android應用程序中。所以我不明白我需要爲此做些什麼。 我在開發Android Studio。而我所知道的:
與本地方法創建Java包LibWrappClass - 「()simplePrint」 是這樣的:
public native void simplePrint();
我需要創建/ src目錄/主文件夾 「JNI」。創建Android.mk,myLibWrapper.h和myLibWrapper.cpp。但我不明白我需要在Android.mk中編寫什麼來將我的myLib.so連接到「myLibWrapper.h」和,我應該在哪裏將我的庫與標題。誰能幫忙?
您是否閱讀該問題?並且我需要使用我現有的** myLib.so **?你寫了如何創建庫和我質疑如何使用已經存在的。 – facetostool
我讀過你的問題,答案很簡單,如果現有的文件是用上面給出的代碼構建的,那麼你不能從你的java代碼中鏈接它。我想你已經用GCC而不是NDK來構建它。爲了使其在Android設備上工作,您必須使用NDK工具鏈進行構建。 – gnuanu
請查看[gist](https://gist.github.com/gnuanu/252fd406f48f7da2c1c7)瞭解更多詳情和代碼。 – gnuanu