Vlc 3.5.x 编译 - Android 平台

145 阅读2分钟

官方的参考路径 AndroidCompile - VideoLAN Wiki

  1. 编译环境 ubuntu 20.04
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

2. 先下载sdk 以及 ndk linux版本的

sdkmanager  |  Android Studio  |  Android Developersy 命令行可以安装下 sdkManager,用命令行下载 或者 也可以安装 Android studio 进行下载 developer.android.com/studio/intr…

然后配置环境变量,可以配置到bash source文件里面去 ANDROID_SDK 和 ANDROID_NDK

export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools

3. 下载源码编译

git clone https://code.videolan.org/videolan/vlc-android.git

结构如图

image.png 可以编译以后gradle build后 生成apk ,或者 只编译libvlc aar 也可以

5.问题处理

fseterr 报错

lib/fseterr.c: In function 'fseterr':
lib/fseterr.c:77:3: error: #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib."
   77 |  #error "Please port gnulib fseterr.c to your platform! Look at the definitions of ferror and clearerr on your system, then report this to bug-gnulib."
      |   ^~~~~
make[3]: *** [Makefile:3461: lib/fseterr.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/guangsen/ffmpeng/vlc-compile/vlc-android/libvlcjni/vlc/extras/tools/bison'
make[2]: *** [Makefile:4522: all-recursive] Error 1
make[2]: Leaving directory '/home/guangsen/ffmpeng/vlc-compile/vlc-android/libvlcjni/vlc/extras/tools/bison'
make[1]: *** [Makefile:2625:all] 错误 2
make[1]: 离开目录“/home/guangsen/ffmpeng/vlc-compile/vlc-android/libvlcjni/vlc/extras/tools/bison”
make: *** [/home/guangsen/ffmpeng/vlc-compile/vlc-android/libvlcjni/vlc/extras/tools/tools.mak:358:.buildbison] 错误 2
make: 离开目录“/home/guangsen/ffmpeng/vlc-compile/vlc-android/libvlcjni/vlc/extras/tools”
* Where:
Build file '/home/guangsen/ffmpeng/vlc-compile/vlc-android/medialibrary/build.gradle' line: 10

手动安装一次 bison   : sudo apt-get install bison
meson报错: meson.build:1:0: ERROR: Meson version is 0.55.1 but project requires >=0.56

sudo apt-get install automake ant autopoint build-essential libtool-bin \
     patch pkg-config protobuf-compiler ragel subversion unzip git \
     flex python wget vim
     
     
     把版本好改一下 meson-0.56.0.tar.gz  在目錄vlc/extras/tools/SHA12SUMS  
     可以直接下載好 拖進來 
     sha512sum meson-0.56.0.tar.gz  查看sha512  對應改一下
gradle重复下载问题

buildsystem/compile.sh 会重复下载gradle ,可以把下载的地方屏蔽掉,避免编译又进行

image.png

build libvlcjni 的时候 会再次触发下载 gradle

直接用android studio 打开工程 触发相关以来下载 ,同步成功后 ,再次执行,更方便--

环境没啥问题后续编译就正常了

 buildsystem/compile.sh --help  查看编译的 平台
        ARM:     (armeabi-v7a|arm)
	ARM64:   (arm64-v8a|arm64)
	
	
    buildsystem/compile.sh -a <ABI>
    vlc-android/build/outputs/apk 产生对应的 测试 apk
    
    buildsystem/compile.sh release
    release APK in the same folder 
    
    buildsystem/compile.sh -l -a <ABI> -r
    Build LibVLC 得到一个 aar 纯播放相关  -r 表示release版本的意思
    
    buildsystem/compile.sh -ml -a <ABI> -r 
    Build Medialibrary 得到一个 包含libvlc的带一些 应用层播控逻辑的 aar    -r 表示release版本的意思