ubuntu 编译vlc-android

ubuntu 编译vlc-android

环境:ubuntu 18.04  &&  openjdk version "10.0.2" 2018-07-17   && ndk r18b  && sdk android 9.0 api 28

jdk: http://www.oracle.com/technetwork/java/javase/downloads/index.html

注意进去选择 opengjdk,进去第一个看到的是oracle jdk .下面仔细看可以找到openjdk的。

ndk:http://www.oracle.com/technetwork/java/javase/downloads/index.html 官网下载最新稳定版本

sdk: 用android studio linux版本,安装启动后里面可以用sdk manager来下载最新版本 ,并且platform tools等都会装好。

 

官方文档:https://wiki.videolan.org/AndroidCompile

具体操作步骤不详叙述,理一下整个编译理论:

原本vlc官方的意思是,安装好必要的ubuntu上的环境 (请一定参考官方)

((android sdk(for android ), openjdk (for java) ndk(交叉编译器) wget(后面下载依赖的源码用的下载工具)  python(这个是2.x版本的python,虽然最新ubutun已经集成了python3.* 但是自3.0后的python 不兼容2.X) a utomake 配置第三方的源码库要用的 build-essential (gcc g++等编译软件包)  ant(这是一个构建工具,gradle也是一个构建工具,比ant更先进, protobuf-compiler(Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准) patch(给代码打补丁的) 其他。。。。。 ) )

直接运行 compile.sh 或者 comile.sh –a arm64 就可以自动完成所有编译。

1.0 则该脚本会下载vlc完整源码(vlc-for-android只是android apk的源码),用来编译成libvlc以供apk使用。2.0 编译vlc过程需要很多其他的依赖库,脚本会自动下载所有需要的其他依赖库的源码,比如ffmpeg,用ndk编译,最后整合得到ndk编译的libvlc,3.0 然后 gradlew 构建vlc-android apk,过程全自动。但是,过程并不顺利,其中有各种问题导致出错,下载依赖库源码出错,编译依赖的源码库出错,最后构建apk还出错。

问题1: 下载vlc源码 slow  ,没办法,服务器在巴黎,周末早6 7 点速度可能很快

      2: 使用的 ndk jdk sdk都是最新版本,代码也是同步的官方最新,ubuntu也是最新的18.04

      3:新版vlc支持av1 格式,源码中增加了aom目录,里面的rules.mk 编译的时候会用到 av1库,则他会检查是否有av1解码库源码,没有,就会去google开源仓库里面下载指定的版本,但是由于墙的缘故,下不了的,就给他屏蔽掉吧(注意这里的依赖库要下载的时候并不是一定下载最新的版本,比如ffmpeg源码,只是去下载vlc维护者可能已经验证使用过的版本。) 在compile.sh 中已经disable了aom,但貌似没起到作用,那最直接的就是在这个 aom模块适配代码目录下面删掉rules.mk这个文件,这样这个模块就不会被编译进去(因为这些只是vlc里面的非必须模块,也不影响vlc的整体编译运行,只是最总的apk不支持av1解码而已)  顺便提一下,最新的ffmpeg已经支持了av1解码。但vlc只是用了ffmpeg中的一点点功能. 关于aomedia (Alliance for Open Media 开放媒体联盟)AV1(Alliance media 第一代)编码格式, 由谷歌、微软、Netflix等巨头成立以抗衡H265(HEVC)的开放联盟,因为h265授权费用过高https://www.zhihu.com/topic/20164055/hot

    4:autoreconf aumake 出错,顺便了解下 autoreconf用的 perl 脚本语言http://www.runoob.com/perl/perl-packages-modules.html 。关于 aumake 怎么得到makefile这一过程,相当复杂,这里就不掺和了

  5: 最后打包出错,也顺便了解下 gradle . https://www.w3cschool.cn/gradle/ms7n1hu2.html 个人最后的android 编译出错,最后直接用ubuntu上的android studio 去open vlc-android工程,(注意是最外层的vlc-android目录)进行编译的成功的。android studio 上的build原理,了解下:

http://www.jianshu.com/p/9df3c3b6067ahttps://www.mobibrw.com/2018/15890

6:其他问题,请 在顶层目录git status看一下,git pull 更新一下。

 

 

要解决这其中的一些问题,比如apk的最后构建过程,直接的是看compile.sh脚本文件,其中有注释:
# FUNCTIONS #  //脚本用到的一些函数   
# GRADLE # //检查 gradle 工具  
# Configure gradle # //配置gradle 
# Fetch VLC source # //下载vlc源码 (这部分是用来编译libvlc的,vlc的核心,c库)
# Make VLC # //编译libvlc 
# Compile the UI # //就是编译vlc-android 了,实际上的命令 echo 出来就是 ./gradlew assembleDev

有兴趣可以一看,Make VLC 部分怎么配置ndk,怎么下载配置编译各个依赖的库,最后编译出libvlc (这就是sdk了)

 

猜你喜欢

转载自blog.csdn.net/u012459903/article/details/88528155