【Android】【转型】【系统开发】应用到framework从0开始(一)

前言

本系列文章,给身为android应用开发得程序员,期望转型到android framework开发的工程师提供基础的入门教学,跟着本系列课程就能从应用开发入门到fw开发的门槛中,最终能够清楚FW开发是一个什么样的事情,以及大多数在岗的odm,oem厂商或者是外包服务商的FW开发工程师,他们每天的日常是什么,让更多的android应用开发者心中有数,自己是否能够转型去做android 系统的开发。

当前就业环境形式不好,为的就是给大家更多的选择,更好的规划自己的未来。

一.基础环境以及配置

1.1 基础的研发环境

软件环境:

1.2 硬件:

  • 内存32G——必要,编译系统是非常消耗内存大小的(可以试一试16G,不够用编译过程中会报错)
  • 固态硬盘300G——非必要,固态硬盘能够提升编译速度;机械硬盘也可以;aosp原生代码+编译产物大小<300G
  • pixel 设备(可以去某宝,某东买个二手),建议买pixel4以上机器——非必要,可以使用模拟器代替,但是刷机等操作,包括实用性,可玩性等等建议可以入手,包括后续面试都可以带着实体机给面试官看修改效果(ps:可以拥有一台自己专属得定制手机,不兴奋么。手动狗头)
    注意pixel购买的时候,跟商家说清楚,不管自带预装得android版本是什么,一定要跟商家确认是否可以自行刷机,否则OEM锁打不来,刷不了机,就白买了

二.代码下载

2.1 repo工具下载

aosp的代码是很庞大的,使用git是管理不过来的,所以aosp的代码会有多个仓库,通过repo工具进行管理

//在根目录下创建文件夹
mkdir ~/bin

//导入到环境变量
PATH=~/bin:$PATH

//repo下载地址
curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?		format=TEXT' |base64 -d > ~/bin/repo

//linux读写权限
chmod a+x ~/bin/repo

//修改repo URL,替换 REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
vim ~/bin/repo

//配置git
git config --global user.name "####" 
git config --global user.email "####@example.com"

//新建代码存放目录
mkdir ~/code
cd ~/code
mkdir aosp_android12_r27
cd aosp_android12_r27

2.2 repo 指定代码tag下载代码

如果我们买了对应的pixel设备,希望可以刷机实战,那么这里需要根据不同的tag下载对用自己pixel版本。博主的pixel 设备是pixel 3a XL,所以我就以自己的实战机为例子,来找一下TAG版本。
可以直接打开android开发者网站,查看tag
找到<源代码标记和 build>下面得表格
在这里插入图片描述

在这里插入图片源代码标记和 build描述
我们能看到这里build Id,标记(tag),支持得设备;其实我们这里就是根据自己pixel的版本去找到自己想要下载安卓aosp源代码。我的设备是pixel 3a xl,能够下载得最高的版本就是android-12.1.0_r27。咱们可以看到android13已经有了r41。13版本没有支持pixel3axl。所以我们这里就使用android-12.1.0_r27

	//知道对应的TAG,这里我们就可以repo init初始化仓库的所有配置信息,准备下载了
	repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b  android-12.1.0_r27
	
	//执行下载,-j4代表四个线程一起下载,理论上线程数越多,下载的越快,但是下载线程太多,可能导致下载出错,这里建议最大只使用-j4
	repo sync -j4
	
	//下载有时候会出错,所以我们这里使用脚本进行自动下载,失败后会自动重新下载
	sudo chmod a+x download.sh
	sh download.sh

2.3实机刷机驱动下载(使用模拟器略过)

驱动下载link
在这里插入图片描述
在根目录解压后,执行sh脚本,然后根据不愁同意许可输入对应内容,就会将驱动解压到代码的对应目录中,保证刷机

三.代码编译

3.1编译环境

执行以下命令,配置编译环境:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

可以结合https://blog.csdn.net/devnn/article/details/131868022这篇博客配置ubuntu 环境,其中换源更新也会更新ubuntu很多配置

没有实机得,使用模拟器的环境配置完成后,直接跳转到4.2章节看模拟器编译

3.2找到pixel对应lunch的代号(使用模拟器略过)

在这里插入图片描述

//初始化编译环境
. build/envsetup.sh

//选择需要编译的机型,比如我的pixel 3axl对应上图的bonita
lunch 
//看到对应的编号后,输入
6

//也可以直接lunch 6或者lunch aosp_bonito-userdebug
//最后开始执行编译,查看一下你的cpu现成最大数量,我的是12,这里不执行满,防止卡死
make -j10
等待编译结束

lunch后会出现,我们根据对应机型的名称进行选择就可以了
一般选择userdebug模式,这种模式可以理解为我们通过命令就可以root,之后我们刷机后,就相当于可以使用命令自由root,拿出系统中的内容
在这里插入图片描述

四.刷机/模拟器启动

4.1刷机(使用模拟器略过)

//开机情况下通过adb命令执行,进入bootloader模式
adb reboot bootloader

//在编译完成的产品根目录执行,即源码根目录下out/target/product/bonito/
cd ~/code/aosp_android12_r27/out/target/product/bonito/
fastboot flashall -w

等待刷机完成即可,如果刷不了,去开发者选项看下一下有一个oem锁,是否是关闭的,如果是关闭的,需要自行搜索一下OEM锁的打开教程

4.2 模拟器的使用

//有些产品,比如bonito,在lunch选择之后,即使编译成功了执行emulator,也不会有模拟器出来,因为不带有模拟器的image。所以android12上,我们需要添加模拟器的选择,先修改mk文件

//文本编辑器,或者vim打开,找到最后一行,添加 sdk_phone_x86_64-eng \
build/make/target/product/AndroidProducts.mk文件
     aosp_x86_64-eng \
     aosp_x86-eng \
+    sdk_phone_x86_64-eng \
. build/envsetup.sh
lunch sdk_phone_x86_64-eng
make -j10
//编译成功后执行
emulator

到这里,你就成功的拥有了系统开发的环境,可以开始定制专属于你自己的手机了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值