VLC系列(一)windows下使用docker搭建编译环境

使用的是win10系统,使用docker通过Dockerfile来构建镜像。

1. 改造Dockerfile

改造官方出的docker images中vlc-debian-android下的Dockerfile

所做的修改包括:

  • 使用阿里云debian源
  • 增加必要的apt-get update 修改后的Dockerfile
    1
    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
    54
    FROM 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
2
3
4
5
6
7
8
// Set $ANDROID_SDK to point to your Android SDK directory
export ANDROID_SDK=/path/to/android-sdk

// Set $ANDROID_NDK to point to your Android NDK directory
export ANDROID_NDK=/path/to/android-ndk

// Add some useful binaries to your $PATH
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools

5. 下载源码

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

6. 编译

进到上面下载好的源码目录下,运行compile.sh,从而自动构建Gradle、下载需要的其他源码。

1
sh compile.sh
坚持原创技术分享,您的支持将鼓励我继续创作!