vlc for android 编译过程

Posted 远道者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vlc for android 编译过程相关的知识,希望对你有一定的参考价值。

gradle的相关问题

1.下载gradle会相当慢 可以修改脚本里面的下载地址 推荐这个网站https://services.gradle.org/distributions/

2.gradle的缓存下载相当慢 可以修改build.gradle 把里面的修改成图片这样 阿里云的

maven {
            url "http://maven.aliyun.com/nexus/conten/groups/public/"
        }

 

 

jcenter { url \'http://maven.aliyun.com/nexus/content/repositories/jcenter\' }

 

3.删除Ubuntu自带的java

apt-cache search java | awk \'{print($1)}\' | grep -E -e \'^(ia32-)?(sun|oracle)-java\' -e \'^openjdk-\' -e \'^icedtea\' -e \'^(default|gcj)-j(re|dk)\' -e \'^gcj-(.*)-j(re|dk)\' -e \'java-common\' | xargs sudo apt-get -y remove
apt-get -y autoremove
dpkg -l | grep ^rc | awk \'{print($2)}\' | xargs sudo apt-get -y purge
bash -c \'ls -d /home/*/.java\' | xargs sudo rm -rf
rm -rf /usr/lib/jvm/*

 4.遇到下面的问题

make[2]: Leaving directory \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android/po\'
Making install in share
make[2]: Entering directory \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android/share\'
  GEN      vlc.appdata.xml
make[3]: Entering directory \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android/share\'
make[3]: Nothing to be done for \'install-exec-am\'.
  GEN      vlc.appdata.xml
 /usr/bin/mkdir -p \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android/install/share/metainfo\'
 /usr/bin/install -c -m 644 ../../share/vlc.appdata.xml \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android/install/share/metainfo\'
/usr/bin/install: cannot stat \'../../share/vlc.appdata.xml\': No such file or directory
make[3]: *** [Makefile:1355: install-appdataDATA] Error 1
make[3]: Leaving directory \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android/share\'
make[2]: *** [Makefile:1691: install-am] Error 2
make[2]: Leaving directory \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android/share\'
make[1]: *** [Makefile:1555: install-recursive] Error 1
make[1]: Leaving directory \'/vlc/vlc-android/vlc/build-android-aarch64-linux-android\'
make: *** [Makefile:2024: install] Error 2

只需要把

cp ./vlc-android/vlc/share/vlc.appdata.xml.in.in ./vlc-android/vlc/share/vlc.appdata.xml

自己注意路径哈 

5.配置gradle离线

编译成功后第二次编译 有时候会下载更新些东西 很麻烦 导致编译很慢 可以配置离线

编辑compile.sh把里面要使用gradlew命令的都手动加一个参数--offline

6.配置ffmpeg的代码

自带的脚本用git下载ffmpeg会很慢 如果有外网环境可以自己下载 然后放到相应的目录

git clone http://git.videolan.org/git/ffmpeg.git
tar -czf ffmpeg.tar.xz ffmpeg/

然后重命名需要的git对应的hash版本 例如我现在用的eaff5fcb7cde8d1614755269773d471d3a3d1bfc这个值可以在vlc/contrib/src/ffmpeg/rules.mak中的FFMPEG_HASH

找到

mv ffmpeg.tar.xz ffmpeg-eaff5fcb7cde8d1614755269773d471d3a3d1bfc.tar.xz
echo "eaff5fcb7cde8d1614755269773d471d3a3d1bfc ../../contrib/tarballs/ffmpeg-eaff5fcb7cde8d1614755269773d471d3a3d1bfc.tar.xz">>ffmpeg-eaff5fcb7cde8d1614755269773d471d3a3d1bfc.githash

 7.出现如下问题

libncurses.so.5: cannot open shared object file

会导致编译contrib下面的代码出现问题 执行如下安装即可

apt-get install libncurses5

 8.血的教训 记得编译release版本 不然太多的错误了

compile.sh --release

 9.解决如下问题

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]: *** [lib/fseterr.o] Error 1
make[3]: *** Waiting for unfinished jobs....

直接把vlc/extras/tools/bison/lib/fseterr.c中的fseterr (FILE *fp)的内容删除即可 改成空函数

10.解决SDK的license问题 我是用命令行安装的

tools/android update sdk --no-ui

结果有个版本没有安装 需要手动再安装一下

先查一下序号

./tools/android list sdk --all

输出14- Android SDK Build-tools, revision 27.0.1

所以执行如下命令安装

./tools/android update sdk -u -a -t 14

 

以上是关于vlc for android 编译过程的主要内容,如果未能解决你的问题,请参考以下文章

怎么编译Chrome for Android

Vlc for Android 全面阐述

vlc for android为啥没有串流功能

vlc源码分析 vlc-android native调试配置

为 android 编译 vlc 时出错,是关于 libtool 版本的吗?

vlc编译安装到小米TV上