2013-03-04 9 views
5

一部のデバイスで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; 
+0

armeabiとarmeabi-v7aの問題があります。ちょうどの場合に、両方のためにビルドします。 –

+0

Seva Alekseyevはそうです、もしあなたがまだこの行でApplication.mkファイルを作成しようとすることができます: APP_ABI:= armeabi armeabi-v7a – Esparver

答えて

5

この場合の問題は、ライブラリは、Android 2.2

にこのlinkサポートされていないいくつかのCメソッドを使用していたということでしたが、問題を発見する方法でした。

pthread_rwlock_initなどのメソッドは、Android 2.3(source)までシステムのCライブラリに実装されていません。

関連する問題