ubuntu上编译vlc-android

  • 编译环境
    操作系统:Ubuntu 18.04.4 LTS
    vlc-android版本:3.3.0 RC1 version(ae229f1ea380cd8ebc74794c9a433dd5bd5a4016)
    android-sdk版本:未知(安装过android-studio)
    android-ndk版本:r21b

  • 配置环境变量
    export ANDROID_SDK=/home/topsluo/Android/Sdk
    export ANDROID_NDK=/home/topsluo/android-ndk-r21b
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=$PATH:${ANDROID_SDK}/platform-tools:${ANDROID_SDK}/tools:${JAVA_HOME}/bin

  • 安装依赖库

sudo apt 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
  • 下载源码
    这里可以根据自己的需求,下载对应的版本
git clone https://github.com/videolan/vlc-android.git
  • 编译打包
cd vlc-android && ./buildsystem/compile.sh

其实,以上步骤在官网上都有介绍,我这里只是照抄了一遍(详情)。
一般来说,按照上面的步骤是不能一次性通过的,中间多少会出现一些问题,所以,接下来我把过程中碰到的一些主要问题列出来,及如何解决,做个记录。

注意:执行./buildsystem/compile.sh -h的时候,说加上-a all 参数时可以编译出全平台的aar包,但我操作的时候虽然出现全了平台的aar(libvlc-all-${VERSION}.aar),但解压发现,里面缺少一些.so库,导致无法正常使用。而仅编译arm或者arm64的时候则不会少.so库。所以我单独把各种ABI版本都打包了一次,然后解压、合并、再打包成全平台的aar包(虽然办法笨了一些,但至少这样可以解决我的问题),或许你知道怎么解决,欢迎留言。

  • TroubleShooting
  1. 问题1
configure.ac:1: error: possibly undefined macro: dnl
If this token and others are legitimate, please use
m4_pattern_allow.
See the Autoconf documentation.
configure.ac:27: error: possibly undefined macro: AS_IF
configure.ac:41: error: possibly undefined macro: AC_DEFINE
configure.ac:78: error: possibly undefined macro: AC_MSG_ERROR
configure.ac:81: error: possibly undefined macro: AC_MSG_WARN
configure.ac:181: error: possibly undefined macro: AC_ARG_ENABLE
configure.ac:379: error: possibly undefined macro: AC_CHECK_LIB
configure.ac:449: error: possibly undefined macro: AC_CHECK_HEADERS
configure.ac:2089: error: possibly undefined macro: AC_PATH_PROG
configure.ac:5094: error: possibly undefined macro: AC_PATH_PROGS 

解决办法,这是sunStd博主的解决办法,感谢!

  1. 问题2
aclocal-1.15: command not found

解决办法:
(或许你真的没有安装它,那就去安装啊),找到是编译哪个源码的时候报的错,进行源码目录,然后执行命令:

autoreconf -ivf 
  1. 问题3
java/lang/NoClassDefFoundError: java/lang/Object 错误:
安装完JDK ,设定环境变量后出现这个错误:
[root@localhost lib]# javac
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
[root@localhost lib]# java
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

解决办法:

#/opt/jdk1.6.0_15/lib/ tools.pack  转为  tools.jar  
unpack200 tools.pack tools.jar

#/opt/jdk1.6.0_15/jre/lib/rt.pack   转为  rt.jar
unpack200 rt.pack rt.jar
  1. 问题4
fix error: syntax error near unexpected token `Z,zlib,`

解决办法:

升级pkg-config
  1. 问题5
  aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
    autoreconf: configure.in: tracing
    autoreconf: configure.in: not using Libtool
    autoreconf: running: /home/heda/adt-bundle/android/vlc/extras/tools/build/bin/autoconf --include=/home/heda/adt-bundle/android/vlc/contrib/arm-linux-androideabi/share/aclocal --force
    configure.in:74: error: possibly undefined macro: AC_DISABLE_SHARED
          If this token and others are legitimate, please use m4_pattern_allow.
          See the Autoconf documentation.
    configure.in:75: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
    configure.in:76: error: possibly undefined macro: AC_PROG_LIBTOOL
    autoreconf: /home/heda/adt-bundle/android/vlc/extras/tools/build/bin/autoconf failed with exit status: 1
    make: *** [.a52] Error 1

解决办法:

升级libtool
  1. 问题6
/usr/bin/install: cannot stat '../../share/vlc.appdata.xml': No such file or directory
Makefile:1354: recipe for target 'install-appdataDATA' failed

解决办法:

cp vlc/share/vlc.appdata.xml.in.in vlc/share/vlc.appdata.xml
  1. 问题7
make[1]: Entering directory '/home/topsluo/workspace/GitHub/vlc-android/vlc/contrib/contrib-android-arm-linux-androideabi/gnutls/gl'
 cd .. && /bin/bash /home/topsluo/workspace/GitHub/vlc-android/vlc/contrib/contrib-android-arm-linux-androideabi/gnutls/build-aux/missing automake-1.16 --gnits gl/Makefile
configure.ac:31: error: version mismatch.  This is Automake 1.16.2,

解决办法:

'/home/topsluo/workspace/GitHub/vlc-android/vlc/contrib/contrib-android-arm-linux-androideabi/gnutls && aclocal -I /usr/share/aclocal

当然,想要编译vlc-android,有些资源在国内是无法正常下载的!

猜你喜欢

转载自blog.csdn.net/TopsLuo/article/details/107782191