一部のデバイスでjava.lang.UnsatisfiedLinkError
クラッシュが報告されている公開アプリケーションがあります。具体的には、次のログメッセージを表示して起動時にアプリがクラッシュ:いくつかのデバイスでjava.lang.UnsatisfiedLinkErrorクラッシュが発生する
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load qcc: findLibrary returned null
は、実際のクラッシュはSystem.loadLibrary("qcc");
命令であるので、アプリは確かにライブラリを見つけていません。
問題は自分で問題を再現できなかったことです。実際、同じapkは多くの異なるデバイスやバージョンで完璧に動作します。
このアプリは、第三者が作成してコンパイルした2つのCライブラリを使用しています。彼らはarm-linux-androideabi-4.6
ツールチェーンを使用してコンパイルされている、と私は、次のAndroid.mk
ファイルでnkd-build
を実行している私のプロジェクトでそれらを統合しています:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libqcc
LOCAL_SRC_FILES := qcc/libqcc.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libqpe
LOCAL_SRC_FILES := qpe/libqpe.so
include $(PREBUILT_SHARED_LIBRARY)
エラーが異なるデバイス上で報告されているが、現時点ではそれらのすべてが一つであります2.2、2.2.1または2.2.2のAndroidバージョンのうちの1つです。
インストール時にアーキテクチャ上の問題または奇妙な問題が発生する可能性があります。
誰でも問題の原因を知ることができますか?
UPDATE:
私はアンドロイド2.2エミュレータで問題を再現できたことに気づきました。これは私がlogcatから集めることができる余分な情報です。
11:14:59.962 I/dalvikvm( 287): Unable to dlopen(/data/data/.../lib/libqcc.so): Cannot load library: link_image[1995]: failed to link libqcc.so
11:14:59.962 W/dalvikvm( 287): Exception Ljava/lang/UnsatisfiedLinkError;
armeabiとarmeabi-v7aの問題があります。ちょうどの場合に、両方のためにビルドします。 –
Seva Alekseyevはそうです、もしあなたがまだこの行でApplication.mkファイルを作成しようとすることができます: APP_ABI:= armeabi armeabi-v7a – Esparver