我的应用程序中有3个模块名为(例如) "emp-library","face-library". "app"
app -只包含加载屏幕并打开emp库库活动。
face-library是一个库模块,它包含了基本的雇员表单和摄像机模块来获取员工的图像,然后将图像传递给来检测人脸。
face-library -它是库模块,它包含用于检测人脸的人脸检测库(本机库-自己的人脸检测算法)。
该应用程序正在Lollipop设备中工作。但是当我在Marshmallow,中执行这个应用程序时,它会崩溃,只有下面的例外情况。
Fatal signal 11 (SIGSEGV), code 2, fault addr 0xdeadbaad in tid 32696注意:这是我在日志中得到的唯一错误消息。
我是否需要为Marshmallow设备构建特定的本机库?有人能帮我解决这个问题吗?
更新:
->,因为我找不到任何技术错误(据我所知,在本机代码中没有任何异常),所以我遵循了试错方法。
我已经从face-library应用程序模块添加了->本机调用(我不应该在我的例子中使用它)。现在,应用程序没有崩溃。
因此,问题是来自"face-library emp库模块的模块调用。两者都是库模块。
(face-library) Marshmallow中是否有从库(emp-library)模块调用本机库(emp-library)的约束?
发布于 2016-09-27 14:45:52
不,您不需要编译特定版本的棉花糖。因为棉花糖工作在armeabi-v7和armeabi中,另外还有64位编译的armV8。
首先,尝试用armv8版本编译库。
确保您在清单中具有权限,或者如果您在执行时请求权限(例如照相机)。
您的错误是一个泛型错误,因此,您可以尝试本机调试来查找它正在提供错误https://codelabs.developers.google.com/codelabs/android-studio-jni/index.html?index=..%2F..%2Findex#0的库。
或者您可以使用Logger,它的工作方式类似于can。
在这里,伐木人
#ifndef LOGGER_H
#define LOGGER_H
#include <strings.h>
#include <android/log.h>
#define LOG_INFO(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#define LOG_ERROR(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG,__VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , LOG_TAG,__VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO , LOG_TAG,__VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN , LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG,__VA_ARGS__)
#endifcpp文件中的一个示例:
#include "Foo.h"
#include "logger.h" //include your logger.h
#define LOG_TAG "your_Log_tag"
void Foo::myFunction(char * mystring)
{
LOGV("Hello foo %s",mystring)
}我希望,这将有助于您找到错误的位置。如果你能更具体一点,我可以帮你解决这个问题。
我通常在OpenCV c++和Android的图像处理中工作,不幸的是,这些错误非常常见。
https://stackoverflow.com/questions/39726986
复制相似问题