一、安装包准备
1、准备jdk
注意版本!!!!!! 参考下面的 对照表,不然后面构建镜像报错,就是版本不对。
我就是因为下载的jdk17,下载的安卓demo项目只需要jdk8就行,打包apk一直失败,整神了0.0
2、准备安装的工具包
ttps://developer.android.google.cn/studio/ 这里下载安卓工具,后面的版本参考
下载地址的生成规则:https://dl.google.com/android/repository/文件名
文件名就是:
commandlinetools-mac-11479570_latest.zip(根据自己的环境选择对应的)
我是采用的在dockerfile直接下载的方式
cmdline-tools 版本 最低 JDK Mac Linux Windows
13.0(latest) 17 commandlinetools-mac-11479570_latest.zip commandlinetools-linux-11479570_latest.zip commandlinetools-win-11479570_latest.zip
12.0 17 commandlinetools-mac-11076708_latest.zip commandlinetools-linux-11076708_latest.zip commandlinetools-win-11076708_latest.zip
11.0 17 commandlinetools-mac-10406996_latest.zip commandlinetools-linux-10406996_latest.zip commandlinetools-win-10406996_latest.zip
10.0 11 commandlinetools-mac-9862592_latest.zip commandlinetools-linux-9862592_latest.zip commandlinetools-win-9862592_latest.zip
9.0 11 commandlinetools-mac-9477386_latest.zip commandlinetools-linux-9477386_latest.zip commandlinetools-win-9477386_latest.zip
8.0 8 commandlinetools-mac-9123335_latest.zip commandlinetools-linux-9123335_latest.zip commandlinetools-win-9123335_latest.zip
二、制作镜像
1、下载jdk版本的压缩包,传到Linux上面,编写dockerfile
1)使用curl拉取远程的安卓包
bash
FROM ***********/base/ubuntu-base:python3.10
#RUN pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
#RUN pip config set global.trusted-host mirrors.cloud.tencent.com
WORKDIR /home/work
ADD ./*.py /home/work
# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java
#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
CMD java -version
RUN mkdir -p /usr/local/androidSdk
# 设置变量
ENV ANDROID_HOME="/usr/local/androidSdk" \
SDK_TOOL_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
RUN echo "Y" | apt install unzip
RUN apt update
RUN echo "Y" | apt install curl
# 创建android sdk目录,并下载 sdkmanager
RUN cd $ANDROID_HOME \
&& curl -o sdk.zip $SDK_TOOL_URL \
&& unzip sdk.zip \
&& rm sdk.zip
# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p ${ANDROID_HOME}/sdk/cmdline-tools/latest
RUN cp -r ${ANDROID_HOME}/cmdline-tools/* ${ANDROID_HOME}/sdk/cmdline-tools/latest
# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
RUN echo "Y" | ${ANDROID_HOME}/sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3"
# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV PATH ${ANDROID_HOME}/sdk/cmdline-tools:${ANDROID_HOME}/sdk/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${PATH}
RUN apt update
RUN pip install oss2
RUN apt clean
2)上传安卓的工具包,解压使用,使用shell脚本
bash
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work
# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java
#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
RUN apt update
RUN echo "Y" | apt install unzip
# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY commandlinetools-linux-11076708_latest.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip commandlinetools-linux-11076708_latest.zip -d $ANDROID_DIR
# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/cmdline-tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/cmdline-tools/* $ANDROID_DIR/sdk/cmdline-tools/latest
RUN rm -rf $ANDROID_DIR/cmdline-tools
# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/cmdline-tools/latest
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_DIR}/sdk/cmdline-tools:${ANDROID_HOME}/platform-tools:${PATH}
# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"
#RUN "y" | $ANDROID_HOME/bin/sdkmanager "platforms;android-28"
#RUN "y" | $ANDROID_HOME/bin/sdkmanager "platforms;android-27"
#RUN "y" | $ANDROID_HOME/bin/sdkmanager "build-tools;28.0.3"
#RUN "y" | $ANDROID_HOME/bin/sdkmanager "build-tools;27.0.3"
#复制脚本到容器内部
COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
RUN $ANDROID_HOME/script.sh
3、不使用脚本
bash
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work
# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java
#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
RUN apt update
RUN echo "Y" | apt install unzip
# 将当前项目 Android Project 复制到容器----------------------------------------
COPY android_hello_world-master.zip /home/work
RUN cd /home/work && unzip android_hello_world-master.zip -d /home/work
#-----------------------------上面的Android roject是用来验证容器镜像的,可以忽略
# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY commandlinetools-linux-11076708_latest.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip commandlinetools-linux-11076708_latest.zip -d $ANDROID_DIR
# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/cmdline-tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/cmdline-tools/* $ANDROID_DIR/sdk/cmdline-tools/latest
RUN rm -rf $ANDROID_DIR/cmdline-tools
# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/cmdline-tools/latest
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_DIR}/sdk/cmdline-tools:${ANDROID_HOME}/platform-tools:${PATH}
# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'platforms;android-28'
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'platforms;android-27'
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'build-tools;28.0.3'
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager 'build-tools;27.0.3'
# 上面两种方式都未安装成功,采用下面脚本的方式成功了
#复制脚本到容器内部
#COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
#RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
#RUN $ANDROID_HOME/script.sh
注意这里的基础镜像你们根据你们的实际 情况修改,改成Ubuntu的镜像即可。
2、构建镜像
docker build -t /jenkins/android-package:0.0.1 .
3、push镜像
docker push /jenkins/android-package:0.0.1
三、遇到的问题
1、jdk和Android的版本问题,参考上面的即可
2、 Either specify it explicitly with --sdk_root= or move this package into its expected location: <sdk>/cmdline-tools/latest/
解决方案:修改路径,将文件放到latest的文件夹下,具体操作如图。
3、安装好镜像未报错,进去容器验证发现未安装成功。
ls -al /opt/app/android-sdk/sdk/platforms
ls -al /opt/app/android-sdk/sdk/build-tools
解决方案:创建sh脚本,放入镜像中,然后执行即可。
链接: https://pan.baidu.com/s/10rm4eYBWsLt7_iFBrnHhlw 提取码: a19z
再次build:docker build -t android-package:v1.0 .
进入容器查看,文件已拉取下来。
4、验证打包apk时,jdk找不到
四、使用镜像打包安卓项目apk
1、进入容器,然后创建local.properties文件并指定android sdk路径
进入EmptyProject文件夹,输入如下命令
touch local.properties
echo "sdk.dir=/opt/app/android-sdk/sdk" > local.properties
bash
./gradlew assembleRelease
最后下载很慢gradle:
改这个地方,速度起飞!
又报错了,看提示是安装的tools少了,修改dockerfile文件
bash
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work
# 拷贝JDK安装包到容器中
# 安装jdk
ADD jdk-17_linux-x64_bin.tar.gz /usr/app/java
RUN mkdir -p /usr/app/java
#设置JAVA_HOME的环境变量
ENV JAVA_HOME=/usr/app/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
RUN apt update
RUN echo "Y" | apt install unzip
# 将当前项目 Android Project 复制到容器----------------------------------------
COPY android_hello_world-master.zip /home/work
RUN cd /home/work && unzip android_hello_world-master.zip -d /home/work
#-----------------------------上面的Android roject是用来验证容器镜像的,可以忽略
# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY commandlinetools-linux-11076708_latest.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip commandlinetools-linux-11076708_latest.zip -d $ANDROID_DIR
# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/cmdline-tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/cmdline-tools/* $ANDROID_DIR/sdk/cmdline-tools/latest
RUN rm -rf $ANDROID_DIR/cmdline-tools
# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/cmdline-tools/latest
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_DIR}/sdk/cmdline-tools:${ANDROID_HOME}/platform-tools:${PATH}
# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;33.0.0" "build-tools;31.0.0" "build-tools;30.0.3" "build-tools;30.0.2" "build-tools;30.0.0" "build-tools;29.0.3" "build-tools;29.0.2" "build-tools;29.0.1" "build-tools;29.0.0" "build-tools;28.0.3" "build-tools;28.0.2" "build-tools;27.0.3"
RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-21" "platforms;android-22" "platforms;android-23" "platforms;android-24" "platforms;android-25" "platforms;android-26" "platforms;android-27" "platforms;android-28" "platforms;android-29" "platforms;android-30" "platforms;android-31" "platforms;android-32" "platforms;android-33"
# 上面两种方式都未安装成功,采用下面脚本的方式成功了
#复制脚本到容器内部
#COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
#RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
#RUN $ANDROID_HOME/script.sh
等待命令执行完成(第一次会比较慢),最终apk地址app/build/outputs/apk/release/app-release.apk
至此我们完成了在docker上搭建了android打包编译环境,并成功编译出了apk文件。
五、写在最后(千万要注意jdk和 gradle的版本,坑 ,巨坑 )
链接: https://pan.baidu.com/s/1Emjchg1xm-FbD6OAHrEeQg 提取码: dqa5
按照下面的版本对应即可打包成功!
git clone https://github.com/hellsam/EmptyProject.git
jdk版本1.8
bash
# 使用官方的Ubuntu镜像作为基础镜像
FROM ubuntu:latest
WORKDIR /home/work
RUN apt update
RUN echo "Y" | apt install unzip
RUN apt update
RUN echo "y" | apt install openjdk-8-jdk
# 拷贝JDK安装包到容器中
# 安装jdk
#RUN mkdir -p /usr/app/java
#COPY jdk-8u401-linux-x64.tar.gz /usr/app/java
#RUN tar -czvf jdk-8u401-linux-x64.tar.gz /usr/app/java
#设置JAVA_HOME的环境变量
#ENV JAVA_HOME=/usr/app/java/jdk1.8.0_401
#ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#ENV PATH=$JAVA_HOME/bin:$PATH
# 将当前项目 Android Project 复制到容器----------------------------------------
COPY EmptyProject.zip /home/work
RUN cd /home/work && unzip EmptyProject.zip -d /home/work
#-----------------------------上面的Android roject是用来验证容器镜像的,可以忽略
# 设置变量 /opt/app/android-sdk/sdk/cmdline-tools
ENV ANDROID_DIR=/opt/app/android-sdk
RUN mkdir -p $ANDROID_DIR
# 创建android sdk目录,并下载 sdkmanager
COPY sdk-tools-linux-4333796.zip $ANDROID_DIR
RUN cd $ANDROID_DIR && unzip sdk-tools-linux-4333796.zip -d $ANDROID_DIR
# 解压完之后在cmdline-tools路径下创建latest文件夹
RUN mkdir -p $ANDROID_DIR/sdk/tools/latest
#/opt/app/android-sdk/sdk/cmdline-tools
RUN cp -r $ANDROID_DIR/tools/* $ANDROID_DIR/sdk/tools/latest
RUN rm -rf $ANDROID_DIR/tools
# 设置环境变量: 把 android sdk 路径加入到 PATH 中
ENV ANDROID_HOME=$ANDROID_DIR/sdk/tools
ENV PATH=$ANDROID_HOME/bin:$PATH
ENV PATH ${ANDROID_HOME}:${ANDROID_HOME}/platform-tools:${PATH}
# 安装android sdk其他package, 输入y是因为此处会有一个licence,需要用户同意后才会安装
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-28"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-27"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;28.0.3"
# /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;27.0.3"
#RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;33.0.0" "build-tools;31.0.0" "build-tools;30.0.3" "build-tools;30.0.2" "build-tools;30.0.0" "build-tools;29.0.3" "build-tools;29.0.2" "build-tools;29.0.1" "build-tools;29.0.0" "build-tools;28.0.3" "build-tools;28.0.2" "build-tools;27.0.3"
#RUN echo 'y' | /opt/app/android-sdk/sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-21" "platforms;android-22" "platforms;android-23" "platforms;android-24" "platforms;android-25" "platforms;android-26" "platforms;android-27" "platforms;android-28" "platforms;android-29" "platforms;android-30" "platforms;android-31" "platforms;android-32" "platforms;android-33"
RUN echo 'y' | /opt/app/android-sdk/sdk/tools/latest/bin/sdkmanager "platforms;android-28" "platforms;android-27"
RUN echo 'y' | /opt/app/android-sdk/sdk/tools/latest/bin/sdkmanager "build-tools;28.0.3" "build-tools;27.0.3"
# 上面两种方式都未安装成功,采用下面脚本的方式成功了
#复制脚本到容器内部
#COPY script.sh $ANDROID_HOME/script.sh
#赋予脚本执行权限
#RUN chmod +x $ANDROID_HOME/script.sh
# 执行shell脚本
#RUN $ANDROID_HOME/script.sh
跟着图中的命令执行,最后等待打包apk即可。
注意 :代码里面的 这个地址需要换成镜像 地址,不然下载贼慢!
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-4.4-all.zip
六、参考文献
docker+jenkins+android环境搭建(使用dockerfile) - 掘金
Android cmdline-tools 版本与其最小JDK关系_java11对应的android sdk tools-linux版本是多少-CSDN博客
Linux 环境下 搭建Android SDK 和Android NDK-腾讯云开发者社区-腾讯云
zsh: command not found解决方式 - 简书
在 Linux 系统上下载 Android SDK_linux中androidsdk环境变量配置-CSDN博客
附:安卓版本表
使用sdkmanager --list命令显示所有已经安装的和未安装的packages,如下:
Installed packages:
Path Version Description Location
build-tools;24.0.3 24.0.3 Android SDK Build-Tools 24.0.3 build-tools/24.0.3/
build-tools;25.0.3 25.0.3 Android SDK Build-Tools 25.0.3 build-tools/25.0.3/
emulator 26.1.3 Android Emulator emulator/
extras;android;m2repository 47.0.0 Android Support Repository extras/android/m2repository/
extras;google;m2repository 57 Google Repository extras/google/m2repository/
extras;m2reposi...ut-solver;1.0.2 1 Solver for ConstraintLayout 1.0.2 extras/m2reposi...t-solver/1.0.2/
extras;m2reposi...nt-layout;1.0.2 1 ConstraintLayout for Android 1... extras/m2reposi...t-layout/1.0.2/
patcher;v4 1 SDK Patch Applier v4 patcher/v4/
platform-tools 26.0.0 Android SDK Platform-Tools 26 platform-tools/
platforms;android-24 2 Android SDK Platform 24 platforms/android-24/
platforms;android-25 3 Android SDK Platform 25 platforms/android-25/
tools 26.0.2 Android SDK Tools tools/
Available Packages:
Path Version Description
add-ons;addon-g..._apis-google-15 3 Google APIs
add-ons;addon-g..._apis-google-16 4 Google APIs
add-ons;addon-g..._apis-google-17 4 Google APIs
add-ons;addon-g..._apis-google-18 4 Google APIs
add-ons;addon-g..._apis-google-19 20 Google APIs
add-ons;addon-g..._apis-google-21 1 Google APIs
add-ons;addon-g..._apis-google-22 1 Google APIs
add-ons;addon-g..._apis-google-23 1 Google APIs
add-ons;addon-g..._apis-google-24 1 Google APIs
add-ons;addon-g...e_gdk-google-19 11 Glass Development Kit Preview
build-tools;19.1.0 19.1.0 Android SDK Build-Tools 19.1
build-tools;20.0.0 20.0.0 Android SDK Build-Tools 20
build-tools;21.1.2 21.1.2 Android SDK Build-Tools 21.1.2
build-tools;22.0.1 22.0.1 Android SDK Build-Tools 22.0.1
build-tools;23.0.1 23.0.1 Android SDK Build-Tools 23.0.1
build-tools;23.0.2 23.0.2 Android SDK Build-Tools 23.0.2
build-tools;23.0.3 23.0.3 Android SDK Build-Tools 23.0.3
build-tools;24.0.0 24.0.0 Android SDK Build-Tools 24
build-tools;24.0.1 24.0.1 Android SDK Build-Tools 24.0.1
build-tools;24.0.2 24.0.2 Android SDK Build-Tools 24.0.2
build-tools;24.0.3 24.0.3 Android SDK Build-Tools 24.0.3
build-tools;25.0.0 25.0.0 Android SDK Build-Tools 25
build-tools;25.0.1 25.0.1 Android SDK Build-Tools 25.0.1
build-tools;25.0.2 25.0.2 Android SDK Build-Tools 25.0.2
build-tools;25.0.3 25.0.3 Android SDK Build-Tools 25.0.3
build-tools;26.0.0 26.0.0 Android SDK Build-Tools 26
build-tools;26.0.1 26.0.1 Android SDK Build-Tools 26.0.1
cmake;3.6.4111459 3.6.4111459 CMake 3.6.4111459
docs 1 Documentation for Android SDK
emulator 26.1.3 Android Emulator
extras;android;gapid;1 1.0.3 GPU Debugging tools
extras;android;gapid;3 3.1.0 GPU Debugging tools
extras;android;m2repository 47.0.0 Android Support Repository
extras;google;auto 1.1 Android Auto Desktop Head Unit...
extras;google;g...e_play_services 43 Google Play services