Windows使用Docker搭建Linux环境,拉取Android源码,嵌入Android Studio

2,302 阅读2分钟

1,下载安装Docker Desktop www.docker.com/

2,设置Docker Resources,如图,可根据自身设备性能来设置

3,Build 一个Ubuntu环境

  • 创建一个文件夹,\my_android_linux

  • 创建一个文件名为Dockerfile的文件

  • 编辑Dockerfile文件: 内容为:

    #Dockerfile
    #linux source linux版本为ubuntu:18.04
    FROM ubuntu:18.04
    #update apt-get source
    RUN apt-get update
    //启动方式为bash方式
    CMD ["sh"]
    

4,在\my_android_linux 文件夹中启动PowerShell

      执行命令: docker build -t my_android_linux . 它会自动在当前文件夹中扫描Dockerfile,然后执行Dockerfile文件中的配置

       执行命令: docker run -t -i -v F:\Docker\my_android_linux\win_share_files:/win_share_files my_android_linux bash 这个命令是指,在run的时候,将F:\Docker\my_android_linux\win_share_files文件夹和Linux中的win_share_files文件夹做映射(或者叫挂载),“ : ” 左右的文件夹名字可以不同

       执行完上述两条命令以后,就会自动进入Linux环境了。这样我们就算是初步搭建了一个Linux环境

5,在Docker Desktop中也可以看到我们创建的Docker image

6,进入Linux系统中,做同步源码到本地并且编译的准备工作:

     准备工作:

  • 下载安装git

    #:apt-get install git
    #:git config --global user.name "Your Name"
    #:git config --global user.email "you@example.com"
    
  • 下载安装repo

    #:mkdir ~/bin
    #:PATH=~/bin:$PATH
    #:curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    #:chmod a+x ~/bin/repo
    
  • 下载安装OpenJDK

    #:apt-get install openjdk-8-jre
    
  • 安装编译需要的库

    #:apt-get install gnupg flex bison gperf build-essential zip zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
    

7,同步源码,我使用的是科大的镜像

#:repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r81 --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo:--repo-url=https://mirrors.tuna.tsinghua.edu.cn/ 表示将repo-url切换为清华的镜像,因为repo init的时候,会去更新repo,repo文件内置的url为google的url,访问超时。当然,也可以直接将内置的url改掉

#:repo sync

 8,编译:

#:source build/envsetup.sh
#:lunch
#:make -j8

9,生成android.ipr文件

#:mmm development/tools/idegen
#:/development/tools/idegen/idegen.sh
会在根目录下,生成android.ipr文件,这个文件可以用Android Studio打开,打开就可以看各种源码了

10,END

遇到的问题汇总:

1,映射(或者挂载)Windows目录到Linux

通过 docker run -t -i -v F:\Docker\my_android_linux\android_source:/win_share_files  my_android_linux bash命令,在run的时候,进行映射

2,在Linux环境下,在映射的目录中进行repo init 和 repo sync的时候,会报错,如下图

    原因:和两个操作系统目录之间的映射有关系,目前未解决,只能在Linux中单独创建目录,下载编译完源码以后,copy到映射目录

3,两个操作系统之间,怎么copy文件:

     通过docker cp命令

 docker cp .\jdk-8u281-linux-x64.tar.gz  706ddb8b7bca:/java_8/
 将目标文件jdk-8u281-linux-x64.tar.gz 拷贝到CONTAINER ID为706ddb8b7bca的Linux /java_8/ 目录下

4,报GC overhead limit exceeded.错误

     解决方案:

#:export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
#:jack-admin kill-server
#:jack-admin start-server

5,编译过程中,角色问题:

#:export USER=$root

6,使用HTTPS镜像的时候,会报urlopen error unknown url type: https

解决方案:

重新编译Python3.6+, 加上--with-ssl参数
#./configure --prefix=/usr/local/python37 --with-ssl

参考:

安装repo:source.android.google.cn/setup/devel…

更新代码:source.android.google.cn/setup/build…

Ubuntu apt-get 国内镜像源:developer.aliyun.com/mirror/ubun…

Ubuntu apt-get 国内镜像源替换:blog.csdn.net/qq_21095573…

windows下docker文件夹的映射:blog.csdn.net/m0_38044453…

Windows下使用Docker编译Android系统源代码:cloud.tencent.com/developer/a…

清华大学Android开源镜像:mirrors.tuna.tsinghua.edu.cn/help/AOSP/

Ubuntu安装Python3.6+:www.jianshu.com/p/940b774a0…

windows安装docker,搭建Linux:zhuanlan.zhihu.com/p/70870453

Android build号:source.android.google.cn/setup/start…

使用AndroidStudio查看并调试Android源码:blog.csdn.net/cfy137000/a…

从开源镜像站下载Android系统源码:xusiwei.github.io/post/2020/0…

搭建编译环境:source.android.google.cn/source/init…

android ipr文件和iml文件:www.jianshu.com/p/6b60e3cb5…

使用python出现错误 urlopen error unknown url type: https 的解决办法:blog.csdn.net/qq_38189484…