Android 新建一个lunch项(全志方案)

简介: Android 新建一个lunch项(全志方案)

前言

Android 开发中,我们经常需要根据不同的硬件平台和产品需求,创建不同的 lunch project项,来编译出对应客户的系统镜像。本文将介绍如何在全志 Android 平台上新建一个 lunch 项,以及如何使用一个简单的脚本来自动化这个过程。

步骤

假设我们要在全志 Android 平台上新建一个名为 a40-c01 的 lunch 项,可以参考以下步骤:

  1. 在源代码中的 device/softwinner 目录下,复制一份已有的目录(如:a40-p1),命名为 a40-c01,文件夹命名随意。
cp -r device/softwinner/a40-p1 device/softwinner/a40-c01
  1. 把 device/softwinner/a40-c01 目录下的 a40_p1.mk 重命名为 a40-c01.mk。
mv device/softwinner/a40-c01/a40_p1.mk device/softwinner/a40-c01/a40-c01.mk
  1. 把 a40-c01.mk 中,目录名及产品信息等,由 a40-p1 修改为 a40-c01。
sed -i "s/a40-p1/a40-c01/g" device/softwinner/a40-c01/a40-c01.mk
  1. 把 device/softwinner/a40-c01 目录下 AndroidProducts.mk 文件中,修改 PRODUCT_MAKEFILES 为 a40-c01.mk。
sed -i "s/a40_p1.mk/a40-c01.mk/g" device/softwinner/a40-c01/AndroidProducts.mk
  1. device/softwinner/a40-c01 目录下 vendorsetup.sh 文件中,修改语句 add_lunch_combo a40-c01-eng,其中 a40-c01 为自己的命名,后面必须有 -eng,否则 lunch 时无法找到编译的选项。
sed -i "s/a40_p1-eng/a40-c01-eng/g" device/softwinner/a40-c01/vendorsetup.sh

  1. device/softwinner/a40-c01 目录下 package.sh 文件 ./pack -c sun4i -p a40 -b a40-c01 -d uart0 其中 a40-c01 为自己的命名,也就是 a40-c01.mk 里的 PRODUCT_MODEL := a40-c01 取的名字。
sed -i "s/a40-p1/a40-c01/g" device/softwinner/a40-c01/package.sh
  1. 根据自己的需求,再修改其他参数。
  2. 进入 lichee/tools/pack/chips/sun8iw11p1/configs 目录下,复制一份已有的目录(如:a40-p1),命名为 a40-c01。
cp -r lichee/tools/pack/chips/sun8iw11p1/configs/a40-p1 lichee/tools/pack/chips/sun8iw11p1/configs/a40-c01
  1. 把 a40-c01 目录下的所有文件中,由 a40-p1 修改为 a40-c01。
find lichee/tools/pack/chips/sun8iw11p1/configs/a40-c01 -type f -exec sed -i "s/a40-p1/a40-c01/g" {} +

脚本

为了方便,可以把上述步骤写成一个脚本,比如 create_new_lunch.sh,然后在源代码根目录下执行 ./create_new_lunch.sh oldname newname 即可完成新建 lunch 项的操作。以下是脚本的内容:

#!/bin/bash
# 用法: ./create_new_lunch.sh oldname newname
# 示例: ./create_new_lunch.sh a40-p1 a40-c001
oldname=$1
newname=$2
# 检查参数
if [ $# -ne 2 ]; then
    echo "用法: ./create_new_lunch.sh oldname newname"
    exit 1
fi
if [[ ! $newname =~ ^a40- ]]; then
    echo "新的名字必须以 a40- 开头"
    exit 2
fi
# 检查旧的名字是否存在
if [ ! -d android/device/softwinner/$oldname ]; then
    echo "旧的名字 $oldname 不存在,请输入正确的名字"
    exit 3
fi
if [ ! -d lichee/tools/pack/chips/sun8iw11p1/configs/$oldname ]; then
    echo "旧的名字 $oldname 不存在,请输入正确的名字"
    exit 4
fi
# 复制设备目录
cp -r android/device/softwinner/$oldname android/device/softwinner/$newname
# 重命名 makefile
mv android/device/softwinner/$newname/${oldname//-/_}.mk android/device/softwinner/$newname/${newname//-/_}.mk
# 在所有文件中替换旧的名字为新的名字
find android/device/softwinner/$newname -type f -exec sed -i "s/$oldname/$newname/g" {} +
find android/device/softwinner/$newname -type f -exec sed -i "s/${oldname//-/_}/${newname//-/_}/g" {} +
# 复制 lichee 目录
cp -r lichee/tools/pack/chips/sun8iw11p1/configs/$oldname lichee/tools/pack/chips/sun8iw11p1/configs/$newname
# 在所有文件中替换旧的名字为新的名字
find lichee/tools/pack/chips/sun8iw11p1/configs/$newname -type f -exec sed -i "s/$oldname/$newname/g" {} +
# 完成
echo "新的 lunch 项 $newname 创建成功。"
$ ./create_new_lunch.sh a40-c003 a40-c04
旧的名字 a40-c003 不存在,请输入正确的名字
$ ./create_new_lunch.sh a40-c03 a40-c04
新的 lunch 项 a40-c04 创建成功。

总结

本文介绍了如何在全志 Android 平台上新建一个 lunch 项,以及如何使用一个简单的脚本来自动化这个过程。

目录
打赏
0
0
0
0
75
分享
相关文章
Android 跨平台方案对比之Flutter 和 React Native
本文对比了 Flutter 和 React Native 这两个跨平台移动应用开发框架。Flutter 使用 Dart 语言,提供接近原生的性能和丰富的组件库;React Native 则基于 JavaScript,具备庞大的社区支持和灵活性。两者各有优势,选择时需考虑团队技能和项目需求。
525 8
Android平台一对一音视频通话方案大比拼:WebRTC VS RTMP VS RTSP,谁才是王者?
【9月更文挑战第4天】本文详细对比了在Android平台上实现一对一音视频通话时常用的WebRTC、RTMP及RTSP三种技术方案。从技术原理、性能表现与开发难度等方面进行了深入分析,并提供了示例代码。WebRTC适合追求低延迟和高质量的场景,但开发成本较高;RTMP和RTSP则在简化开发流程的同时仍能保持较好的传输效果,适用于不同需求的应用场景。
344 1
全志 Android 11:实现响应全局按键
本文介绍了在全志平台Android 11上实现响应全局按键的方法,通过修改`TvWindowManager.java`来全局拦截特定的热键事件,并在`FocusActivity`中处理这些事件以启动调焦界面和控制步进电机调整焦距。
67 2
|
7月前
|
Android经典实战之存储方案对比:SharedPreferences vs MMKV vs DataStore
本文介绍了 Android 开发中常用的键值对存储方案,包括 SharedPreferences、MMKV 和 DataStore,并对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案,提升应用性能和用户体验。
240 1
基于全志H713 Android 11:给TvSettings添加default.xml默认值
本文介绍了在全志H713 Android 11平台上为TvSettings应用添加HDMI CEC功能的默认设置值的方法,通过修改SettingsProvider的源码和配置文件来实现默认值的设置,并提供了详细的步骤和测试结果。
204 0
基于全志H713 Android 11:给TvSettings添加default.xml默认值
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
367 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
Android经典实战之跨平台开发方案:Kotlin Multiplatform vs Flutter
本文对比了Kotlin Multiplatform与Flutter两大跨平台开发框架,从技术特性、性能、开发效率、UI体验、可扩展性及适用场景等维度进行了详尽分析,帮助开发者根据项目需求和技术背景选择最优方案。
287 2
全志H713 Android 11 :给AOSP源码,新增一个Product
本文介绍了在全志H713 Android 11平台上新增名为myboard的产品的步骤,包括创建新的device目录、编辑配置文件、新增内核配置、记录差异列表以及编译kernel和Android系统的详细过程。
443 0
### 惊天对决!Android平台一对一音视频通话方案大比拼:WebRTC VS RTMP VS RTSP,谁才是王者?
【8月更文挑战第14天】随着移动互联网的发展,实时音视频通信已成为移动应用的关键部分。本文对比分析了Android平台上WebRTC、RTMP与RTSP三种主流技术方案。WebRTC提供端到端加密与直接数据传输,适于高质量低延迟通信;RTMP适用于直播场景,但需服务器中转;RTSP支持实时流播放,但在复杂网络下稳定性不及WebRTC。三种方案各有优劣,WebRTC功能强大但集成复杂,RTMP和RTSP实现较简单但需额外编码支持。本文还提供了示例代码以帮助开发者更好地理解和应用这些技术。
199 0
Android源代码定制:移除无用lunch|新建lunch|自定义customize.mk
Android源代码定制:移除无用lunch|新建lunch|自定义customize.mk
460 3

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
    13
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    20
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    9
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    5
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    8
  • 6
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    3
  • 7
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    10
  • 8
    Android实战经验之Kotlin中快速实现MVI架构
    12
  • 9
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    9
  • 10
    android FragmentManager 删除所有Fragment 重建
    3
  • 1
    android FragmentManager 删除所有Fragment 重建
    20
  • 2
    Android实战经验之Kotlin中快速实现MVI架构
    36
  • 3
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    37
  • 4
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    43
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    151
  • 6
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    48
  • 7
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    64
  • 8
    Android历史版本与APK文件结构
    168
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    51
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    50
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等