系统开发 (二)Aosp编译
环境 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
系统开发 (二)Aosp编译相关推荐
- 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...
- 蓝牙mesh系统开发二 mesh节点开发
前言 在开发蓝牙mesh系统中,使用泰凌微8258的蓝牙作为节点方案,本章讲解通过8258搭建普通mesh节点,ble mesh基础可以点这里 SDK获取 下载SIG MESH SDK mesh项目工 ...
- Android系统篇(二)——Android编译核心Build系统
<深入解析Android5.0系统> 一书笔记 Android的Build系统非常的庞大,他是基于GUN Make以及shell来构建的,我们主要的面对方向是Android.mk文件,这也 ...
- windows下进行嵌入式系统开发工程管理编译方案
在windows下进行 arm工程管理及编译方案中,很多小项目均采用现有成熟大型的开发平台,如keil或者IAR,其优点是简单易上手,创建工程相对比较简单,并还提供相应的在线单步调试功能,但灵活性不好 ...
- 超级微商系统开发,社交电商3.0时代的概念
超级微商系统概况 社交电商3.0时代 社交电商"新"在哪,微商未来的出路在何方? 微商兴起到至今已经有6个年头,经历6年的起起伏伏,模式一直在更新迭代,适应时代的发展需求. 格力. ...
- 嵌入式系统开发 (复习笔记)
此书作者:李宥谋 主要是通过设计的ARM指令集和cpu内部的寄存器在内部的定时器的控制下工作.来完成数据运算处理和中断异常处理,外部数据通信通过连接外设接口处理. 目录 一.系统概述 (1)系统的概述 ...
- 竞拍秒购电商系统开发需求和功能架构分析
以下是竞拍秒购电商系统开发相关的功能模块和解析.市面上类似竞拍电商平台有这些品牌.例如:盒格速M,太爱速M,众城优选,贝源拍,美里生活,恩家拾惠都属于这些类型. 竞拍秒购电商系统的功能有这些: 会员系 ...
- 独立完成系统开发一:项目简介
独立完成系统开发一:项目简介 从工作到现在也有很长一段时间了,在这段时间里经历了很多同时也学到了很多.当然我也意识到了一个问题,哪就是如果仅仅是在工作中重复的去做一些类似于curd之类的事,没有将所学 ...
- 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上
博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813 本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...
- 开源系统_二次开发(转)
转自http://www.phpchina.com/portal.php?mod=view&aid=40204, 更多详细资料请参看原文 最好最实用的二次开发教程 ◆二次开发 什么是二次开发? ...
最新文章
- C++ 笔记 2 (C++ primer)
- matplotlib xticks 基于 旋转_数据可视化之 matplotlib 绘图篇
- Ubuntu Linux 18.10下面安装魔法门之英雄无敌3
- 解决git clone报错SSL certificate problem
- Linux查看主板的相关信息
- 给定数组A []和数字X,请检查A []中是否有对X | 使用两个指针算法,O(1)空间复杂度| 套装2...
- shell foreach 拼接字符串_FIND_IN_SET 及IN 处理逗号间隔的字符串参数
- vb一个使用URLDownloadToFile实现文件下载的类
- 让你的代码量减少3倍!使用kotlin开发Android(四) kotlin bean背后的秘密
- sql 查出表转换为html,如何执行表中的sql语句并将其转换为html
- mysql计算同比和环比的区别_Mysql同比环比统计
- NOIP模拟19/07/22
- AMA回顾|走进“元宇宙工厂”BreederDAO
- 九年级计算机课程教案,九年级信息技术 5.2.3《计算机网络》教案
- 有哪些适合大学生投稿的普刊(社科类)?
- 13-反向传播法求梯度
- office修复找不到msi_Microsoft Office安装程序找不到ProPlus.WW\ProPlusWW.msi 弄不了
- freeSurfer颅骨剥离
- 【VPD】使用Oracle VPD(Virtual Private Database)限制用户获取数据的范围
- 输入整数n,其中0<n<7,输出用n、n+1、n+2、n+3这4个数字组成的无重复数字的3位数
热门文章
- 【转】 什么是Transact-SQL?
- 不看不见de视觉,不知不觉de设计
- 多事之秋:不怕贼偷,就怕惦记
- iOS 开发中农历与公历的转换,星座计算。
- CPU「主频」是什么,有哪些限制条件,对于 CPU 性能的影响有哪些?
- ZY---C语言指针
- MDK编译出现*.axf: Error: L6218E: Undefined symbol 问题解决方法
- 如何看懂IIS服务器网站日志
- RuntimeError: cuda runtime error (30) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:50
- 使用Atmel Studio开发Arduino的ATmega328P单片机