4

私は "(例えば)「アプリ」「EMP-ライブラリー」という名前の私のアプリケーションでは3つのモジュールを持っていますface-library "です。Androidのマシュマロ - 墜落したばかり別のライブラリモジュールからのライブラリモジュール(ネイティブライブラリ)の呼び出し

アプリは - のみロード画面が含まれており、EMP-ライブラリ図書館活動を開きます。

EMP-ライブラリ - それは、ライブラリモジュールであり、それは従業員の画像を取得するための基本的な従業員のフォームとカメラモジュールが含まれており、画像が顔を検出するために、顔ライブラリに渡されます。

顔ライブラリ - それは、ライブラリモジュールであり、それは顔を検出する顔検出ライブラリが含まれています(ネイティブライブラリ - 独自の顔検出アルゴリズムを)

アプリケーションがロリポップデバイスに取り組んでいます。しかし、私がマシュマロでアプリを実行すると、以下の例外を除いてクラッシュしてしまいます。

Fatal signal 11 (SIGSEGV), code 2, fault addr 0xdeadbaad in tid 32696 

注:これはログに記録された唯一のエラーメッセージです。

マシュマロデバイス用の特定のネイティブライブラリビルドが必要ですか?誰でも私にこの問題を解決するのを手伝ってください。更新

- >私は技術的な誤りを見つけることができませんよと(私の知識まで、私はネイティブコードのいずれかの例外を取得していない)私は試行錯誤の方法に従いました。

- >私はアプリモジュールから顔ライブラリネイティブコールを(私は私の場合にはこれを使うべきではない)を追加しました。今すぐアプリは、がクラッシュしていません。

- >だから、問題は "EMP-ライブラリモジュールから顔ライブラリモジュールコール" です。どちらもライブラリモジュールです。

ライブラリ(EMP-ライブラリ)モジュールからネイティブライブラリ(顔ライブラリ)をコールすることをマシュマロのいずれかの制約はありますか?

答えて

6

いいえ、特定のバージョンをmarshmallowにコンパイルする必要はありません。 marshmallowはarmeabi-v7とarmeabiで動作するので、64ビットコンパイルのarmV8に加えて。

まず、armv8でライブラリをコンパイルしてみてください。

マニフェストで許可を得ているか、実行時に許可(カメラなど)を求めているかどうかを確認してください。

あなたのエラーは、それはC言語のprintfのように動作し、あなたはそれがエラーにhttps://codelabs.developers.google.com/codelabs/android-studio-jni/index.html?index=..%2F..%2Findex#0

を提供しているライブラリである見つけるために、ネイティブデバッグを試すことができたり、ロガーを使用することができ、一般的なエラーですので。

ここでのcppファイル内logger.h

#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__) 

#endif 

例:私は願っています

#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による画像処理で動作しますが、残念ながらこれらのエラーは非常に一般的です。

+1

お返事ありがとうございます。しかし、 "app"モジュールからネイティブライブラリから呼び出すと、アプリケーションはクラッシュしません。私は既にログを追加しました。私はそれが墜落したログを取得しました。しかし何も価値がありません(停止した場所は終了方法です)。 :( – SKK

関連する問題