之前在 MAC OS 折腾编译 iOS 版 linphone-iphone SDK 和 APP 成功,下一步继续编译 Android 版的 linphone-android。Android 版的文档更简单,一个 README.TXT 就结束,然后各种调查。
简单说明一下 linphone Linphone 是一个开源的 SIP 电话,在移动和桌面环境中可用(iOS,Android,Windows Phone 8,Linux,Windows 桌面,MAC OSX)以及在 Web 浏览器上。Linphone 在用户界面和核心引擎之间有一个分离,允许在相同功能之上创建各种类型的用户界面。
编译环境 MAC OS 10.10.5 JAVA 1.8 Android SDK 19.0.1 Android NDK 10c
以下是编译的方法步骤,600M 的源代码官方只提供一段 README 文件来说明。
1. 安装最新版本的 Android SDK 和保证 platform-tools 和 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