Android ndk Android NDK dlopen失败:找不到符号;A传感器“获取报告模式”;引用为;lib*.so";

Android ndk Android NDK dlopen失败:找不到符号;A传感器“获取报告模式”;引用为;lib*.so";,android-ndk,Android Ndk,我有一个项目,使用Android NDK访问我设备的加速度传感器。除非我尝试使用ASensor\u getReportingMode()或ASensor\u isWakeUpSensor(),因为它找不到符号,否则应用程序可以工作。其他函数也可能发生这种情况。奇怪的是,同样的头文件中也有一些函数,例如ASensor\u getName()或ASensor\u getVendor(),它们可以正常工作。有人知道这里可能缺少什么吗 build.gradle(模块) apply插件:“com.andr

我有一个项目,使用Android NDK访问我设备的加速度传感器。除非我尝试使用
ASensor\u getReportingMode()
ASensor\u isWakeUpSensor()
,因为它找不到符号,否则应用程序可以工作。其他函数也可能发生这种情况。奇怪的是,同样的头文件中也有一些函数,例如
ASensor\u getName()
ASensor\u getVendor()
,它们可以正常工作。有人知道这里可能缺少什么吗

build.gradle(模块)

apply插件:“com.android.model.application”
模型{
安卓{
编译DK24版
buildToolsVersion“24.0.0”
默认配置{
applicationId“com.apidae.sensorndk”
minSdkVersion.apiLevel 19
targetSdkVersion.apiLevel 24
版本代码1
版本名称“1.0”
}
建筑类型{
释放{
minifyEnabled false
添加(文件('proguard-rules.pro'))
}
}
ndk{
moduleName“ndkfeatures”
ldLibs.addAll(['android','log']))
}
}
}
依赖关系{
编译文件树(目录:“libs”,包括:['*.jar'])
testCompile'junit:junit:4.12'
编译'com.android.support:appcompat-v7:24.0.0'
}
Java类

package com.apidae.sensorndk;
公共类NdkFeatures{
静止的{
系统加载库(“ndkfeatures”);
}
公共本机布尔init();
} 
C++源代码段

#包括
...
日志::信息(“传感器信息:\n名称:\t%s\n供应商:\t%s\n模式:\t%d”,
传感器名称(mAccelerometer),
传感器供应商(mAccelerometer),

A传感器_getReportingMode(mAccelerometer));// 我终于明白了。这是因为我用来编译的目标SDK与我设备上的android-19不匹配。通过使用正确的目标SDK,我可以在编译时看到我尝试使用的函数不受支持

资料来源:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.apidae.sensorndk, PID: 6855
        java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "ASensor_getReportingMode" referenced by "libndkfeatures.so"...
            at java.lang.Runtime.loadLibrary(Runtime.java:371)
            at java.lang.System.loadLibrary(System.java:553)
            at com.apidae.sensorndk.NdkFeatures.<clinit>(NdkFeatures.java:6)
            at com.apidae.sensorndk.MainActivity.onCreate(MainActivity.java:13)
            at android.app.Activity.performCreate(Activity.java:5264)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
            at android.os.Handler.dispatchMessage(Handler.java:110)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:5299)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
            at dalvik.system.NativeStart.main(Native Method)