系统开发 (二)Aosp编译

【AOSP】手把手教你编译和调试AOSP源码 源码同步完成后,即可进行第二步以后的操作。后,我们需要在虚拟机上手动打开系统设置,然后就可以进行调试了。在开始之前,我们先安装编译AOSP需要的一些系统基本依赖,如下命令。(2)打开左侧的Project,配置SDK,选择刚才添加的SDK。假设电脑已经包含了git工具,接下来需要同步源代码,命令如下。回到代码主编辑器窗口后,首先找到关键的代码打断点,然后点击。按钮连接到模拟器,就可以看到代码的调试效果了。有一定的了解,但还没有真正实践,这篇文章很适合你。的简称,谷歌官方提供了该工具,可以方便的进行基于。 阅读详情

环境 ubuntu 18.04

一 安装所需依赖

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

参照官方文档

二 JDK环境

sudo apt-get install openjdk-8-jdk

sudo vim /etc/profile

追加

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

三  编译过程中的错误处理


1  flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? ‘cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’ ???
Aborted (core dumped)

解决办法:
在~/.bashrc最后添加export LC_ALL=C     (  去除本地C化,使得Android的编译工具与本地工具不冲突。)
然后 source ~/.bashrc

// 注意恢复 export LC_ALL=C

2 Jack server failed to (re)start, try 'jack-diagnose' or see Jack server log
SSL error when connecting to the Jack server. Try 'jack-diagnose'
SSL error when connecting to the Jack server. Try 'jack-diagnose'
[ 29% 9406/31906] target thumb C++: libandroid_runtime <= frameworks/base/core/jni/android/graphics/pdf/PdfEditor.cpp
In file included from external/pdfium/core/include/fpdfapi/fpdf_module.h:10:0,

解决办法:

Remove TLSv1, TLSv1.1 from jdk.tls.disabledAlgorithms in /etc/java-8-openjdk/security/java.security file
Restart the jack server: cd /prebuilts/sdk/tools/ ./jack-admin kill-server ./jack-admin start-server 
 

curl - Rebuild android code with error “SSL error when connecting to the Jack server. Try 'jack-diagnose” - Stack Overflow

3 Out of memory

Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx'.

fix

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server 

四 编译 Android  Soong 编译系统 

使用 envsetup.sh 脚本初始化环境:

source build/envsetup.sh

选择目标

lunch

使用 lunch 选择要构建的目标。lunch product_name-build_variant 会选择 product_name 作为需要构建的产品,并选择 build_variant 作为需要构建的变体,然后将这些选择存储在环境中,以便供后续对 m 和其他类似命令的调用读取。

lunch aosp_arm-eng

make -j8       

//    m (make systemimage)  mm mma

make:根据lunch选项,编译Android系统,最后产出为:system.img,ramdisk.img,userdate.img
m:和make命令一样
mm:从当前目录下开始向下编译目标
mmm:指定一个目录,仅编译指定目录下的目标
make snod:只将out/target/product/XXX/system/目录下的内容打包生成system.img,不会检查依赖关系
make bootimage:只将out/target/product/XXX/root/目录下的内容打包生成ramdisk.img

//编译生成 system.img  userdata.img ramdisk.img 

<漫漫Android路>AOSP源码获取编译及问题处理 AOSP源码获取 Ubuntu22.04编译 Android源码准备 阅读详情

相关推荐

AOSP 编译系统 (Android build system)

AOSP 编译系统是一个。

allnlei的专栏 1198

AOSP的编译及刷机

众所周知,Android是开源的,AOSP(Android Open Source Project)为Android开源项目的缩写。作为一名Android开发,掌握Android系统的工作机制是技术成长中的必经之路,第一步就是自己编译Android系统。这里是Google官方的推荐要求:https://source.android.com/setup/build/requirements?hl=zh-cN参考文档:https://source.android.com/source/initializing?

qq_34231329的博客 8313

AOSP 编译&刷机

AOSP 编译&刷机 文章参考 AOSP 编译和烧写 文章目录AOSP 编译&刷机1. 简介2. 准备2.1 编译系统准备2.2 源码下载2.2.1 查找驱动2.2.2 查找分支2.2.3 下载源码2.2.4 放置驱动3. 编译3.1 环境变量3.2 设置构建3.3 编译源码3.4 编译 adb fastboot4. 刷录镜像 1. 简介 自己喜欢折腾, 想要自己修改源代码, 编译...

Jeson 笔记 3092

AOSP13 lunch函数的注释级解析

lunch操作是在编译Android之前必须执行的一个操作,它实际上是调用了/build/envsetup.sh脚本中的lunch()函数。下面就对该lunch()函数进行一些说明。

a2516110的博客 1007

MACOS下从零开始编译AOSP踩坑记录

macos编译AOSP一步一步到踩坑

Yumito的博客 7060

AOSP 编译并导入Android Studio

文章目录AOSP 编译并导入Android Studio1 构建编译环境1.1 硬件要求1.2 操作系统要求1.3 JDK要求1.4 其他要求2 下载源码2.1 使用每月更新的初始化包2.1.1 下载aosp-latest2.1.2 解压到工程目录2.1.3 同步代码2.2 传统初始化方法2.2.1 初始化仓库2.2.2 同步代码2.3 分支切换3 编译源码3.1 初始化编译环境3.2 选择编译目...

I think 2939

Android系统源码_AOSP开发(二)从下载系统源码到编译系统镜像

详细记录Android系统源码从下载到编译的整个流程。

AfinalStone的专栏 1万+

安卓Aosp系统源码下载

aosp系统源码下载和编译收集编译中的错误以及解决方法。

shanzhuli的博客 1475

编译Android14 AOSP记录

编译android14 aosp

吃肉会瘦 3476

Aosp源码编译及pixel手机刷机

一:简介 本文主要介绍一下如何下载aosp源码,打入对应的驱动包并基于工厂包刷一个完全由自己编译的aosp镜像包 基于此文,并不能修改驱动或内核,但可以修改hal层和framework以及aosp包中的应用程序 PS(工厂包是集成的google应用的版本,是商用的。替换工厂包中的image后,才可以刷纯原生的开发包) 目前我使用一台pixed3XL的手机来测试,所以下面的示例都是以pixed3XL为标准,读者使用时需以自己手上的go...

lizhenjun114的专栏 4146

AOSP编译刷入Pixel

一、下载aosp 下载aosp压缩包https://source.android.com/setup/build/downloading 解压后执行 repo sync 二、切换相应分支 #查看当前所有分支 cd .repo/manifests git branch -a #切换自己想要编译的分支 repo init -b android-10.0.0_r6 //这里我们选择An...

cl769796350的博客 2455

kali系统AOSP源码编译

kali系统AOSP源码编译 文章目录kali系统AOSP源码编译前言一、编译准备1.修改`zsh`为bash2.安装`openjdk-8-jdk`3.修改默认Python版本4.添加环境变量二、下载Android源码,编译1.下载源码2.配置编译环境3.编译前4.编译三、总结 前言 ​ 本文记录Kali2022编译AOSP源码过程。 版本:android-8.1.0_r1 手机:Nexus 5x 虚机配置:4C8G ,400G固态盘存储 一、编译准备 1.修改zsh为bash # 修改bash c

StepTp的博客 4269

aosp定制android系统

全称 Android Open Source Project 是指Android开源项目,它是由Google主导的一个开源项目,旨在提供一个完整的、开放的、自由的移动操作系统平台,为什么要定制自己的安卓系统呢,我们现在用的安卓手机都是基于aosp魔改的,其中许多功能都被厂家限制了,比如root,虽然可以借助面具获取root权限,但是像部分华为手机是不支持解bl锁的,那也就无法root了. 以及root后可能引起的部分软件功能异常,银行类app直接闪退,支付宝无法刷脸.如果可以定制自己的安卓系统,从源码修改

4434

Android Build系列专题【篇二:AOSP编译流程】

众所周知,Android系统其实就是一个运行在Linux系统上面的应用桌面程序,当然这样概括可能不是很准确,但是他们的编译确实异曲同工之妙。 在Linux系统中,我们可以通过make命令来编译代码。执行Make命令默认会在当前目录找到一个Makefile文件,然后根据Makefile文件中的指令来对代码进行编译(makefile语法课参考《GNU make中文手册》)。也就是说make命令执行的是Makefile文件中的指令,Makefile文件中的指令可以是编译命令(例如gcc,也可以是其它命令)。

qq_27672101的博客 1万+

Android系统 10.0 AOSP源码编译(二):AOSP源码下载

配套系列教学视频链接: Android 10.0 AOSP源码编译:https://edu.youkuaiyun.com/course/detail/35479 说明 系统:AOSP Android10.0 设备:Android模拟器 前言 本章节重点介绍如何下载谷歌官方的AOSP源码。 一,版本说明 谷歌发布新版本源码之后, 芯片原厂会根据自己的芯片特性进行适配,因为原厂适配Android系统更专业和稳定, 所以在实际开发中,我们都是从原厂或者方案公司那里获取到针对某个特定芯片的特定版本源码,当.

ldswfun的专栏 2019

Pixel 4 AOSP源码编译及刷机

先吐槽,Google的代码和文档写的是真烂。完全根据他的文档来操作是完不成Pixel 4 AOSP源码编译和刷机这个事情的。经过痛苦的挣扎,最后终于刷机成功了。 代码下载

JobService 触发deviceidle条件(源码分析) 5053

AOSP编译(项目整编、模块编译、其他补充)

本文详细介绍了Android开源项目(AOSP)的编译方法,包括整编和模块编译两种方式。整编部分讲解了标准AOSP编译系统(make命令)和厂商自定义编译系统(如./mk项目名)。模块编译方面重点阐述了基本原理、判断方法和具体操作步骤(mm/mmm命令),并以Settings和SystemUI为例进行说明。文章还详细介绍了adb install/push的使用场景和区别,分析了Android.mk和Android.bp文件的编写要点,以及设备解锁的必要性和具体操作流程。最后补充了MTK平台和特定项目的模块编

林大大的博客 2056

编译Android14 AOSP原生代码并在X86模拟器中运行

最近在研究Android Entreprise部分的特性,需要在Android手机上分析WorkProfile相关的源码,因为新买的Pixel样机还未到货,看了几天Android源码,迫切需要上真机对比分析。又听说最近几年Android模拟器已经有些进步,至少性能比以前好多了,于是打算把Android Studio中废弃多年的AVD跑起来。一试,果真性能有进步,不算流畅,但点击操作没以前那种老马拉大车的感觉,所以打算切换到模拟器环境下,凑合用几天等真机。

胡同老道的博客 8235
上一篇: 系统开发 (一)Aosp 下载
下一篇: 系统开发 (三) 运行模拟器
江太翁
博客等级 码龄15年 271粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值