我这次在一个全新的系统上编译Linphone Android最新版本,在Virtual Box虚拟机上安装Ubuntu17.04 64位系统。
1.在Ubuntu系统下创建目录
sudo mkdir /data
cd /data
sudo mkdir tools
sudo mkdir projects;
使用sudo chown将目录的所有者修改为你使用的用户。
2.安装JDK,下载jdk-8u144-linux-x64.tar.gz到/data/tools
tar -xvf jdk-8u144-linux-x64.tar.gz 解压文件
sudo vi /etc/profile 编辑配置文件,在文件后面加上
export JAVA_HOME=/data/tools/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
保存后退出,使用source /etc/profile使配置生效,使用java -version检查java是否安装正确。
$ java -version
java version"1.8.0_144"
Java(TM) SE Runtime Environment (build1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build25.144-b01, mixed mode)
3.安装Android SDK和Android NDK
现在Google不提供独立的SDK的界面安装工具,独立包SDK只能使用命令行工具来更新,下载sdk-tools-linux-*******.zip解压放到/data/tools/android-sdk下
进入../android-sdk目录运行
./tools/bin/sdkmanager"build-tools;26.0.2"
./tools/bin/sdkmanager"platforms;android-26"
./tools/bin/sdkmanager"platform-tools"
./tools/bin/sdkmanager"extras;android;m2repository"
./tools/bin/sdkmanager"ndk-bundle"
这种方式下载后的可能在实际运行中可能会导致提示License没有确认无法进行编译,建议使用AndroId-Studio来下载Android SDK,
并且在/etc/profile文件设置路径
export ANDROID_HOME=/data/tools/android-sdk
export ANDROID_NDK=/data/tools/android-sdk/ndk-bundle
export PATH= $PATH:$ ANDROID_HOME /tools:ANDROID_HOME /platform-tools:$ ANDROID_NDK
apt install git 安装git,安装完成后开始clone代码
cd /data/projects
git clone https://github.com/BelledonneCommunications/linphone-android.git--recursive
也可以直接使用Linphone的官方git库,但是国内访问Linphone的官方git库非常慢,因此我这里使用了github上面的镜像。上面的命令只是主模块从github上获取,实际上子模块也需要去linphone.org获取,可以先使用
git clone https://github.com/BelledonneCommunications/linphone-android.git
来获取主模块的代码,然后运行
git submodule init
再打开项目的.git目录的config文件修改相关配置文件,指向github的仓库目录,然后运行
git submodule update
这样会快很多,但是不是所有的子模块在github上面都有镜像,有些还必须要从linphong.org获取。
然后还需要进入submodules/mswebrtc目录,再次执行
git submodule init
git submodule update
请确保所有子模块都正确下载。
阅读linphone-android下的readme文件,上面说要安装几个组件yasm,nasm,ant,python,intltoolize,cmake,vim-common.
64位系统还需要安装ia32-libs
可以使用sudo apt install 命令来安装,intltoolize 会提示没有这个包,改为安装intltool,安装ia32-libs会提示已经被lib32ncurses5 lib32z1取代了,我们将这两个也装上,同时将lib32stdc++6也装上。
3.编译
进入linphone-android目录,运行./prepair.py,这里可以加一些参数来打开或者关闭一些功能,如:
./prepair.py -DENABLE_X264=YES 来打开X264的支持
具体可以使用命令./prepare.py --list-features 来检查
然后再直接运行make,成功后即可生成apk文件。
我用Android Studio重新整理了一份代码,so文件已经生成好,直接编译运行即可。
https://github.com/zhanggx/linphone-android.git