IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android framework开发之源码编译 -> 正文阅读

[移动开发]Android framework开发之源码编译

前期准备工作:
sudo apt install repo
sudo apt install curl

1.安装git仓库
sudo apt-get install git
git config --global user.email “test@test.com”
git config --global user.name “test”
通过执行以下命令实现repo工具的下载和安装
2.安装repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
repo环境变量配置

  1. echo ‘export PATH= P A T H : PATH: PATH:HOME/bin’ >> ~/.bashrc
  2. export PATH= P A T H : PATH: PATH:HOME/bin
    下面参考AOSP(Android) 镜像使用帮助
    https://mirrors.ustc.edu.cn/help/aosp.html (ps:新的帮助文档老的已废弃)

初始同步方法 2Permalink
按照 Google 官方教程 https://source.android.com/source/downloading.html
将 https://android.googlesource.com/platform/manifest 替换为 git://mirrors.ustc.edu.cn/aosp/platform/manifest 。
具体做法摘录如下(以防墙抽风):
首先下载 repo 工具。
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

如果上述 URL 不可访问,可以用下面的:

curl -sSL ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT’ |base64 -d > ~/bin/repo

chmod a+x ~/bin/repo

然后建立一个工作目录(名字任意)
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

初始化仓库:
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest

如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:

REPO_URL = ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo’

3.安装指定版本的Android源码
AOSP | 镜像站使用帮助 | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror
清华大学镜像不稳定了
repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-6.0.0_r6

repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-9.0.0_r9
如果要同步10.0 androidQ用下面的地址
repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r10

repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-8.1.0_r45

repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-7.0.0_r9
android11我使用 外国语大学的镜像同步的
repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r37
repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r27
repo init -u https://mirrors.bfsu.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r17

repo初始化完成后开始同步代码
repo sync
repo同步出错解决方案:
https://www.cnblogs.com/jiangxinnju/p/14274982.html

安转opengjdk
OpenJDK 1.6 下载地址
OpenJDK 1.7 下载地址
OpenJDK 1.8 下载地址
OpenJDK 1.9 下载地址
下载一致版本的三个安装包:
openjdk-7-jre-headless_7u121-2.6.8-1ubuntu0.12.04.3_amd64.deb
openjdk-7-jre_7u121-2.6.8-1ubuntu0.12.04.3_amd64.deb
openjdk-7-jdk_7u121-2.6.8-1ubuntu0.12.04.3_amd64.deb

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export CLASSPATH= J A V A H O M E / l i b : JAVA_HOME/lib: JAVAH?OME/lib:JAVA_HOME/jre/lib
export PATH=: J A V A H O M E / b i n : JAVA_HOME/bin: JAVAH?OME/bin:JAVA_HOME/jre/bin: P A T H e x p o r t J R E H O M E = PATH export JRE_HOME= PATHexportJREH?OME=JAVA_HOME/jre
export LC_ALL=C
如果是安装openjdk7要结合下面链接一起参考:
https://blog.csdn.net/u014735704/article/details/82929808
Ubuntu18.04安装openjdk 7
1.首先需要下载 jdk7 以及 jdk7 依赖的类库:
openjdk-7-jdk
openjdk-7-jre

openjdk-7-jre-headless

libjpeg62-turbo

libfontconfig1

fontconfig-config

2.下载的时候要选择和自己平台匹配的 deb 包,我安装的是 64 位的 Ubuntu 系统,所以我下载的是 arm64 的 deb 包。然后把下载的这六个 deb 文件放在一个空文件夹里面,执行以下命令:
sudo dpkg -i *.deb

如果出错,接着执行下面命令
sudo apt-get -f install

执行下面的命令查看当前安装的所有 jdk 版本:
update-java-alternatives --list

设置系统默认jdk 版本

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-openjdk-amd64/bin/java 1071
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac 1071
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/java-7-openjdk-amd64/bin/jar 1071
sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/java-7-openjdk-amd64/bin/javah 1071
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/java-7-openjdk-amd64/bin/javap 1071

执行下面命令切换你要用的版本:
sudo update-alternatives --config java

sudo update-alternatives --config javac

sudo update-alternatives --config javah

sudo update-alternatives --config javap

安装依赖android6.0
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g+±multilib
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 lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

//android 7.0以上包含7.0
sudo apt-get install openjdk-8-jdk
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 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

sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev

依赖安装完之后:
source build/envsetup.sh 或者 . build/envsetup.sh
lunch
这里6.0的话选择第一个arm-eng的版本,10.0建议选择aosp_x86-eng的版本
make
下图是6.0源码成功编译的截图:

在这里插入图片描述
最后一步命令:
emulator 即可启动模拟器
可能会遇到以下错误:
在ubuntu虚拟机中,使用X86_64架构的Android模拟器,有时候会出现如下错误:

emulator: ERROR: x86_64 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.

CPU acceleration status: KVM is not installed on this machine (/dev/kvm is missing).
vmware中启动模拟器时报错kvm遇坑解决 vmware cpu先开启嵌套虚拟化

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
sudo adduser id -un libvirtd
sudo adduser id -un kvm
sudo kvm-ok
设置完成之后重启虚拟机,然后再启动emulator,一切正常!
参考连接:
https://blog.csdn.net/fengxingzhe001/article/details/78060126

//单独编译Settings模块
mmm packages/apps/Settings/
make snod
//清除数据启动模拟器
emulator -wipe-data
sdk编译
SDK的编译和模块编译非常相似,其命令如下:
首先是初始化编译环境:

source build/envsetup.sh
接下来是设定编译目标

lunch sdk-eng
最后通过以下命令编译SDK
make sdk
出现以下提示表示编译完成,不出意外,在out/host/linux-x86/sdk就可以看到了:
注:SDK编译完后,之前编译的system.img等文件会被删除,所以,在编译SDK之前,建议自行备份一下.当然,如果被移除了也没关系,可以通过make命令再编译.
另外,某些命令也会删除sdk,因此在编译SDK后,我们将其备份到另外一个目录,以备不时之需

如果编译的是x86的版本,虚拟器要开启嵌套虚拟化:
下面时Hyper-V工具开启嵌套虚拟化的方式
https://www.idcsmart.com/helps_content/159.html

//android10.0编译详解
https://blog.csdn.net/yiranfeng/article/details/109082489

命令说明:
croot 切换到源码树的根目录
m 在源码树的根目录执行 make
mm Build 当前目录下的模块
mmm Build 指定目录下的模块
cgrep 在所有 C/C++ 文件上执行 grep
jgrep 在所有 Java 文件上执行 grep
resgrep 在所有 res/*.xml 文件上执行 grep
godir 转到包含某个文件的目录路径
printconfig 显示当前 Build 的配置信息
add_lunch_combo 在 lunch 函数的菜单中添加一个条目

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:13:24  更:2021-08-13 12:15:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:44:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码