VLC for Android
官方文档:
https://wiki.videolan.org/AndroidCompile/
建议直接参考官方文档操作,以下是我根据官方文档进行的操作,包括操作中遇到的一些问题。
基本流程:各种依赖包安装——Openjdk安装——Android SDK安装——Android NDK安装——protobuf3.0以上版本安装——开始编译——准备应对各种问题——签名——完成
- 首先编译必须要在 linux 上进行,我这边用到的是 ubuntu16.04,所以之后的操作代码都是基于此系统的,不过需求都是相同的,只是包的安装方式不同。
注意:虚拟机的话要保证硬盘空间充足,至少留20G吧,鬼知道为什么这么占空间。
- 安装必要的依赖包,编译过程中要用到这些应用的功能,所以是必不可少的,文档中需求的包好些系统已经自带,但不同系统可能会有差异,为保险起见还是从头装一遍,省得之后遇到问题浪费更多时间。(分开是为了看安装进度,是否安装成功)
自带的:
$sudo apt-get install automake m4 mawk gcc g++ pkg-config patch unzip flex
需安装:
$sudo apt-get install autoconf libtool make gawk cmake ragel protobuf-compiler subversion curl wget
文件较大,建议单独安装:
$sudo apt-get install ant
$sudo apt-get install git
$sudo apt-get install openjdk-8-jre openjdk-8-jdk最后检查,也可以直接复制安装:
$ sudo apt-get install automake ant autopoint cmake build-essential libtool patch pkg-config protobuf-compiler ragel subversion unzip git openjdk-8-jre openjdk-8-jdk flex
android sdk
- 上面完成之后就已经装好了依赖的功能包和JDK,接下来就是要安装SDK。SDK的话通过文档中的方法是需要翻墙的,由于近期VPN不好用了,只好另辟溪锦。
- 先自己下载一个SDK工具包,下载最新的就行,我这里实在找不下一个各种版本都有的下载战,只能自行百度了。
- 下载好后就是解压缩
unzip tools_r26.0.2-linux.zip- 添加环境变量,新建文件android.sh
nano /etc/profile.d/android.sh- 在编辑器中写入
export ANDROID_SDK=/path/to/android-sdk(这里写存放的路径)
export PATH=$
PATH:$
ANDROID_SDK/platform-tools:$
ANDROID_SDK/tools- 重新加载环境变量
source /etc/profile- 验证及更新
android update sdk –no-ui
如果找不到指令则安装失败,否则安装成功,但最后更新能否成功还是个未知数。
android ndk
- 基本与sdk相同,需要自己去网上寻觅下载。不过这里在版本的选择上需要花点功夫。因为在配置文件compile-libvlc中对版本要求有一定限制,这个就需要稍微研究一下shell语句,然后找出版本要求。
- 先自己下载一个NDK
- 下载好后就是解压缩
unzip android-ndk-r14b-linux-x86_64.zip - 添加环境变量,编辑文件android.sh
nano /etc/profile.d/android.sh - 在编辑器中写入
export ANDROID_NDK=/path/to/android-ndk(这里写存放的路径) - 重新加载环境变量
source /etc/profile - 验证
ndk-build
同样只要没有出现未找到命令既成功。
protobuf
- 下载3.0以上版本
- 下载好后就是解压缩
tar -zxvf protobuf-cpp-3.1.0.tar.gz- 进入目录,执行
./configure
make
sudo make instrall
开始编译
debug版: - 进入到vlc-android目录下
$sh compile.sh -a <ABI>
- 漫长的等待和大量的问题
- 成功的话可以创建debug版
release版
sh compile.sh release
- 漫长的等待,这里就不会遇到太多问题了
- 成功的话可以创建release版
- 都存放在vlc-android/build/outputs/apk folder/目录中
libvlc
sh compile.sh -l -a <ABI> -r
- 执行后编译生成动态库文件
- 存放在libvlc/build/outputs/aar/
以下是ABI对应的设备列表,一般都用armeabi-v7a,填入上面的指令替换<
ABI>
Find the ABI for the target device.
For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)
armeabi-v7a
For a Tegra2 device (no NEON)
armeabi-v7a
For an ARMv6 device
armeabi
For an ARMv6 device that does not support FPU
armeabi-nofpu
For an ARMv5 device or the Android Emulator
armeabi-v5
For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)
x86
For a MIPS device (i.e. Ainol Novo tablets):
mips
This value must be passed to the compile.sh script
可能的问题
- 首先编译的时间会很久,需要耐心的等待,中途会出现什么样的问题都不好说主要出现问题的可能有以下几点吧:
- 环境设置未完成,比如ndk版本不对,sdk不够新等
- 硬件要求不够,比如我用虚拟机做,中间先是硬盘空间占满,扩充后又出现内存不够用的情况
- 网络状况不好,下载失败
- gradle的安装问题
这里着重介绍下gradle的问题,其他问题遇到了就仔细看错误提示,一般都不难解决,但可能会非常多。而gradle就麻烦点了。
编译后脚本是会自动下载所需的gradle包然后解压,完成后可以在vlc-android中看到gradle-4.1-bin.zip压缩包。但是你会发现解压之后它又一次下载这个压缩包,而且一直下载不好,这时候就需要手动处理一下了。
将下载好的包拷贝到家目录下的隐藏文件夹./gradle(即~/.gradle)
将该包放置于类似这样的路径:
~/.gradle/wrapper/dists/gradle-4.1-bin/64bhckfm0iuu9gap9hg3r7ev2/gradle-4.1-bin.zip
总之狂敲Tab就能找到,把压缩包复制进来。
重新运行脚本即可。注意,如果此时存在/vlc-android/gradle/wrapper路径,需要删除,脚本才能进入gradle的安装步骤。
正确安装gradle后会输出gradle的版本信息表明安装成功。之后脚本会将/vlc-android/gradle-3.3/gradle/wrapper/文件夹移动到/vlc-android/gradle/wrapper/,并以该文件夹是否存在,作为是否进行gradle安装的判断条件。(因此,使用上述本地gradle-3.3-bin.zip安装前需要删除该文件夹让脚本进入安装流程)。
签名
签名的意义
为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。
apk文件签名主要分为三个步骤,证书的创建–>签名生成–>优化(可选)
前提是已经安装jdk并且已经添加到环境变量中。
证书的创建
keytool -genkey -v -alias KeyName -keyalg RSA -keysize 2048 -validity 10000
这行命令中一些重要的参数值说明如下:
KeyName:表示证书的别名(自己起个名字)
10000: 表示证书的有效期,单位(天)
RSA:证书的加密类型,一般默认为RSA
其次在创建的过程中要填写一些基本的信息,证书密码等相关的信息。
证书生成后的查看
keytool -list -alias KeyName
对APK进行签名
jarsigner -verbose sign_apk_file.apk KeyName
参数解释:
sign_apk_file.apk 需要签名的apk文件(绝对路径)
KeyName 证书的别名
待签名的apk文件根根目录下如果有文件夹“META-INFO”,请先删除(重新签名就需要这样做)。
如果不想创建过程输出太多信息,可以删除“-verbose” 。
上述签名会直接覆盖原来的文件,如果不想被覆盖而签名为另外的新文件 signed.akp,
只需将 signed.apk 改为 -signedjar signed.apk sign_old.akp 即可。
签名后可以使用如下命令验证是否签名成功:
jarsigner -verify signed.apk
如果需要查看更详细的验证信息,可修改为:
jarsigner -certs -verbose -verify signed.apk
使用android sdk的zipalign工具优化已签名的apk文件
zipalign -v 4 unaligned.apk aligned.apk
注意要在签名后再zipalign。这个工具不是jdk自带的,而是在%ANDROID_HOME%\tools\zipalign
完成
把apk拿去运行就ok了。
VLC for Android相关推荐
- VLC for android 编译错误
为什么80%的码农都做不了架构师?>>> 在Mac os 10.10.2上编译vlc for android的时候,出现如下错误: $ sh compile.sh *** No ...
- VLC for Android源码下载和编译
Project Hosting on 点击打开链接 最受欢迎的开源项目 点击打开链接 由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等. ...
- android同时预览多个监控,基于VLC的Android多路视频监控系统.pdf
2013年12月15日 现代电子技术 Dec.2013 第36卷第24期 ModernElectronicsTechnique Vol.36No.24 63 63 基于VLC 的Android 多路视 ...
- android配置vlc_Android : VLC for Android 环境搭建及编译
一.下载VLC源码: git clone https://code.videolan.org/videolan/vlc-android.git 编译apk: sh compile.sh -a ar ...
- vlc for android 完全编译
vlc for android 完全编译 环境描述 ubuntu-12.04 android ndk r14b openjdk 1.8 sdk 我们参考官网的描述来进行编译,注意 有修改 https: ...
- VLC For Android 在 Mac OS上编译
VLC For Android 首先:参考官方的原文: Android For VLC 终于在MAC下把VLC FOR Android版本编译通过了.:) 注意事项: Mac需要最新版 ...
- vlc for android 使用教程,VLC for android 使用手记
将vlc-android 中org.videolan.vlc包下面的这几个class 添加: Aout.java BitmapCache.java EventManager.java LibVLC.j ...
- vlc for android 字幕方块乱码
使用的手机是小米4c,MIUI7 6.1.7Beta.VLC 2.0.6. VLC下载地址:http://get.videolan.org/vlc-android/2.0.6/ 加载中文字幕显示方块块 ...
- vlc for android 不能全屏,或者画面不能铺满的问题。
做视频开发的时候,肯定会遇到,小窗口播放,然后支持全屏播放. 我遇到的问题,有两个. 一:小窗口视频有黑边.就是还是没充满. 二:全屏画面也是铺不满,而且跟小窗口的画面大小是一样的. 要解决这些问题, ...
- vlc for Android播放视频第一帧出画面慢。
网上资料很少,我的vlc版本是2016年自己编译的,资料超少. vlc出画面慢有两种解决方法. 如果vlc版本比较新,设置vlc属性的方式不是通过libvlc,而是通过下图这种Media对象来设置的: ...
最新文章
- JavaScript深拷贝Json
- Android8.0适配那点事(二)
- 范式青春er,寻找同行的你!
- 关于搜狐焦点房产的数据分析
- 字符设备驱动基础篇5——驱动如何操控硬件(动静态映射操作LED)
- dubbo协议_Dubbo协议解析与OPPO自研ESA RPC框架实践
- web 前端 如何分享到instagram_如何找到靠谱的Web培训机构?web前端培训机构哪个好?...
- Netty工作笔记0060---Netty心跳机制实例
- JZOJ 1237. 餐桌
- 请确保dx环境安装正常后进行开播_虎牙直播助手常见问题汇总
- 缩减 Visio 图片外围空白
- 【C++】归并排序-分治(图解+例题)
- 什么是爬虫?你了解吗,能干什么,怎么用,让你了解本质
- VUE设置浏览器标题及图标
- axure原型怎么让文字自动换行_Axure动态面板教程(快速入门+轮播图案例)
- Matlab龚珀兹曲线模型预测,指数曲线模型的讲解=.pptx
- C语言停车场管理系统
- linux系统中pinctrl 和gpio子系统使用方法(教你点灯)
- Linux内核编译基础
- 美国签证今天到手了, 发的是一年多次往返的
热门文章
- 白城师范学院计算机科学学院录取分数线,2018年白城师范学院在各省录取分数线最新公布...
- 隐藏式营销二维码美化生成器
- 基础总结篇:Activity的四种launchMode
- 给儿子制定的学习、活动计划(2016九月 -)
- AndroidStudio历史记录找回本地修改代码
- ggpubr+ggplot2轻松做到中英文字体分设,离达到出版要求又近了一步
- 计算机毕业设计题目大全毕设课题
- 至-所有正在找工作的人的一封信
- 重庆龙都医院怎么样?重庆龙都医院怎么样?
- 解析几何基础(一):判定点在向量的左边还是右边