李大仁博客

MAC OS编译Android版Linphone SDK和APP

之前在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

Exit mobile version