【问题标题】:Linphone for android is not working/missing librariesLinphone for android 不工作/缺少库
【发布时间】:2013-02-26 10:09:15
【问题描述】:

我正在尝试运行从 git://git.linphone.org/linphone-android.git --recursive 获得的 linphone 代码。 下载成功后,我尝试按照README文件编译运行。我将 Cygwin 用于 Autotools、Autoconfig、Automake、aclocal、libtoolize 和 pkgconfig & Android ndk r8d。

然后我在 cygwin 中执行了 prepare_sources.sh shell 脚本,该脚本下载了一些所需的资源。

按照所有步骤操作后,当我尝试运行代码时,我在运行时和应用程序崩溃时收到 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

谁能帮我解决这个问题。? 对此的解决方案,非常感谢..提前致谢。

【问题讨论】:

标签: android sip linphone


【解决方案1】:

第 1 部分

以下步骤可以帮助您在设备或模拟器上创建和安装构建(在 Mac 上测试):

Step1:您需要配置并安装 Android SDK 和 NDK 也安装 Autotools Mac 用户可以使用this 链接(仅在链接中关注点 2.3) 其他平台用户请务必正确安装。

第 2 步:Mac 用户打开您的终端并将 git 存储库克隆到您想要的任何目录 通过运行以下命令:(其他用户对不起,我不知道如何,但我认为您可以弄清楚如何使用命令提示符或您正在使用的任何东西在您的目录中获取 git repo)

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

将 Repo 复制到您的目录后,现在转到该目录并打开 README 文件并读出整个文件。

Step3:现在我们将按照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

现在,当您进入终端目录时,检查您的 Mac 上安装的 SDK 和 NDK 的 PATH 运行

$ echo $PATH

如果您看到带有 SDK 和 NDK 位置的路径,则可以继续执行 Step4 并跳过以下部分,如果没有,则需要在执行 make 和 make install 之前设置 PATH第 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/PC 并查看 eclipse 是否检测到它。 设备连接后运行:

$ make install

$ make generate-sdk (optional)

这会将应用程序安装到您的手机中。 (您需要有一个有效的 SIP 用户名和密码才能在应用程序中配置)

上述步骤对我有用,我可以让应用在我的设备上运行。

第 2 部分

导入 Eclipse : 构建完成后,现在需要将其导入 eclipse。

步骤 1:转到 eclipse 点击 File Menu 然后 Import 然后选择 将现有 Android 代码放入 Workspace

点击下一步并浏览到 linphone-android 项目文件夹 并且只勾选 linphone-android 文件夹并将 Copy project into workspace 取消勾选。

如下图所示:

然后完成。 现在您右键单击“linphone-android”(项目名称)并转到属性和 Java 构建路径然后排序和导出,然后将它们重新排序为我下面的图像并取消勾选 gcm.jar

点击确定 和繁荣没有错误 现在只需在设备或模拟器上运行它。 (确保您的最低目标 SDK 与您的设备或模拟器匹配。)

上述步骤对我来说很好,它也对你有用。

万事如意!!

【讨论】:

  • 那之后如何开始工作呢?有什么教程或指南吗?
【解决方案2】:

问题是您缺少本机 neon 库,或者更具体地说,缺少“libneon.so”。

要解决此问题,您必须使用已下载的 linphone 源构建 neon 库(“libneon.so”)。

假设你有源码,android sdk,ndk,autotools,...(如果你没有的话,按照项目目录中的自述文件),转到项目目录:

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

如果一切顺利,您应该编译 neon 库(“libneon.so”)。完成后,您应该解决问题(如果仍然出现错误,请确保您在 java.library.path 中有库)。

有关如何加载 Java 本机/共享库 (.so) 的更多信息,请点击以下链接: http://www.chilkatsoft.com/java-loadLibrary-Linux.asp

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 2017-06-07
  • 2015-03-25
  • 2012-08-18
  • 2013-04-03
  • 2022-12-09
  • 1970-01-01
相关资源
最近更新 更多