我正在爲此奮鬥了好幾天。在Android Studios C文件中調用共享庫(.so)方法
目標 進口:目前我只是一個簡單的C++項目(1個.H & 1 .cpp文件)和簡約的應用程序包括NDK helloJNI示例代碼(這完美的工作容易)測試它現有的C/C++文件(項目)到Android工作室
方法 嘗試一些的(幾十個)的不同的可能性之後,我覺得/想下面的步驟將是我的目的,最好的解決辦法:
- 從Visual Studios 2015創建共享庫(或創建共享庫)[成功]
- 在src/main /及其子文件夾中創建jniLibs文件夾(x86中與我相關的文件夾case)
- 在src/main/jniLibs中添加必須放在那裏的Android.mk文件(?)
- 包含聲明:沒有「lib」和「.so」的System.loadLibrary(「Calculator」) MainActivity
該庫在Android Studio中的文件夾jniLibs中與Android.mk類似。此外,如果我構建apk,庫成功打包(通過解壓縮驗證),我沒有得到任何錯誤。 但是:我該如何調用庫中的方法?我嘗試了其他線程提供的不同解決方案,但我想我錯過了我的.mk或我上面描述的步驟。
試圖在本機lib.cpp
- 不同
#include <myLib>
報表,比如s - 不同Android.mk設置(但我新,使文件,所以甚至沒有教程,幫我多用我的具體問題:對於libCalculator.so喜歡在子文件夾中的x86
- 和其他許多人:))
- 其它地點 - 根本就不是ATM提醒(wasntme)
非常感謝您的幫助!
Android.mk
LOCAL_PATH := $(call my-dir)
APP_ABI := x86
# library info
include $(CLEAR_VARS)
LOCAL_MODULE := Calculator
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/Calculator.so
LOCAL_EXPORT_C_INCLUDES := ..../Visual Studio 2015/Projects/SO_Library/SO_Library
include $(BUILD_SHARED_LIBRARY)
我得到了從Android Studio編譯的庫。非常感謝你對.mk文件的大力幫助 - 我從我的搜索中誤解了很多。現在我還有一個問題:因爲我無法實現,我怎麼能運行.so方法(不包裹在.jni語法中)讓我們說示例native-lib.cpp? –
不客氣!)。 .SO不是方法,它們是共享庫。哪些是從C++源和一些靜態庫構建而成的。要使用.SO庫中存在的方法,可以使用「native」關鍵字進行調用。我已經解釋過了。 – JavadKhan