1.编译环境搭建
- ubuntu14.04
- jdk1.8.0(JDK)
- android-ndk-r18b(NDK)
- android-sdk-linux(SDK)
1.1 设置环境变量
vim ~/.bashrc
1.2 在打开的.bashrc文件最后添加如下代码
#set jdk
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_201(你自己的jdk路径)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#set ndk
export ANDROID_NDK=/home/adolph/tools/android-ndk-r18b(你自己的ndk路径)
export PATH=${PATH}:$ANDROID_NDK
#set android-sdk
export ANDROID_SDK=/home/adolph/tools/android-sdk-linux(你自己的sdk路径)
export PATH=$PATH:${ANDROID_SDK}/tools
export PATH=$PATH:${ANDROID_SDK}/platform-tools
1.3 在终端中输入如下命令使环境变量生效
source ~/.bashrc
2.安装编译VLC所需的工具包
以下是官方文档提供的安装命令,实际操作中建议一个一个安装
sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \ patch pkg-config protobuf-compiler ragel subversion unzip git \ openjdk-8-jre openjdk-8-jdk flex python wget
因为我们已经安装了jdk,所以openjdk-8-jre openjdk-8-jdk可以不用安装。
如果是64位ubuntu,为了防止后面少走弯路,需要安装32位的库。
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386
3.开始编译VLC
3.1 下载VLC编译代码
git clone https://code.videolan.org/videolan/vlc-android.git
3.2 进入到vlc-android目录,执行编译指令开始编译
cd vlc-android
sh compile.sh -a armeabi-v7a
4.编译中可能出现的问题
4.1 “Unrecognized syntax identifier “proto3””
解决办法:
新版VLC要求使用protobuf3,而ubuntu14.04的版本为2.x,所以我们需要安装新的版本。
1、查看protobuf版本
protoc --version
2、下载:https://github.com/google/protobuf/releases/download/v3.1.0/protobuf-cpp-3.1.0.tar.gz
3.安装
sudo tar zxvf ./protobuf-cpp-3.1.0.tar.gz #解压
cd ./protobuf-3.1.0/ #解压出的文件夹
./configure #运行configure
make
make check
sudo make install
make clean
sudo ldconfig #更新shared library cache
4.2 git下载慢的问题
解决办法:
https://blog.csdn.net/weixin_37910453/article/details/86655613
4.3 python版本低
File "/home/adolph/tools/vlc-android/vlc/extras/tools/meson/mesonbuild/interpreterbase.py", line 577
return {**l, **r}
^
SyntaxError: invalid syntax
解决办法:
安装python3.5以上版本
https://blog.csdn.net/qq_39734379/article/details/84580645
4.4 gettext的版本号不对
androideabi/share/aclocal
autoreconf: Entering directory `.’
autoreconf: running: autopoint --force
autopoint: *** The AM_GNU_GETTEXT_VERSION declaration in your configure.ac
file requires the infrastructure from gettext-0.19.3 but this version
is older. Please upgrade to gettext-0.19.3 or newer.
autopoint: *** Stop.
autoreconf: autopoint failed with exit status: 1
make: *** [.gpg-error] Error 1
contribs: make failed
解决办法:
1 通过gettext --version命令查看当前机器gettext的版本号,显示如下:
gettext (GNU gettext-runtime) 0.18.3
Copyright (C) 1995-1997, 2000-2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Ulrich Drepper.
2 通过grep --include=configure.ac -rn AM_GNU_GETTEXT_VERSION .命令查看哪些文件涉及版本号,显示如下:
./vlc/configure.ac:493:AM_GNU_GETTEXT_VERSION([0.19.8])
./vlc/contrib/contrib-android-arm-linux-androideabi/gnutls/configure.ac:256:AM_GNU_GETTEXT_VERSION([0.19])
./vlc/contrib/contrib-android-arm-linux-androideabi/libgpg-error/configure.ac:154:AM_GNU_GETTEXT_VERSION([0.18.3])
3修改以上文件中AM_GNU_GETTEXT_VERSION为自己的版本号0.18.3
4.5 安装的libtool存在问题
.../configure:line 9171:syntax error near unexpected token 'dlopen'
../configure line 9171:'LT_INIT(dlopen win32-dll shared disable-static)'
解决办法:进入vlc-android/vlc目录下执行autoreconf命令
在运行的过程中可能会出现以下错误:
Makefile.am:10: error: Libtool library used but 'LIBTOOL' is undefined
Makefile.am:10: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
Makefile.am:10: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
Makefile.am:10: If 'LT_INIT' is in 'configure.ac', make sure
Makefile.am:10: its definition is in aclocal's search path.
解决办法:
需要在目录中运行libtoolize,然后重新运行:
> aclocal
> autoheader
> autoreconf
编译完成后在vlc-android/vlc-android/build/outputs/apk/dev目录中会生成APK文件
5.编译aar文件
第四步执行成功后,可以执行下面这个命令来生成aar文件
sh compile.sh -l -a armeabi-v7a -r
编译成功后会在vlc-android/libvlc/build/outputs/aar中生成aar文件
最后提供JDK,NDK,SDK包和我已经编译好的APK文件和AAR文件
链接: https://pan.baidu.com/s/1nbdKXMHnOl743E6FbdVLQw 提取码: fs3c
参考:
https://blog.csdn.net/wkw1125/article/details/56845405
https://blog.csdn.net/zhuyunier/article/details/82843958
https://wiki.videolan.org/AndroidCompile/