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 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> mac下编译android源码避坑指南(新) -> 正文阅读

[移动开发]mac下编译android源码避坑指南(新)

截至目前mac环境下android源码编译最新避坑指南

避坑方法

源码、SDK、机型版本一定要清楚,有些特殊的版本需要特殊的方法,官网可能有说明,之前看别人的blog,大家写得都差不多,但由于我的os比别人新,系统使用的sdk位置被改了。。。,还有我机型比较特殊(pixel 2 xl),这个需要加一条特殊命令才能使驱动可用。。。,我不敢保证其他机型没有这种情况,所以出现奇怪的问题时最好仔细看看官网教程。

配置(不说配置的都是耍流氓)

os: macos11.3.1
SDK: 10.15(注意不要看错了,我之前下成了10.1.5。。。)
Java Version: 1.8
android源码:android-10.0.0_r1 代号、标记和细分版本号源码下载(根据对应代号、标记下载相应版本源码)
机型:Pixel 2 XL

下载

下载repo(一种源代码同步工具,类似于git),这儿加环境变量是为了方便使用repo同步源码树

mkdir ~/bin
PATH=~/bin:$PATH

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo   #使用tuna的git-repo镜像
chmod a+x ~/bin/repo                #为repo文件添加权限

#为了能够到tuna上找镜像,需要将bin文件夹下的repo文件中的REPO_URL更改
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
#改为
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

初始化repo客户端
这儿需要注意的是macos上默认的文件系统是不区分大小写的,而android源码是区分大小写的,所以不能直接放在默认的文件系统上,方法一:在文件系统上分区(这儿要选择区分大小写,日志式);方法二:在外置移动硬盘上进行分区(同样选择区分大小写,日志式),如果外置移动硬盘已经是该格式,则不需要做该操作。我出于内置ssd空间大小的考虑,采用了第2种方法,这里建议分个300G以上。

#建立工作目录,工作目录可以改成任何你喜欢的名字,这儿建议改成android版本,
#例如android_10。由于我是在外置的磁盘上放入android源码,
#因而该目录放在外置磁盘区分大小写和日志式的分区下。
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

#初始化仓库
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

#下载特定的android版本(我这儿下的是android-10的第1个版本),
#不加-b xxxx会默认下载最新版本。
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r1  

下载android源码树

repo sync

编译

编译一时爽,翻车火葬厂,这儿是踩坑最多的地方,虽说命令就那么几条,但可能报各种错误。
准备工作

  • 第一步
    mac下需要下载xcode,注意这儿新版xcode使用的sdk路径很可能不是/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/,可以使用xcrun --show-sdk-path命令查看xcode使用的sdk路径,我这儿是放在/Library/Developer/CommandLineTools/SDKs/目录下,把sdk10.15(强烈建议使用这个,使用别的虽然在修修补补之后也能成功,但可能需要几个小时才报错。。。) 放在前面的目录下,然后在 ./build/soong/cc/config/x86_darwin_host.go (.表示android源码根目录,就是那个WORKING_DIRECTORY目录)中的darwinSupportedSdkVersions添加一个10.15(就是刚才放入对应目录下的sdk版本)。
    在这里插入图片描述
  • 第二步
    驱动下载
    一定要下载对应机型对应android版本的驱动,将两个文件下载后,均解压,放在android源码的根目录下。下图为我需要下载的驱动版本,你根据自己需要进行选择。
    在这里插入图片描述

现在才可真正地进入编译了(祝你一帆风顺)
这里需要进入进入到android源码根目录,cd到WORKING_DIRECTORY中。

#可以换成make clean,它用来清除上次编译的产物,
#第一次编译可不用这条命令,后续编译需要加这条命令
make clobber  

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

#选择与设备对应的编译版本,
#可查看https://source.android.google.cn/setup/build/running?hl=zh-cn#selecting-device-build
lunch 

#x是一个数字,选择机器核的个数的两倍最为适宜,我机器为6核,则x取12,make -j12
make -jx   

第一次编译至少得3h吧,如果没啥报错的话,最终会正常退出,显示出一条绿色成功的消息,告诉你编译花了多长时间。

烧录

本来编译完之后,剩下的事情应该很轻松了,但我却踩了个大坑,原因就是这个机型特殊,我们先看官方教程
在这里插入图片描述它说只对loader版本早于TMZ20a的Pixel 2 XL机型使用(这里我要吐槽一万遍),好家伙,我按照别人的烧录过程做了一遍又一遍,总是出现开机启动界面和bootloader界面无限重启的现象,结果是这个原因。。。,所以各位在遇到奇怪的问题或是别人没遇到的问题时,一定要仔细看看官方教程,我不敢保证除了这一个机型或者android源码,其他不需要加些额外的东西。

那么知道了这个之后,就可以正常烧录了。如有不清楚的地方,请看官方烧录指南

#首先设置一下ANDROID_PRODUCT_OUT,这个变量就是告诉手机到电脑的哪里找镜像烧录。
echo ${ANDROID_PRODUCT_OUT}      #如果输出为空,则说明未设置,否则已经设置
#这儿是我编译好的镜像所在目录,你设置成你自己的,
#由于这里我为省事,没有加入环境变量,电脑重启后需要重设,当然也可以选择加入环境变量
ANDROID_PRODUCT_OUT=/Volumes/AOSP/android-10/out/target/product/taimen    

#解锁
fastboot flashing unlock    #对于新款设备(2015 年及之后发布的设备)
fastboot oem unlock         #对于老款设备(2014 年及之前发布的设备)
fastboot flashing unlock_critical     #这条命令只有我这个奇葩机型需要,不过别的机型可能需要别的,哈哈哈
#注:很多设备可能只需第一条命令fastboot flashing unlock即可


adb reboot bootloader     #进入fastboot模式(或长按Volume Down + Power键)
fastboot flashall -w      #刷机

正常情况下,刷机后,手机会自动重启,能正常开机则成功了

注意事项

本教程还未经过验证,这是我编译、烧录完之后隔了一段时间才想起来写的,可能有些内容写得不够详细,但一些很关键的问题我都有指出,如有问题,请不吝指正。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:33:24  更:2021-12-04 13:34:19 
 
开发: 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年11日历 -2024/11/24 6:41:49-

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