11

git://git.linphone.org/linphone-android.git --recursiveから取得したlinphoneコードを実行しようとしています。正常にダウンロードした後、README ファイルに従ってコンパイルして実行しようとしました。Autotools、Autoconfig、Automake、aclocal、libtoolize、pkgconfig、および Android ndk r8d に Cygwin を使用しました。

次に、必要なリソースをダウンロードする cygwin でprepare_sources.shシェル スクリプトを実行しました。

すべての手順を実行した後、コードを実行しようとすると、実行時にUnsatisfiedLinkError例外が発生し、アプリケーションがクラッシュします。

また、logcat から、上記の例外が発生してアプリがクラッシュしたために一部のライブラリを読み込めないことがわかりました。Logcat の出力は次のとおりです。

02-26 10:03:55.739: W/Unable to load optional library lib(1084): avutil
02-26 10:03:55.749: W/Unable to load optional library lib(1084): swscale
02-26 10:03:55.759: W/Unable to load optional library lib(1084): avcore
02-26 10:03:55.769: W/dalvikvm(1084): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/linphone/core/LinphoneCoreFactoryImpl;
02-26 10:03:55.769: D/AndroidRuntime(1084): Shutting down VM

================================================== ================================

02-26 10:03:55.769: W/dalvikvm(1084): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
02-26 10:03:55.869: E/AndroidRuntime(1084): FATAL EXCEPTION: main
02-26 10:03:55.869: E/AndroidRuntime(1084): java.lang.ExceptionInInitializerError
02-26 10:03:55.869: E/AndroidRuntime(1084):     at java.lang.Class.classForName(Native Method)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at java.lang.Class.forName(Class.java:217)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at java.lang.Class.forName(Class.java:172)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at org.linphone.core.LinphoneCoreFactory.instance(LinphoneCoreFactory.java:43)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at org.linphone.LinphoneManager.startLibLinphone(LinphoneManager.java:417)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at org.linphone.LinphoneManager.createAndStart(LinphoneManager.java:226)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at org.linphone.LinphoneService.onCreate(LinphoneService.java:165)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2529)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at android.app.ActivityThread.access$1600(ActivityThread.java:141)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at android.os.Looper.loop(Looper.java:137)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at java.lang.reflect.Method.invokeNative(Native Method)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at java.lang.reflect.Method.invoke(Method.java:511)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at dalvik.system.NativeStart.main(Native Method)
02-26 10:03:55.869: E/AndroidRuntime(1084): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load neon from loader dalvik.system.PathClassLoader[dexPath=/data/app/org.linphone-1.apk,libraryPath=/data/app-lib/org.linphone-1]: findLibrary returned null
02-26 10:03:55.869: E/AndroidRuntime(1084):     at java.lang.Runtime.loadLibrary(Runtime.java:365)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at java.lang.System.loadLibrary(System.java:535)
02-26 10:03:55.869: E/AndroidRuntime(1084):     at org.linphone.core.LinphoneCoreFactoryImpl.<clinit>(LinphoneCoreFactoryImpl.java:47)
02-26 10:03:55.869: E/AndroidRuntime(1084):     ... 18 more

誰かがそれを解決するのを手伝ってくれますか? これに対する解決策は、大歓迎です..よろしくお願いします。

4

2 に答える 2

2

問題は、ネイティブのネオン ライブラリが見つからないか、より具体的に言えば「libneon.so」が見つからないことです。

これを修正するには、ダウンロードした linphone ソースを使用して、neon lib (「libneon.so」) をビルドする必要があります。

ソース、android sdk、ndk、autotools などがあると仮定して (ない場合は、プロジェクトのディレクトリの README に従ってください)、プロジェクトのディレクトリに移動します。

  1. 実行: ./prepare_sources.sh
  2. 実行: ndk-build

すべてが順調に進んだら、neon ライブラリ ("libneon.so") をコンパイルする必要があります。完了したら、問題を修正する必要があります (それでもエラーが発生する場合は、java.library.path にライブラリがあることを確認してください)。

Java ネイティブ/共有ライブラリ (.so) をロードする方法の詳細については、次のリンクを参照してください: http://www.chilkatsoft.com/java-loadLibrary-Linux.asp

于 2013-03-08T23:14:57.040 に答える