喜好

喜好检索

生活 蔬菜

蔬菜大全

思考

见闻与录

BT技术

BT蓝牙技术

标签

Linux下载编译安卓源码 2021年04月12日

    简介

    安装Linux系统

    安装 Deepin-Linux系统

    Deepin 官网:                  https://www.deepin.org/
    Deepin iso镜像下载地址:        https://www.deepin.org/download/
    制作安装Deepin系统安装U盘工具 deepin-boot-maker.exe  http://cdimage.deepin.com/applications/deepin-boot-maker/windows/deepin-boot-maker.exe
    
    
    

    安装 Deepin教程

    
    使用教程:
    1. 下载 deepin.iso 镜像文件 ( 2.5GB )  https://www.deepin.org/download/
    2.  下载 deepin-boot-maker.exe  制作安装Deepin系统安装U盘工具
    3.  插入U盘 启动deepin-boot-maker.exe   选中 deepin.iso 镜像
    4.  在 电脑》管理》磁盘管理 中对磁盘进行新建卷  必须留两个空白磁盘 ,例如空白 E:  空白F: ,  这两个磁盘将会作为 Linux系统的挂载点 根目录/   和主目录 /home 的挂载点
    
    			挂载点	   挂载点中文名	     文件系统	      大小
    			/	       根分区(必选)	 EXT4(推荐)	最少30G
    			/home	   家目录(推荐)	 EXT4(推荐)	建议500G
                /swap      内存临时置换区域   EXT4(推荐)	最少15G
    
    
    5.  电脑进入BIOS中  设置以 USB为启动盘
    6.  进入安装 Deepin系统 在Linux的安装磁盘中选择   空间较大的挂载 /home   选择空间较小的盘 加载系统根目录  /  并选中文件格式为  ext4
    7.  等待安装完成后重启电脑
    8.  此时可能会出现 grub error  no find file xxxx  此时参考
        https://www.cnblogs.com/sting2me/p/4216935.html    Ubuntu 开机启动是出现 grub rescue 解决办法 输入如下命令 
    
    [1]. 先使用ls命令,找到Ubuntu的安装在哪个分区,ls会罗列所有的磁盘分区信息,比方说:
    【 前缀 grub rescue> 】  ls
      (hd0),(hd0,msdos3),(hd0,msdos2),(hd0,msdos1)
    
    [2].然后依次调用如下命令: msdosX表示各个分区,注意 msdos 与 数字 之间没有空格!  
       假设找到(hd0,msdos3)时,显示了文件夹中的文件,则表示 Linux 安装在这个分区
    【 前缀 grub rescue> 】 ls (hd0,msdosX)/boot/grub    
       ...config  ....ipc  ....linux
    [3].假设找到(hd0,msdos3)时执行
    【 前缀 grub rescue> 】    rescue>set root=(hd0,msdos3)
    【 前缀 grub rescue> 】    rescue>set prefix=(hd0,msdos3)/boot/grub
    【 前缀 grub rescue> 】    rescue>insmod normal
    【 前缀 grub rescue> 】    normal              // 【开始进入Linux引导】
    
    [4]. 成功进入Linux 后执行 如下命令  完成 grub的修正 , 重启测试是否已经恢复了grub的启动菜单 , 如果跳过该步骤重启会再次进入grub
       sudo update-grub
       sudo grub-install /dev/sda                // sda 硬盘号码
    
    
    
    

    下载安卓源码

    初始化源码下载编译环境

    https://blog.csdn.net/qq910689331/article/details/83622290
    
    
    sudo apt-get update && sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk3.0-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-8-jre openjdk-8-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev gcc-multilib maven tmux screen w3m ncftp liblz4-tool pngquant rsync python2.7 
    
    
    不出意外这里安装lib32ncurses5-dev 会报如下错误
    下列软件包有未满足的依赖关系:
     lib32ncurses5-dev : 依赖: libncurses5-dev (= 6.0+20170715-2)
    E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
    
    解决方法:替换软件源
    
    1.        sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    2.       sudo vim /etc/apt/sources.list                             ## 编辑 /etc/apt/sources.list    添加如下命令
    
    
    ## Generated by deepin-installer
    deb [by-hash=force] http://packages.deepin.com/deepin panda main contrib non-free
    #deb-src http://packages.deepin.com/deepin panda main contrib non-free
    ########## add  begin
    deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe 
    deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe 
    deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe 
    deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe 
    deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe 
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe 
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe 
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe 
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe 
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
    ########## add  end
    
    
    3.        sudo apt-get update    ## 更新软件源
    4.        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5      ##  对软件源进行签名
    5.        sudo apt-get update  &&  sudo aptitude install  lib32ncurses5-dev                   ##  重新安装 lib32ncurses5-dev  
    6.        选择 Y Y  Y 进行 更新操作
    			下列“新”软件包将被安装。         
    			lib32ncurses5-dev{b} lib32tinfo-dev{ab} 
    			0 个软件包被升级,新安装 2 个,0 个将被删除, 同时 19 个将不升级。
    

    安装依赖软件包

    
    sudo apt-get install curl
    sudo apt-get install git
    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
    sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
    sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
    sudo apt-get install git-core gnupg flex bison gperf build-essential  
    sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
    sudo apt-get install libc6-dev-i386 
    sudo apt-get install x11proto-core-dev libx11-dev 
    sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
    sudo apt-get install lib32z-dev ccache
    sudo apt-get install lib32ncurses5-dev
    sudo apt-get install clang
    sudo apt-get install libexpat1-dev:i386
    sudo apt-get install lib32ncurses5
    sudo apt-get install libncurses5:i386
    sudo apt-get install qemu-kvm
    
    
    

    创建 swap 虚拟分区来分担内存压力

    使用分区来做SWAP(虚拟内存):
    
    1.   使用fdisk或者系统磁盘工具创建一个新的分区来创建交换分区(假设 /dev/sdb3 是创建的交换分区) 占用大小 16GB
    2.   mkswap /dev/sdb3            # 使用 mkswap 命令来设置交换分区
    3.   swapon /dev/sdb3            # 启用交换分区
    4.   vim   /etc/fstab            # 写入/etc/fstab,以便在引导时启用:
       /dev/sdb3 swap swap defaults 0 0                 # 新增该行
    
    
    
    删除交换分区:
    1.       /sbin/swapoff /dev/sdb3           #      先停止swap分区
    2.       vim   /etc/fstab                  # 删除自动挂载配置命令
       /dev/sdb3 swap swap defaults 0 0        ##   删除该行
    
    
    
    free  命令查看 swap分区情况 内存情况
    free
                  total        used        free      shared  buff/cache   available
    Mem:        8293052     3674244     4389456       17720      229352     4485076
    Swap:      15172948      180372    14992576
    
    

    下载源码

    (直接下载安卓官网源码仓库 repo)-方式1

    repo墙内已保存文件: https://raw.githubusercontent.com/ZukGit/WordPress_MD_Git/master/system/linux/repo

    1. 把桌面 bin  加入到 PATH
    vim  ~/.bahrc      加入如下命令     把桌面的bin目录 加入到 PATH中
    export PATH=$PATH:~/Desktop/bin
    
    
    
    2. 下载 repo  并 赋权
    mkdir ~/Desktop/bin
    cd ~/Desktop/bin
    curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo            【 需要配置VPN】】
    chmod a+x ./repo
    
    sudo apt install python                        // 【3.  安装 python  拉取代码过程中会使用python 】
    git config --global user.email zukgit@foxmail.com    //  【4.  设置  git 配置信息】          
    git config --global user.name zukgit               
    
    repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r21    // 【5. 开始初始化 repo  需要配置VPN】
    repo sync                    // 【6. 开始抓取代码  注意下面的报错 注释掉 /.repo/manifests/default.xml  中分支 】
    repo --trace sync -cdf      //  输出详细拉取分支信息         用来排查哪一个git 分支拉取失败
    
    
    

    下载越更新包 aosp-latest.tar(清华镜像站)-方式2

    https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar    # 初始化包大约40GB   建议直接浏览器下载(可以帮助加速)  不要用 wget 
    
    wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar     # 下载初始化包
    tar xf aosp-latest.tar             # 解压下载的包
    cd AOSP                            # 解压得到的 AOSP 工程目录     # 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
    repo sync                          # 正常同步一遍即可得到完整目录     # 或 repo sync -l 仅checkout代码
    
    

    清华镜像 aosp-latest.tar 40GB 解压后 40GB大小

    编译安卓源码

    设置bashrc 环境配置文件

    export PATH=$PATH:~/Desktop/bin
    unset _JAVA_OPTIONS #这句一定放在Java环境变量配置的命令的最前面
    ## https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    export JAVA_HOME=~/dev/java/jdk1.8.0_191	#JDK的安装路径
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    alias findm="grep -rnws --include='*.[mb][kp]' 'LOCAL_MODULE\|LOCAL_PACKAGE_NAME\|name:'"
    alias cls='clear'
    alias cdd='cd ~/Desktop'
    
    
    

    编译命令

    编译命令:   source build/envsetup.sh  && lunch aosp_arm64-eng && make -j6 2>&1 | tee build.log      ## shell窗口和本地build.log 同时记录编译过程Log信息
    
    source build/envsetup.sh  && lunch aosp_arm64-eng && make -j4 2>&1 | tee build.log  
    
    source build/envsetup.sh  && lunch aosp_arm64-eng && make 2>&1 | tee build.log               【arm 64位机器】
    
    source build/envsetup.sh  && lunch aosp_x86_64-eng && make 2>&1 | tee build.log             【X86 64位机器】 推荐该版本 本地虚拟机
    

    运行虚拟机命令

    参考资料:   https://blog.csdn.net/pcsxk/article/details/52016739
    
    sudo apt-get install qemu-kvm
    sudo su 
    source build/envsetup.sh  && lunch aosp_x86_64-eng && emulator                 【以 root 用户 执行 emulator 安卓虚拟机】
    
    
    ##################
    
    sudo su 
    source build/envsetup.sh
    lunch aosp_x86_64-eng
    emulator
    
    

    编译后文件空间大小

    ./repo

    ./repo+repositories

    ./out

    ./repo+repositories+out