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 в 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

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


person Prakash    schedule 26.02.2013    source источник
comment
попробуйте мой ответ ниже и посмотрите, работает ли он для вас   -  person iPhnQ    schedule 18.09.2013
comment
проверьте полное руководство на coders- hub.com/2015/04/   -  person Md Mohsin    schedule 09.04.2015


Ответы (2)


Часть 1

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

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

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

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

После того, как вы скопируете репозиторий в свой каталог, перейдите в каталог, откройте файл 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

Теперь, когда вы попадаете в каталог на терминале, проверьте ПУТЬ SDK и NDK, установленных на вашем Mac.

$ echo $PATH

если вы видите путь с расположением SDK и NDK, тогда можно перейти к шагу 4 и пропустить часть ниже, а если нет, то вам нужно настроить PATH перед выполнением сценария make и make install на шаге 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 

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

Это установит путь и снова подтвердит запуск

$ echo $PATH

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

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

$ make

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

$ make install

$ make generate-sdk (optional)

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

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

Часть 2

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

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

Нажмите «Далее» и перейдите к папке проекта linphone-android. Отметьте только папку linphone-android и снимите флажок «Оставить копировать проект в рабочую область».

Сделайте это, как показано на изображении ниже: введите здесь описание изображения

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

введите здесь описание изображения

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

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

Всего наилучшего !!

person iPhnQ    schedule 18.09.2013
comment
После этого как начать работу над ним? Какой-нибудь учебник или руководство? - person Md Mohsin; 20.02.2015

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

Чтобы исправить это, вам нужно будет собрать неоновую библиотеку («libneon.so»), используя загруженные вами исходники linphone.

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

  1. выполнить: ./prepare_sources.sh
  2. запустить: ndk-сборка

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

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

person Maxim Rahlis    schedule 08.03.2013
comment
попробовал это .. но все еще не смог этого сделать .. см. здесь stackoverflow. ком/вопросы/17761582/ - person Prakash; 20.07.2013