1. Introdução
Compile o sistema Android usando o Ubuntu20.04 para construir a compilação do código-fonte do Android10
2. Etapas detalhadas
1. Baixe o VMware Workstation Pro
A versão mais recente do VMware Workstation Pro16 é usada aqui como exemplo. O endereço de download do site oficial é: Windows virtual machine | Workstation Pro | VMware | CN Selecione a versão de avaliação
O processo de instalação é relativamente simples, aqui está uma introdução detalhada.
2. Baixe o Ubuntu20.04
A versão 20.04 é usada aqui, e o endereço de download oficial é: download do sistema Ubuntu | Ubuntu
Encontre a versão correspondente do Ubuntu e faça o download
3. Instale o Ubuntu20.04 na VM
1. Selecione para criar uma nova máquina virtual na página inicial da VM, conforme mostrado na figura abaixo
2. Selecione Instalação típica
3. Encontre o sistema Ubuntu baixado no arquivo de imagem do CD do instalador, conforme mostrado na figura abaixo
4. Preencha as informações do usuário
5. Defina a localização do disco do sistema na máquina física
6. Defina o tamanho do disco
O tamanho recomendado do disco é de 300 G. O código-fonte do sistema Android é bastante grande (o código-fonte do Android 10 baixado na época era de quase 100 G) e a compilação subsequente será de cerca de 200 G, caso o espaço em disco seja insuficiente, fazendo com que o sistema Android falhe ao compilar.
7. Defina a memória e o processador do Ubuntu
Defina a memória para 16G (recomenda-se definir a memória para 16G, se for muito pequena, haverá muitos problemas anormais, como estouro de memória, etc., e vários problemas estranhos), e o processador é de 8 núcleos. Além disso, deve-se notar que no processador, você precisa marcar o VT virtualizado, caso contrário, depois que o sistema Android for compilado com sucesso, o emulador do Android não poderá ser iniciado com o comando do emulador.
Clique em Concluir, o sistema Ubuntu pode ser instalado na VM
O Ubuntu após a instalação bem-sucedida é o seguinte: Neste ponto, a instalação do Ubuntu 20.04 na VM está concluída.
4. Baixe o código-fonte do Android
Antes de baixar o código-fonte do Android, você precisa instalar a biblioteca de dependência de compilação e baixar a ferramenta.
1. Instale o git
sudo apt-get install git
Depois que a instalação for bem-sucedida, verifique a versão do git
git --version
A versão git aparece, ou seja, a instalação foi bem-sucedida
Depois de baixar o git, configure uma conta git
git config --global user.email "[email protected]"
git config --global user.name "xxxxx"
2. Instale o jdk
sudo apt-get install openjdk-8-jdk
3. Configure a variável de ambiente PATH
mkdir ~/bin
echo "PATH=~/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc
4. Instale a biblioteca curl
sudo apt-get install curl
5. Baixe o repositório e defina as permissões
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
6. Instale o Python
sudo apt-get install python
Verifique a versão do Python
python --version
Se você vir a versão do python, a instalação foi bem-sucedida
baixar código fonte
1. Crie o diretório do código-fonte do Android:
mkdir source
cd source
mkdir android_10
cd android_10
2. Defina o endereço do repo, a fonte tanna usada aqui:
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
3. Inicialize o warehouse:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
4. Faça a versão do Android e inicialize:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r10
5. Comece a sincronizar a fonte do código:
repo sync
O código-fonte do Android é muito grande e precisa ser sincronizado por muito tempo. Se houver um local travado por muito tempo durante o processo de sincronização, você pode usar ctrl+z para interromper a sincronização e repo sync para sincronizar
Compilar o código-fonte
1. Instalar dependências
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
Haverá dois problemas nas dependências de instalação acima
(1) A instalação do sudo apt-get install libesd0-dev relatará o erro Não foi possível localizar o pacote libesd0-dev
Solução:
sudo gedit /etc/apt/sources.list //在行尾添加如下两行的内容
deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe
(2) 安装sudo apt-get install lib32ncurses5-dev可能报"lib32ncurses5-dev : Depends: libncurses5-dev (= 6.0+20160213-1ubuntu1) Incapaz de corrigir problemas, você manteve pacotes quebrados."
Solução:
1. Instale o aptitude
sudo apt install aptitude
2. Instale lib32ncurses5-de
Deve-se notar que a instalação deste lib32ncurses5-de precisa ser alterada para autoridade root (a primeira instalação da senha root do Ubuntu é aleatória, você pode usar sudo passwd root) para inserir ou modificar a senha
sudo passwd root
Use su para entrar para alternar para o usuário root
su
Basta digitar a senha root. Há um # na frente da linha de comando do usuário root, ou seja, mude para o superusuário e instale lib32ncurses5-de
aptitude install lib32ncurses5-dev
Ao instalar, você será perguntado se deseja manter a versão atual, primeiro digite n e, em seguida, se deseja fazer o downgrade, digite y
começar a compilar
source build/envsetup.sh
lunch 21 (X86版本)
make -j8
Aqui -j8 significa permitir que 8 threads participem da compilação. Este número geralmente corresponde ao número de núcleos da CPU * 2. Você pode visualizar informações relacionadas à CPU através de cat /proc/cpuinfo.
A compilação foi bem-sucedida, conforme mostrado abaixo
Iniciar o emulador
emulator
Executado com sucesso, este é o código-fonte do Android compilado manualmente por nós mesmos.