Linphone для android не работает/отсутствует библиотеки

Я пытаюсь запустить linphone-код, который я получаю от git://git.linphone.org/linphone-android.git -recursive. После его успешной загрузки я попытался скомпилировать и запустить ее в соответствии с файлом README. Я использовал Cygwin для Autotools, Autoconfig, Automake, aclocal, libtoolize и pkgconfig и Android ndk r8d.

тогда я выполнил оболочку prepare_sources.sh script в cygwin, которая загрузила некоторые необходимые резурации.

После выполнения всех шагов, когда я пытался запустить код, я получаю исключение 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

Может кто-нибудь помочь мне решить проблему? Решение для этого, очень ценится. Спасибо заранее.

Ответ 1

Часть 1

Следующие шаги помогут вам создать и установить сборку на вашем устройстве или эмуляторе (протестировано на Mac):

Шаг 1: вам нужно настроить Android SDK и NDK и настроить Также установите Autotools Пользователи Mac могут использовать эту ссылку (см. Пункт 2.3 только по ссылке) Убедитесь, что вы загрузили другие платформы.

Шаг 2. Пользователи Mac открывают ваш терминал и клонируют репозиторий git в любом каталоге, который вы хотите  выполнив следующую команду: (Другие пользователи жалеют, что я не знаю, как, но я думаю, вы можете понять, как вы можете получить репозиторий git в своем каталоге с помощью команды promt или того, что вы используете)

$ git clone git://git.linphone.org/linphone-android.git --recursive

После того, как вы скопируете Repo в свой каталог, перейдите в каталог и откройте файл README и зачитайте весь файл.

Шаг 3: теперь мы будем следовать инструкциям, написанным в файле README Сначала перейдите в корневую директорию загруженного проекта, используя следующую команду в терминале:

Mac users on terminal write cd and 
then drag and drop the "linphone-android" folder on terminal 
(when you drag and drop the folder terminal will get the path of the folder and then you can hit enter to get into the directory of that folder) 

$ cd /Users/myname/Desktop/Android/linphone-android

или просто используйте простую команду cd, чтобы попасть в папку

   $ cd Desktop
   $ cd Android
   $ cd linphone-android

Теперь, когда вы попадаете в каталог на терминале, проверьте свой PATH SDK и NDK, установленные на вашем Mac-сервере

$ echo $PATH

если вы видите путь с местоположением SDK и NDK, тогда вы можете продолжить работу с Step4 и пропустить нижнюю часть, а если нет, вам нужно настроить PATH перед выполнением make и make install script на шаге 4: Чтобы настроить путь, используйте:

$ export PATH=/Users/myname/Documents/adt-bundle-mac-x86_64-20130729/sdk/platform-tools:/Users/myname/Documents/adt-bundle-mac-x86_64-20130729/sdk/tools:/Users/myname/Documents/android-ndk-r9:$PATH 

он как экспортирует PATH = (путь к папке инструментов платформы SDK):( Путь к папке инструментов SDK):( Путь к папке NDK): $PATH

Это установит путь и снова подтвердит выполнение

$ echo $PATH

Теперь вы увидите, что есть путь к SDK и NDK.

Шаг 4: теперь, если Path уже настроен, вы можете просто запустить

$ make

Теперь подключите свое устройство к компьютеру Mac/Pc и проверьте, не обнаружено ли его затмение. После подключения устройства выполните:

$ make install

$ make generate-sdk (optional)

Это приложение будет установлено на ваш телефон. (у вас должно быть рабочее имя пользователя и пароль SIP для настройки в приложении)

Эти шаги выполнялись для меня, и я смог запустить приложение на своем устройстве.

Часть 2

Импорт в Eclipse: После того, как вы создали свою сборку, теперь вам нужно импортировать ее в eclipse.

Шаг1. Перейдите в eclipse, нажмите "Меню файлов", затем "Импорт", затем выберите  Существующий код Android в рабочем пространстве

Нажмите Далее и выберите папку linphone-android. И только отметить папку linphone-android и оставить проект Copy в рабочее пространство untick.

Сделайте это Как показано ниже:  enter image description here

И ударьте финиш. Теперь вы нажимаете правой кнопкой мыши на "linphone-android" (название проекта) и переходите в "Свойства" и "Путь сборки Java", а затем "Заказ и экспорт", а затем переупорядочиваете их как мое изображение ниже и отключаете gcm.jar

enter image description here

Нажмите ОК И Boom Нет ошибок Теперь просто запустите его на устройстве или эмуляторе. (Убедитесь, что ваш минимальный целевой SDK соответствует вашему устройству или эмулятору.)

Вышеупомянутые шаги работали отлично для меня, и он будет работать и на вас.

Все лучшее!

Ответ 2

Проблема в том, что вам не хватает встроенной библиотеки neon или, если быть более конкретным, "libneon.so" отсутствует.

Чтобы исправить это, вам нужно будет создать neon lib ( "libneon.so" ) с помощью загруженных вами аудиофайлов.

Предполагая, что у вас есть источники, android sdk, ndk, autotools,... (следуйте README в директории проекта, если у вас его нет), перейдите в проект dir:

  • run:./prepare_sources.sh
  • run: ndk-build

Если все идет гладко, вы должны скомпилировать библиотеку neon ( "libneon.so" ). После этого вы должны устранить проблему (если вы все еще получили ошибку, убедитесь, что у вас есть библиотека в java.library.path).

Для получения дополнительной информации о том, как загрузить основную/общую библиотеку Java (.so), перейдите по ссылке: http://www.chilkatsoft.com/java-loadLibrary-Linux.asp