2013-02-26 36 views
11

我試圖運行Linphone中的代碼,我從混帳得到://git.linphone.org/linphone-android.git --recursive。 成功下載後,我嘗試按照README文件進行編譯和運行。我使用Cygwin進行Autotools,Autoconfig,Automake,aclocal,libtoolize和pkgconfig的Android ndk r8d。Linphone會爲Android不工作/缺少的庫

然後我執行了prepare_sources.sh shell腳本在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 

任何人都可以幫助我解決它。 這是一個解決方案,非常感謝。在此先感謝。

+0

請在下面試試我的答案,看看它是否適用於您 – iPhnQ 2013-09-18 18:02:50

+0

查看http://www.coders-hub.com/2015/04/start-working-on-linphone-android-part-1上的完整指南。 html – 2015-04-09 11:46:42

回答

2

問題是,你缺少本地霓虹燈庫,或者如果更具體的「libneon.so」丟失。

要解決這個問題,你將不得不使用你已經下載的linphone源代碼來構建neon lib(「libneon.so」)。

假設你有來源,Android SDK中,NDK,自動工具,......(按照項目的目錄中的自述,如果你沒有的話),進入項目的目錄:

  1. 運行。 /prepare_sources.sh
  2. 運行:NDK-建立

如果一切順利,你應該有霓虹燈庫( 「libneon.so」)編制。一旦完成,你應該解決你的問題(如果你仍然有錯誤,確保你在java.library.path中有庫)。

有關如何加載Java本地/共享庫(的.so),按照鏈接的詳細信息: http://www.chilkatsoft.com/java-loadLibrary-Linux.asp

+0

試過這..但仍然無法做到..看到這裏http://stackoverflow.com/questions/17761582/linphone-ndk-compilation-error – Prakash 2013-07-20 11:08:33

15

第1部分

下面的步驟可以幫助您創建和安裝建立你的設備或模擬器上(測試在Mac):

第一步:你需要有Android SDK和NDK配置和istalled 還要安裝自動工具的Mac用戶C1使用this鏈接(僅在鏈接中遵循點2.3) 其他平臺用戶請確保您正確安裝它。

第二步:Mac用戶打開你的終端和克隆你想 在任何目錄下的git回購運行以下命令:(其他用戶對不起,我不知道如何,但我想你自己看着辦吧該如何使用命令PROMT得到你的目錄中的git回購或任何你正在使用)

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

後你得到的回購複製到你的目錄現在進入目錄並打開README文件,閱讀整個文件。

第三步:現在,我們將遵循寫在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路徑Mac上安裝NDK運行

$ echo $PATH 

,如果你看到SDK和NDK位置的路徑,然後它的確定以繼續第四步,然後跳到下面的部分如果沒有的話,你在你面前需要設置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 

它就像出口PATH =(您的SDK平臺工具文件夾的路徑):(你的SDK工具文件夾的路徑): (你的NDK文件夾的路徑):$ PATH

這將設置路徑,並再次確認運行

$ echo $PATH 

現在你會看到,SDK和NDK的路徑是存在的。

步驟4:現在,如果路徑已經建立,你可以簡單地運行

$ make 

現在您的設備連接到您的Mac/PC,檢查Eclipse已經檢測到它。 設備連接運行後:

$ make install 

$ make generate-sdk (optional) 

這將應用程序安裝到手機上。 (您需要有一個工作SIP用戶名和密碼在應用配置)

這上面的步驟爲我工作,我能得到我的設備上運行的應用程序。

第2部分

導入到Eclipse中: 您作出構建之後那麼現在你需要將其導入到日食。

第一步:進入到eclipse點擊文件菜單,然後導入,然後選擇 將現有Android代碼到工作區

點擊下一步,瀏覽到Linphone中,機器人項目文件夾 ,只蜱Linphone中,Android的文件夾並將複製項目保留到工作空間中。

做到像下面的圖片: enter image description here

和命中完成。 現在你右鍵點擊「Linphone中,機器人」(項目名稱)並轉到屬性和Java構建路徑,然後排序和導出,然後重新排序如下我的形象的勾去掉gcm.jar

enter image description here

點擊確定 和繁榮沒有錯誤 現在只需在設備或模擬器上運行它。 (請確保您的最低目標SDK與您的設備或仿真器匹配。)

以上步驟對我來說工作得很好,它也適用於您。

所有最好的!

+1

@bhavana幫助我很多在這....許多thx她也是:) – iPhnQ 2013-09-18 14:20:23

+0

那之後如何開始工作呢?任何教程或指南? – 2015-02-20 09:54:54