使用的是win10系统,使用docker通过Dockerfile来构建镜像。
1. 改造Dockerfile
改造官方出的docker images中vlc-debian-android下的Dockerfile
所做的修改包括:
- 使用阿里云debian源
- 增加必要的
apt-get update
修改后的Dockerfile1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54FROM registry.videolan.org:5000/videolan-base-stretch:20180419104422
ENV IMAGE_DATE=201712151145
ENV ANDROID_NDK="/sdk/android-ndk" \
ANDROID_SDK="/sdk/android-sdk-linux"
RUN echo "deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib \
deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib \
deb http://mirrors.aliyun.com/debian-security stretch/updates main \
deb-src http://mirrors.aliyun.com/debian-security stretch/updates main \
deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib \
deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib \
deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib \
deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib" > /etc/apt/sources.list && \
dpkg --add-architecture i386 && apt-get update && \
apt-get install -y autoconf m4 automake && \
apt-get update && apt-get install -y ant autopoint bison flex && \
apt-get update && apt-get install -y build-essential libtool libtool-bin && \
apt-get update && apt-get install -y patch pkg-config ragel subversion && \
apt-get update && apt-get install -y git rpm2cpio libwebkitgtk-1.0-0 && \
apt-get update && apt-get install -y yasm ragel g++ protobuf-compiler gettext && \
apt-get update && apt-get install -y libgsm1-dev wget expect && \
apt-get update && apt-get install -y unzip python && \
apt-get update && apt-get install -y zlib1g:i386 libstdc++6:i386 libc6:i386 && \
echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/stretch-backports.list && \
apt-get update && \
apt-get -y -t stretch-backports install cmake && \
rm -f /etc/apt/sources.list.d/stretch-backports.list && \
apt-get clean -y && rm -rf /var/lib/apt/lists/*
# install android sdk
RUN set -x && \
echo "export ANDROID_NDK=${ANDROID_NDK}" >> /etc/profile.d/vlc_env.sh && \
echo "export ANDROID_SDK=${ANDROID_SDK}" >> /etc/profile.d/vlc_env.sh && \
mkdir sdk && cd sdk && \
wget -q https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip && \
ANDROID_NDK_SHA256=0ecc2017802924cf81fffc0f51d342e3e69de6343da892ac9fa1cd79bc106024 && \
echo $ANDROID_NDK_SHA256 android-ndk-r14b-linux-x86_64.zip | sha256sum -c && \
unzip android-ndk-r14b-linux-x86_64.zip && \
rm -f android-ndk-r14b-linux-x86_64.zip && \
ln -s android-ndk-r14b android-ndk && \
mkdir android-sdk-linux && \
cd android-sdk-linux && \
mkdir "licenses" && \
echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > "licenses/android-sdk-license" && \
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> "licenses/android-sdk-license" && \
wget -q https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip && \
SDK_TOOLS_SHA256=444e22ce8ca0f67353bda4b85175ed3731cae3ffa695ca18119cbacef1c1bea0 && \
echo $SDK_TOOLS_SHA256 sdk-tools-linux-3859397.zip | sha256sum -c && \
unzip sdk-tools-linux-3859397.zip && \
rm -f sdk-tools-linux-3859397.zip && \
tools/bin/sdkmanager "build-tools;26.0.1" "platform-tools" "platforms;android-26" && \
chown -R jenkins /sdk
2. 使用Dockerfile构建镜像
在 Dockerfile 文件所在目录执行:
$ docker build -t vlc-android .
注意最后有一个代表上下文的 “.”
3. 基于上面的镜像新建容器并启动
docker run -it vlc-android /bin/bash
执行完上述命令后就可以在bash终端上进行后续操作了,就像在Linux系统上一样。
4. 设置环境变量
1 | // Set $ANDROID_SDK to point to your Android SDK directory |
5. 下载源码
1 | git clone https://code.videolan.org/videolan/vlc-android.git |
6. 编译
进到上面下载好的源码目录下,运行compile.sh
,从而自动构建Gradle、下载需要的其他源码。
1 | sh compile.sh |