Android源码编译(逐步演绎版:遇到问题,解决问题,直至完成)

(1)更新软件源

$ sudo apt-get update

(2)进行系统升级

$ sudo apt-get upgrade

(3)安装curl:

$ sudo apt-get install curl

(4)下载 repo 工具:

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

(5)建立工作目录:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

(6)初始化仓库:

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

在这里插入图片描述

(7)更新Python 【因为执行repo init报错Python版本低,需要升级到3.6+】:

请参照我的另一边Python版本切换的博客。

(8)安装git:

$ sudo apt-get install git
$ sudo apt-get install vim

(9)初始化仓库,又报错了,需要

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

在这里插入图片描述

(10)提示无法连接到 gerrit.googlesource.com,需要将repo中的REPO_URL修改为可以连接的:

$ vim ~/bin/repo

REPO_URL = ‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’

(11)初始化仓库,又报错了,需要sudo apt-get install libssl-dev

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

在这里插入图片描述

(12)初始化仓库,又报错了,需要libffi-devel

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

在这里插入图片描述

$ sudo apt-get install libffi-dev

(13)配置account:

 $ git config --global user.email "you@example.com"
 $ git config --global user.name "Your Name"

(14)查看repo库上分支版本:

$ git --git-dir=.repo/manifests/.git/ branch -a

在这里插入图片描述

(15)找到自己需要的,初始化目标分支:

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r40

(16)初始化完成后,安装JDK:

命令行执行一下javac,如果提示未找到,执行:

$ sudo apt install openjdk-8-jdk-headless

验证java -version,查看版本。
再执行javac,如果能找到,说明好用。

(17)下载各种依赖:

$ 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 lib32ncurses5-dev 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 libssl-dev

(18)下载源码:

$ repo sync

(19)编译:

  • 加载命令:
 $ source build/envsetup.sh
  • 选择平台编译选项:
   $ lunch
  • 执行编译:
   $ make -j16

编译过程中发现该错误:
在这里插入图片描述
该问题是由于Python的版本不对,需要使用Python2版本。
请参照我的另一边Python版本切换的博客。
将python版本修改为2.7,再次进行make

(20)启动emulator

$ emulator -avd myavd -system system.img -data userdata.img -ramdisk ramdisk.img

(21)启动emulator,总一个提示向下滑动的pop无法消去,需要注释掉下列代码的handleShow函数即可。

frameworks/base/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java

        public void handleMessage(Message msg) {
            switch(msg.what) {
                case SHOW:
  //                  handleShow();
                    break;
                case HIDE:
                    handleHide();
                    break;
            }
        }

题外记录(1):编译AndroidSDK:

$ source build/envsetup.sh
$ lunch sdk-eng 或 lunch sdk-userdebug 或 lunch sdk-user
$ make -j12 sdk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值