編輯:Android開發教程
操作系統:Ubuntu 12.04.4 LTS 32位
linphone-android版本:android:versionCode="2211"
准備工作:
1、首先安裝git用於獲取linphone-android源碼
ykx@ykx:~$ sudo apt-get install git
獲取linphone-android源碼只須使用git的基本功能,所以使用apt-get安裝就可以。
2、獲取linphone-android源碼
ykx@ykx:~/WorkSpace$ git clone git://git.linphone.org/linphone-android.git --recursive | tee git.log
注意需要加上“--recursive”參數,不然下不全,下載成功之後大概是360M不到,如果加上git的文件,大概是638M,各文件夾大小如下:
408K ./tests
1.0M ./sample
5.3M ./res
352K ./libs
248M ./submodules
20K ./patches
383M ./.git
860K ./src
204K ./liblinphone_tester
16K ./jni
638M .
tee git.log表示我把git下載時輸出的信息存在了git.log文件中
3、依賴庫的安裝
linphone-android目錄下的README文件對編譯的環境和步驟有相關敘述,所以最好先閱讀下該文件,對編譯過程有個總體認識。下面是我的環境配置:
a、JDK 1.7.0_51
b、Android SDK r22.6-linux
c、Android NDK r9d-linux
以上三個google一下都有詳細的安裝教程,這裡就不在贅述了。只說一下我的環境變量的配置:
安裝完之後,我更改了/etc/environment和/etc/profile兩個文件,將三者的路徑都寫進去了,注意/etc/environment中最好不要用$JAVA_HOME這樣的引用變量,全部寫詳細的路徑。/etc/profile就無所謂了
還有就是要更改三者安裝路徑的訪問權限,不然編譯過程無訪問導致失敗。
例如更改jdk權限,操作如下:
ykx@ykx:/usr/src/jdk1.7.0_51$ chmod 777 * -R
表示將當前目錄下所有文件及文件夾極其子目錄及子文件的權限改為777(讀/寫/運行)。
更改sdk和ndk的訪問權限操作類似。
d、安裝yasm, nasm, curl, ant和autotools(autoconf, automake, aclocal, libtoolize, pkgconfig)
這寫依賴使用apt-get install自動就可以,注意autotools的安裝:
root@ykx:/home/ykx# apt-get install autoconf
root@ykx:/home/ykx# apt-get install automake
root@ykx:/home/ykx# apt-get install libtool
root@ykx:/home/ykx# apt-get install pkg-config
aclocal會在安裝automake時自動安裝。
README文件中提到的依賴就是這些,可以使用which命令來查看是否安裝成功。
e、做完上面這些之後,按照README的步驟,我就開始make了。和許多事情一樣,life is a bitch,當你以為將要成功的時候,她總會給你開個玩笑。
我失敗了。
查看make的輸出,得到找不到LWP,安上LWP,然後執行make clean命令,再make,又是失敗,這次提示找不到LWP::Protocol::https,在把它安上,重新clean和make,done!
說一下這個錯誤的解決過程,對熟悉linux和perl的人來說,這個問題就不叫問題,但我是小白,所以還是記錄一下。
LWP是perl的一個模塊,具體功能我也不清楚,有興趣的人自行百度。
root@ykx:/home/ykx# perl -MCPAN -eshell
接下來需要配置一些東西,我都是一路回車下來的。之後進入cpan命令行模式
cpan> install Bundle::LWP ;安裝LWP
cpan> install LWP::Protocol::https ;安裝LWP::Protocol::https
完成後exit就可以了。
4、最後make就可以了,生成的.so文件會放在libs目錄下。linphone-android是通過ant來管理和生成apk文件的,如果你需要在eclipse下開發,需要將源碼、庫文件和相應的配置文件取出,另建一個android工程。我就不詳細說了,把我的classpath文件貼上。
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src" /> <classpathentry kind="src" path="submodules/linphone/coreapi/help/java" /> <classpathentry excluding="org/linphone/mediastream/MediastreamerActivity.java" kind="src" path="submodules/linphone/mediastreamer2/java/src" /> <classpathentry kind="src" path="submodules/externals/axmlrpc/src/main/java" /> <classpathentry kind="src" path="submodules/linphone/java/common" /> <classpathentry kind="src" path="submodules/linphone/java/impl" /> <classpathentry kind="src" path="submodules/linphone/java/j2se" /> <classpathentry kind="src" path="gen" /> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK" /> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES" /> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES" /> <classpathentry kind="output" path="bin/classes" /> </classpath>
最後提一點,最初在ubuntu下make時出錯,提示bin/bash^M: 壞的解釋器: 沒有那個文件或目錄
這是因為一開始我是在windows下的linphone源碼,而且查看過一些文件,而windows和linux的換行符不同,相當於隱式地修改了文件,導致運行出錯。
查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/
前言Android Build 系統是 Android 源碼的一部分。關於如何獲取 Android 源碼,請參照 Android Source 官方網站:http://s
年前研究了一下Android如何實現無線互傳的功能,寫了個小demo,最近無事,遂整理一下,與各位共享。前期調研發現,Android想要實現無線互傳有以下幾種技術:1,B
版本: Android Studio 0.5.1因為Android的一些特定功能需要高版本的支持, 當最小SDK版本(minSdkVersion)過低時, 會出現報錯,
一、bindService簡介bindService是綁定Service服務,執行service服務中的邏輯流程。service通過 Context.startServi