Android10.0源码下载

平台:Ubuntu20.04.3Lts

Android版本:10.0

镜像使用:科大讯飞 AOSP 镜像使用帮助 — USTC Mirror Help 文档(清华镜像我用的时候repo manifest失效404)

1.代码下载

1.1 git下载配置

//下载安装git,这个步奏应该都会的,没难度
sudo apt-get install git
//配置git的name和email
git config --global user.name "xxxx"
git config --global user.email "xxxx@126.com"

1.2 repo工具下载

//吐槽:一开始用的网上的清华网址,发现repo中是404无法找到资源,不知道是和当时的网络有关还是啥后来换成了科大的

//新建bin文件夹
mkdir ~/bin
//将repo添加到环境变量中,方便后面全局都可以用
PATH=~/bin:$PATH
//下载repo文件,在下载之前如果没有安装curl工具的话,很简单,用sudo apt-get install curl装好,这个地方吐槽下,只用全面的repo不加后面master的话,下载下来的repo里面为网页内容,所以还是按照下面的命令执行下载repo吧
curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
//赋予权限,这一步不需要纠结
chmod a+x ~/bin/repo

1.3 新建工作目录(你爱建哪儿就建哪儿)

mkdir work
cd work

1.4 初始化仓库

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
## REPO_URL = 'https://gerrit.googlesource.com/git-repo'
看到repo has been initialized in /home/lirongchen/work输出就ok了

//接下来准备下代码咯
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b  android-10.0.0_r3

//开始下载吧,参考大佬备注:同步镜像,j4 指定线程数量,线程数量=CPU核心数*2,开始漫长的等待
repo sync -j4

//坑坑坑,这一步如果报了这个错,只需要执行一次CP动作(已经提示好了):cp /home/lirongchen/work/.repo/repo/repo /home/xxx/bin/repo
repo: Updating release signing keys to keyset ver 2.3

... A new version of repo (2.29) is available.
... You should upgrade soon:
    cp /home/lirongchen/work/.repo/repo/repo /home/lirongchen/bin/repo


Your identity is: xxx <xxx@126.com>
If you want to change this, please re-run 'repo init' with --config-name

//成功啦成功啦,下载完成

//下载下来的目录如下

小结:感觉也没什么难的,主要是找对镜像,按步骤操作就行了,期间又安装了一个python和vim,用vim改了一下REPO_URL = 'https://gerrit.googlesource.com/git-repo

2 源码编译

2.1这一步很简单,先安装一堆依赖,网上百度一堆,复制粘贴回车

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
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
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

2.2安装好上面的依赖后,进入关键信息啦

cd 到源码目录中执行以下命令

source build/envsetup.sh //这一步的作用是加入可执行指令,比如后面的lunch
lunch aosp_x86-eng
make -j32(这里的32取决于你电脑的CPU,一般j4就行了,我是因为用的是服务器编译的)
//最后执行emulator启动模拟器
emulator
//这一步执行完了,理论上你就能看到丑陋的原生界面了,啥也没有

小结:由于找人给我开了个服务器,编译这块我本地电脑花了差不多7个多小时编译成功了,后来在服务器上编译,只需要40分钟左右就编译好了,不得不说服务器牛逼啊

3.接下来的步奏就个人自己探索了

目标1:用AS创建虚拟机,然后用自己刚才编译的img文件替换掉AS自己下载的img,也就是启动的虚拟机是自己编译出来的

目标2:更改Settings模块,在里面oncreate加一行log,然后单编Settings模块,替换掉系统的

目标1开始:

3.1这一步我先用AS创建了一个虚拟机,记住这一步在选择CPU架构的时候一定要选择和你编译时候选择的架构一样,比如我编译的都是x86平台的,正常的下载呗,最后启动成功

3.2从服务器上下载自己编译好的img来替换掉as生成的,替换的目录如下:

/Android/sdk/system-images/android-29 (android-29是因为我下载的是10.0的对应的就是29的文件夹)

需要替换的文件如下,记住:::要用编译好的-qemu.img结尾的来替换,同时替换的时候要将-qemu.img给去掉,比如替换system.img文件,你需要用编译好的system-qemu.img,然后重命名为system.img,替换掉sdk里面的system.img,其他的同样操作,还有build.prop文件在system目录下,直接将其拷贝到sdk下面,一定要替换这几个文件,不然模拟器起不来

advancedFeatures.ini
system/build.prop
encryptionkey.img
kernel-ranchu-64
ramdisk-qemu.img
system-qemu.img
userdata.img
vendor-qemu.img
VerifiedBootParams.textproto

至此目标1实现

接下来开始搞目标2

3.3单编Settings模块

source build/envsetup.sh //这一步的作用是加入可执行指令,比如后面的lunch
lunch aosp_x86-eng
mmm package/apps/Settings/
//编译出的APK文件我找了好久,最后在/out/target/product/generic_x86/system/product/priv-app/Settings/下面
如果找不到可以用find命令
find . -name 'Settings.apk'

然后就是替换,

adb root 这一步非常简单,没有问题

adb remount 这一步不行,么有权限

//用adb remount最好用emulator命令启动模拟器,as直接启动我还没试过,回头试一下通过这种方式能不能remount成功
//用命令emulator启动会报错:Missing emulator engine program for 'x86'
//翻了好久的百度终于找到一个可以使用的
//将sdk/emulator这里面的所有文件拷贝到sdk/tools下面,重复的直接替换,然后关闭掉cmd窗口,重新打开

//adb remout 
//1.用这个命令 emulator -writable-system -avd 'name'启动模拟器
emulator -writable-system -avd Pixel_XL_API_29
//第二步,执行adb root
adb root
//第三步,重启
adb reboot
//第四步,起来后再次adb root
adb root
//第五步,执行adb remount成功
adb remount
//第六步,替换apk
adb push xxx.apk /system/product/priv_app/Settings/
//第七步,重启
adb reboot
//第八步,见证奇迹
AS logcat查看日志,自己加的日志成功啦

 经过实践:想要启动的模拟器支持remount,必须使用“emulator -writable-system -avd Pixel_XL_API_29”这个命令启动方可,记下来自己随便造吧!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值