Andriod中如何新建lunch项

2023-10-27

Andriod编译过程一般为:

1.source build/envsetup.sh //加载命令,在项目根目录下(~/purple/code/a/A_code20211126/sdm660)目录

备注:在envsetup.sh里将执行vendor和device目录及各自子目录下所有的vendorsetup.sh,这些vendorsetup.sh做的事情是调用add_lunch_combo将它们各自的产品添加到 LUNCH_MENU_CHOICES 变量里,在lunch时会用到。

 

2. lunch       //选择平台编译选项

lunch命令是envsetup.sh里定义的一个命令,用来让用户选择编译项,来定义Product和编译过程中用到的全局变量。

备注:这里的product列表是用户在执行source build/envsetup.sh时,including了一些shell脚本,从而添加至产品列表的,与第一步对应上。

                                                              

3 .make       //执行编译

所有的操作是基于在A的项目基础上新建B的项目,即两个项目共用一套代码.

二 新增lunch项

1、 如果没有项目代码,需在本地仓中新建一个文件夹从库中拉一份代码下来,

需要使用repo命令下载一份代码  //下载代码

2、进入代码的device目录找到对应版本的配置文件路径

(~/purple/code/a/A_code20211126/sdm660/device/guideir/common)

该路径下有一个vendorsetup.sh文件,打开该文件,新增配置选项,如图:

下面一半是新增的版本型号,该文件会在lunch的时候去让用户选择编译什么版本。

 

 在~/purple/code/a/A_code20211126/sdm660/device/guideir目录下将A的目录复制一份且命名为B,然后修改B中的部分文件即可。cp –r A B

复制完成后需要修改部分文件的内容,我们将已经修改好的和之前的经行对比可以看到具体的修改点   meld A/ B/   

这样就可以去查看两个文件的修改情况。

在Andriod.mk文件中会去包含很多xml文件,最后会根据这些xml文件去配置编译选项。

这样,一个新的项目的lunch过程就基本完成了,后面只需要在对应的目录下去修改相应的文件即可。

小结:source build/envsetup.sh会调用add_lunch_combo函数添加很多单板信息进来,同时还会查找/device和/vendor下的vendorsetup.sh文件,查找深度为4级目录,找到后就执行它,它里面至少会有这么一行:add_lunch_combo xxxx,继续添加单板信息。lunch函数则会打印出所有的单板信息供你选择,你输入选择后,lunch命令会对你的选择做一系列检测,并从中提取出product和varient,并最终导出这些信息,供正式编译的时候使用。

如果想要研究每一步具体做了哪些事情,可以去深入研究具体的各个文件的执行过程,和一些变量的作用。

可以用Cherry Pick命令对上库的代码在本地仓进行更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Andriod中如何新建lunch项 的相关文章

  • 从队列更新活动的最佳方法

    我有一个LinkedBlockingQueue在我的 生产者 调解者 消费者 模型中的调解者中 Producer 首先更新将 Mediator 添加到 ActivityQueue 中 接下来 消费者 活动在队列中等待 侦听并获取下一个项目
  • 删除视图并重新创建它

    有没有办法删除设置的视图 setContentView R layout set map center mapView MapView findViewById R id mapview 如果我再次调用此视图 则会收到一条错误消息 java
  • IntentService、Service 或 AsyncTask

    实现这一点的最佳方法是什么 我有一个 Android 应用程序 它将使用我的 python 服务器来允许两部手机之间进行轮流通信 回合意味着他们在一轮开始之前不能互相交谈 一旦他们发送一条消息 他们就不能发送另一条消息 直到对方做出回应 然
  • Android中如何将文件写入raw文件夹?

    我认为这是一个非常基本的问题 我目前正在编写这样的文件 File output new File exampleout mid 现在 我想将文件写入 myproject res raw 我读到我可以通过将完整的网址放在 中来做到这一点 但
  • 通过我的应用程序以编程方式插入新联系人,而不使用 Intent

    我正在使用一个应用程序 与手机联系人进行交互 我想将新联系人添加到我的手机联系人列表中 我已经尝试过以下代码 但它不起作用 void addContact Context ctx PreviewContactModel model Arra
  • 如何更改对话框的默认黑色暗淡背景“颜色”(而不是暗淡量)?

    这是随机显示的图像Dialog在网上找到的 我一直在实施一个自定义Dialog 我可以处理对话框上的几乎所有内容 除了对话框本身下方的默认黑色昏暗背景之外 但在其后面的整个屏幕上 基本上我想改变它color和阿尔法值 我一直在 StackO
  • Android:拍照后调用裁剪活动

    我在解析拍摄照片的 uri 来裁剪活动时遇到问题 在我的应用程序中 用户可以拍摄一张照片或从图库中选择一张照片 然后裁剪并上传 一切听起来都很简单 从图库中选择时 图库应用程序会返回所选照片的 uri 如下所示 content media
  • Android Studio:Android 设备监视器未显示我的设备

    我的真实设备是索尼 Xperia c6502安卓版本4 3 我确定我将其连接到我的计算机然后打开开发者选项 USB调试 on 在 SDK 管理器中 Google USB 驱动程序已安装 I downloaded Xperia Z Drive
  • 如何在我的 Android 应用程序中实现应用内购买?

    如何在我的 Android 应用程序中实现应用内购买 我提到 http developer android com guide market billing billing integrate html billing service ht
  • 调试 Java InterruptedException,即查找原因

    在调试Android应用程序时 有时中断异常发生并使应用程序崩溃 我已经能够在默认异常处理程序上设置断点 但调用堆栈不提供信息 at java util concurrent locks AbstractQueuedSynchronizer
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • 在 Android ADT Eclipse 插件中滚动布局编辑器

    有谁知道当布局编辑器的内容溢出一个 屏幕 时如何滚动这些内容 我说的是在设计时使用 ADT 布局编辑器 而不是在物理设备上运行时滚动 效果很好 关闭 Android 布局编辑器中的剪辑 切换剪辑 按钮位于 Android 布局编辑器的右上角
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library
  • Android:如何在布局中放置纯色矩形?

    我有一个可以很好地膨胀的relativelayout 我想在顶部添加一个跨越布局宽度的纯色矩形 我尝试将以下内容放入我的 xml 中
  • 在上下文操作模式下选择时,ListView 项目不会在视觉上“突出显示”

    我关注了 Android 官方网站创建上下文操作菜单的教程 http developer android com guide topics ui menus html CAB 使用下面的代码 当我长按我的 ListView 项目之一时 它确
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • 进程被杀死后不会调用 onActivityResult

    我有一个主要活动 Main 和另一个活动 Sub 由 Main 调用 startActivityForResult new Intent this SubActivity class 25 当我在 Sub 时 我终止该进程 使用任务管理器或

随机推荐

  • redis集群配置(Mac)

    主要解决在Mac进行redis的集群安装及配置 包括对集群 节点 槽 slot 键的基本命令使用 以及常见错误 版本 redis 5 3 系统 mac 10 前期准备 目录结构 mkdir cluster test cd cluster t
  • Failed to launch emulator 和 Failed to install the app解决方法

    1 按照react native官网配置好android开发环境 创建一个新项目 然后在vscode使用npm start和npm run android 运行打包的时候 报了上面两个错误 这是在创建好Device Manager中模拟手机
  • 互联网摸鱼日报(2023-03-06)

    互联网摸鱼日报 2023 03 06 InfoQ 热门话题 Snap首席信息安全官 我给软件供应链风险打 9 9 分 满分 10 分 技术深度解析 H 266 VVC 标准之量化技术 字节新一代解码器 BVC 帮助 H 266 VVC 标准
  • CMake编译opencv4.6

    openCV系列文章目录 文章目录 openCV系列文章目录 前言 一 准备工作 二 使用步骤 1 使用CMake编译openCV 总结 前言 最近在项目中遇到图片处理 一拍脑袋就想到大名鼎鼎的opencv 一 准备工作 1 openCV官
  • STM32中实现OLED多级菜单(支持修改参数)

    STM32中实现OLED多级菜单 目录 STM32中实现OLED多级菜单 一 完整工程源码下载 二 硬件连接 1 OLED12864 2 按键 3 蜂鸣器 三 效果展示 1 图片效果 2 视频效果 四 核心代码 1 gui h文件 2 gu
  • Redis(三)持久化

    RDB Redis DataBase Redis使用操作系统的多进程 COW Copy On Write 机制来实现快照持久化 Redis在持久化时会调用 glibc 的函数fork产生一个子进程 快照持久化完全交给子进程来处理 父进程继续
  • Zotero查看文献条目所属的分类

    Zotero是一个开源的文献管理软件 不光功能强大还支持插件扩展 但是很多Zotero用户可能会经常面临一个困境 就是不能很方便的确定某个文献条目具体属于哪些文件夹 如通过关键字在整个文献库搜索到某篇文献时 如果想看与该文献很相关的文献 定
  • OpenCV 验证码图像增强处理 一、滤波增强

    前言 图像增强是对图像进行处理 使其比原始图像更适合于特定的应用 它需要与实际应用相结合 对于图像的某些特征如边缘 轮廓 对比度等 图像增强是进行强调或锐化 以便于显示 观察或进一步分析与处理 图像增强的方法是因应用不同而不同的 有的小伙伴
  • WSL2默认DNS配置导致无法访问网络

    问题分析 1 进入wsl ping www baidu com 不通 2 本机cmd ping www baidu com 正常 3 把本机ping 百度的ip拿出来 用wsl直接ping 百度的ip正常 通过此步骤基本可以判断是WSL2默
  • 【GitHub.io/Github Pages使用教程】从头开始搭建自己的Github Pages,打造个人博客网站,展示个人简历、项目、文档或想要与世界共享的任何其他内容

    巨人半边莲 如果你曾征服乞力马扎罗山 留意过海拔 3 657 4 267 米处的尖顶植物 这种植物有时形似绿色大柱子 或 花序 从中间长出花序 那么你就可能看到许多巨人半边莲 这些植物生长在非洲最高山上 事实上 巨人半边莲是乞力马扎罗山上发
  • 基于Matlab的2ASK、2PSK性能仿真

    这里我们将简单的在Matlab中进行2ASK与2PSK的仿真 比较实际误码率与理论误码率 最终做出相应的曲线 2ASK的仿真 我们首先来2ASK的看一下程序框图 产生 0 1 随机数序列这里我们使用的是Matlab中randi imin i
  • Thinkphp5 联表(联合、关联、join)查询

    Db table think artist gt alias a gt join think work w a id w artist id gt join think card c a card id c id gt select joi
  • ps2020闪退_Adobe Photoshop 2020总是打不开,闪退,怎么回事,解决方法

    尽管还没有到2020年 但adobe公司更新软件的步伐没有停止 adobe 2020全家桶系列软件已经发布 其中就包括大家最喜欢的图像设计大师Photoshop 2020 我在第一时间也给大家分享了Photoshop2020简体中文版 许多
  • 微分动态规划的基本思想

    吴恩达cs229第19课 微分动态规划这一部分 看了两遍才看明白 赶紧记下来 微分动态规划是基于LQR 线性二次型 的 后者能够比较简洁地计算最优策略 但要基于一个前提 就是 t 1 时刻的状态 是 t 时刻的状态和 t 时刻采取行为的线性
  • LaTeX常用语法查询(自用)

    文章目录 LaTex文档结构 添加作者 标题 日期 章节和段落 插入目录 插入数学公式 两种插入模式 上下标和空格 根式与分式 符号 括号 省略号 矩阵 插入图片 插入表格 编辑器 离线编辑 在线编辑 分点 itemize 参考文献插入链接
  • 使用golang的pprof包对程序进行性能分析

    golang提供pprof包 可以监控golang程序的堆栈 cpu的耗时等性能信息 下边就说一下这个pprof包的使用 1 首先是引入 在两个地方可以引入 net http pprof runtime prof 其中 net http p
  • 尺寸汇总

    尺寸汇总 获取视口的宽高 含滚动条 window innerWidth window innerHeight 不含滚动条 document documentElement clientWidth document documentEleme
  • python使用matplotlib实现折线图的绘制

    一 意义 数据可视化可以以简洁的方式呈现出数据 发现众多数据中隐藏的规律和意义 Matplotlib是一个数学绘图库 利用它可以制作简单的图表 散点图 折线图 然后 将基于漫步概念生成一个更有趣的数据集 根据一系列随机决策生成的图表 本文我
  • 数据结构(9)之带权图

    1 带权图中 边带有一个数字 叫做权 它可能代表距离 耗费 时间或其他意义 2 带权图用来最常解决的问题是最短路径问题 pps 3 带权图的最小生成树中有所有的顶点和连接它们的必要的边 且这些边的权值最小 4 优先级队列的算法可用于寻找带权
  • Andriod中如何新建lunch项

    Andriod编译过程一般为 1 source build envsetup sh 加载命令 在项目根目录下 purple code a A code20211126 sdm660 目录 备注 在envsetup sh里将执行vendor和