我现在已经挣扎了好几天了。目前我只是用一个简单的C ++项目(1 .h& 1 .cpp文件)和一个简约的应用程序来测试它,包括ndk helloJNI示例代码(它很容易完美地工作):
:定位 将现有的C / C ++文件(项目)导入Android Studio
方法 在尝试了一些(几十种)不同的可能性之后,我认为/认为以下步骤对我来说是最好的解决方案:
该库在Android Studio的jniLibs文件夹中列出,就像Android.mk一样。此外,如果我构建apk,库成功打包(通过解压缩验证),我不会得到任何错误。 但是:我怎样才能调用库中的方法?我尝试了其他线程中提供的不同解决方案,但我想我错过了我的.mk或我上面描述的步骤。
试过
#include <myLib>
语句,如s 非常感谢您的帮助!
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)
答案 0 :(得分:0)
你可以在Android NDK中做很多事情。例如,Camera硬件是Android OS中最重的硬件之一。检测面部,物体,效果以及成千上万的特征NDK是最好的。 一些有助于您的步骤:
在静态方法中,在您需要的任何活动中调用您的库。像这样:
static { System.loadLibrary("my_library") }
没有&#34; lib&#34;和&#34; .so&#34;扩展。
如果您想调用本机方法,只需使用&#34; native&#34;关键词。例如:
private native int nGetNumberFromNativeSide();
只需调用此方法,即可获得结果。但是对于在gradle方面的ndk构建,请查看此answer。要在Android.mk中构建库,这些示例行可能会帮助您:
include $(CLEAR_VARS)
ifneq (,$(filter $(TARGET_ARCH_ABI), armeabi-v7a x86 arm64-v8a x86_64))
LOCAL_MODULE := my_library
LOCAL_SRC_FILES := $(LOCAL_SRC_LOCATION)/native1.cpp native2.cpp
include $(BUILD_SHARED_LIBRARY)
我想这个答案会对你有所帮助。如果您有更多问题,请添加评论,我将编辑我的答案并添加答案。