之前在 MAC OS 折騰編譯 iOS 版 linphone-iphone SDK 和 APP 成功,下一步繼續編譯 Android 版的 linphone-android。Android 版的文檔更簡單,一個 README.TXT 就結束,然後各種調查。
簡單說明一下 linphone Linphone is an open source SIP Phone, available on mobile and desktop environments (iOS, Android, Windows Phone 8, Linux, Windows Desktop, MAC OSX) and on web browsers. Linphone has inside a separation between the user interfaces and the core engine, allowing to create various kinds of user interface on top of the same functionalities.
編譯環境 MAC OS 10.10.5 JAVA 1.8 Android SDK 19.0.1 Android NDK 10c
以下是編譯的方法步驟,600M 的源代碼官方只提供一段 README 文件來說明。
1. 安裝最新版本的 Android SDK 和保證 platform-tools and tools 是最新狀態,推薦使用 Android19 作為基準版本,官方支持 Android16。 這裡可能需要用到 VPN。 2. 安裝 android NDK,到官方下載即可,國內可能需要用到 VPN。 3. 安裝一堆編譯用的工具和依賴包,大部分用 brew 即可搞定,libtool,rsync 這兩位在 mac 下叫 glibtool 和 grsync。 yasm, nasm, curl, ant, rsync, autoconf, automake, aclocal, libtool, pkgconfig, bc, perl-LWP-Protocol-https, patch, vim-common 4. 下載 linphone 的源代碼,代碼包比較大,關聯內容較多,建議 VPN 下下載
git clone git://git.linphone.org/linphone-android.git --recursive
5. 配置好環境變量,確認 JAVA ANT SDK 和 NDK 是否配置正確
# JAVA
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home;
ANT#
export ANT_HOME=~/apache-ant-1.9.6;
export PATH=${PATH}:${ANT_HOME}/bin;
Android#
export ANDROID_HOME=~/android-sdk-macosx;
export PATH=${PATH}:${ANDROID_HOME}/platform-tools;
export PATH=${PATH}:${ANDROID_HOME}/tools;
Android#
export ANDROID_NDK_HOME=~/android-ndk-r10c;
export PATH=${PATH}:${ANDROID_NDK_HOME};
#classpath
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar;
6. 確認工具是否安裝完成,使用代碼目錄下的 check_tools 即可
./check_tools.sh
7. 以上確認完成後,即可用 make 命令或 make install 命令進行編譯和安裝測試了。
編譯中出現的問題與解決 1. 提示找不到 libtoolize,要求安裝 libtool, 原因是 MAC OS 上 libtool 和 libtoolize 這兩位改成了 glibtoolize 和 glibtool。連接一下即可。rsync 如果出現問題,同樣處理即可
sudo ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
sudo ln -s /usr/local/bin/grsync /usr/local/bin/rsync
2. /src/org/linphone/compatibility/ApiTwentyOnePlus.java 出現無法找到符號(symbol)錯誤。 原因是 SDK 中的兼容包內容問題,我的處理方法是直接刪除 ApiTwentyOnePlus.java,然後後把 /src/org/linphone/compatibility/Compatibility.java 裡的編譯錯誤修改掉即可,貌似後面編譯沒有出問題。
3.Ant 編譯提示 Class not found javac1.8,網上查詢後說是因為 ant 的版本較低導致在 JDK 1.8 環境下無法找到 javac1.8 我由於開發需要,安裝了多個 ant 版本,處理方法就是單獨安裝一套 ant 並把 ant_home 設置指向即可。
4. 提示 zipalgin not found 問題,把 tools 下的 zipalign 複雜到 build-tools\android-xx 下即可。
最後提供一段編譯用的 SHELL 腳本
# JAVA
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home;
ANT#
export ANT_HOME=~/apache-ant-1.9.6;
export PATH=${PATH}:${ANT_HOME}/bin;
Android#
export ANDROID_HOME=~/android-sdk-macosx;
export PATH=${PATH}:${ANDROID_HOME}/platform-tools;
export PATH=${PATH}:${ANDROID_HOME}/tools;
Android#
export ANDROID_NDK_HOME=~/android-ndk-r10c;
export PATH=${PATH}:${ANDROID_NDK_HOME};
#classpath
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar;
check_tools#
./check_tools.sh
make#
make install
參考 http://blog.csdn.net/zhengxinwcking/article/details/37996593 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=540489&\_dsign=93906cff