Android编译小结

南京广义软件:Android lunch分析以及产品分支构建 Android lunch分析以及产品分支构建 一、背景 随着Android应用范围越来越广泛,用户对Android的需求也越来越趋于复杂,在开发Android应用以及底层产品驱动时,往往两套产品所需要的硬件平台就大不相同,而软件功能却相差不大。在这种纷繁的情况下,是否每种产品就需要一套源代码来维护。如果真这么做的话,那工作量就太大了。所以提出了产品分支的概念。在Android源码中提供了这么 阅读详情

正式开始一个新的平台,以前的项目拿到的代码都是供应商改好的,感觉有很多不规范的地方。

这次从一个全新的项目着手,严格按照android规范进行项目的添加、板级文件的支持。目标是争取不改动build目录下的文件,而是用好它的扩展机制。

在lunch中增加combo选项的标准方法

在执行完. build/envsetup.sh后,执行lunch,会出现lunch菜单:

You're building on Linux

Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_mips-eng
     4. aosp_mips64-eng
     5. aosp_x86-eng
     6. aosp_x86_64-eng
     7. aosp_flounder-userdebug
     8. mini_emulator_mips-userdebug
     9. mini_emulator_x86-userdebug
     10. mini_emulator_arm64-userdebug
     11. mini_emulator_x86_64-userdebug
     12. m_e_arm-userdebug
     13. aosp_manta-userdebug
     ……

在build/envsetup.sh中只增加了默认的几项:

# add the default one here
add_lunch_combo aosp_arm-eng
add_lunch_combo aosp_arm64-eng
add_lunch_combo aosp_mips-eng
add_lunch_combo aosp_mips64-eng
add_lunch_combo aosp_x86-eng
add_lunch_combo aosp_x86_64-eng

lunch函数会到venor和device目录中寻找vendorsetup.sh,然后执行文件中类似的

add_lunch_combo aosp_flounder-userdebug

然后就会多出个

     7. aosp_flounder-userdebug

Android 5.1可以自动识别JAVA_HOME

参见build/envsetup.sh,代码如下:

# Force JAVA_HOME to point to java 1.7 or java 1.6  if it isn't already set.
#
# Note that the MacOS path for java 1.7 includes a minor revision number (sigh).
# For some reason, installing the JDK doesn't make it show up in the
# JavaVM.framework/Versions/1.7/ folder.
function set_java_home() {
    # Clear the existing JAVA_HOME value if we set it ourselves, so that
    # we can reset it later, depending on the version of java the build
    # system needs.
    #
    # If we don't do this, the JAVA_HOME value set by the first call to
    # build/envsetup.sh will persist forever.
    if [ -n "$ANDROID_SET_JAVA_HOME" ]; then
      export JAVA_HOME=""
    fi

    if [ ! "$JAVA_HOME" ]; then
      if [ -n "$LEGACY_USE_JAVA6" ]; then
        case `uname -s` in
            Darwin)
                export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
                ;;
            *)
                export JAVA_HOME=/usr/lib/jvm/java-6-sun
                ;;
        esac
      else
        case `uname -s` in
            Darwin)
                export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
                ;;
            *)
                export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
                ;;
        esac
      fi

      # Keep track of the fact that we set JAVA_HOME ourselves, so that
      # we can change it on the next envsetup.sh, if required.
      export ANDROID_SET_JAVA_HOME=true
    fi
}

Android 5.1的编译使用了openjdk,在ubuntu上可以直接通过apt-get进行安装。

如何新建一个device

  • 从原有的device目录复制一份,将目录命名为你要新建的设备名称。如把msm8916_64复制一份,重命名为msm8916_d500。
  • 将msm8916_d500目录下的AndroidProducts.mk内容更新为:
PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/msm8916_d500.mk
  • 将msm8916_d500目录下原有的msm8916_64.mk重命名为msm8916_d500.mk。修改里面的PRODUCT_NAME和PRODUCT_DEVICE:
PRODUCT_NAME := msm8916_d500
PRODUCT_DEVICE := msm8916_d500
  • 在msm8916_d500目录下新建一个vendorsetup.sh,在里面增加combo选项,这样msm8916_d500就会出现在lunch菜单里。
add_lunch_combo msm8916_d500-userdebug
add_lunch_combo msm8916_d500-eng
add_lunch_combo msm8916_d500-user
  • 修改msm8916_d500目录下的AndroidBoard.mk,修改KERNEL_DEFCONFIG,将其指向我们自己的defconfig文件:
#----------------------------------------------------------------------
# Compile Linux Kernel
#----------------------------------------------------------------------
ifeq ($(KERNEL_DEFCONFIG),)
    ifeq ($(TARGET_BUILD_VARIANT),user)
      KERNEL_DEFCONFIG := msm8916_d500-perf_defconfig
    else
      KERNEL_DEFCONFIG := msm8916_d500_defconfig
    endif
endif

msm8916_d500_defconfig和msm8916_d500-perf_defconfig在kernel/arch/arm/configs目录下,不存在的话,要以msm8916_defconfig为模板新建一个,并在其中加入一行:

CONFIG_BOARD_SEUIC_D500=y

这个变量会在导入dts中用到。
* kernel/arch/arm/boot/dts/qcom/Makefile中增加:

dtb-$(CONFIG_BOARD_SEUIC_D500) += msm8916_d500.dtb
Android AOSP 9.0 Launcher开发(一)Launcher基础知识 Android AOSP 9.0 Launcher开发(一)Launcher基础知识1.什么是Launcher新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML ... 阅读详情

相关推荐

注册“Oracle Provider for OLE DB”和创建链接服务器

注册“Oracle Provider for OLE DB”和创建链接服务器 在sql server 数据库上创建链接服务器,连接oracle数据库,访问接口需要设置为:“Oracle Provider for OLE DB”。 如果电脑上没有这个驱动,安装一个完整的Oracle11gR2程序是一个有效的方法,但这个64位版本的安装包有2个多G, 相当庞大,如果仅仅...

weixin_30760895的博客 2385

AOSP13 lunch函数的注释级解析

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

a2516110的博客 1007

Cesium实战:全球海洋动态水面与自定义区域波浪效果实现

本文详细介绍了在Cesium中实现全球海洋动态水面与自定义区域波浪效果的实战方法。通过解析核心概念Primitive与Geometry,并深入讲解Water材质的关键参数调节,指导开发者快速创建逼真的动态海洋。文章重点阐述了如何利用多边形坐标定义不规则图形区域,实现精准的局部水域波浪效果,并提供了性能优化与视觉提升的实用技巧。

weixin_29256771的博客 501

Android编译详解之lunch命令

Android的优势就在于其开源,手机和平板生产商可以根据自己的硬件进行个性定制自己的手机产品, 如小米,LePhone,M9等,因此,在我们在对Android的源码进行定制的时候,很有必要了解下,Android的 编译过程。 如果你从来没有做过Android代码的编译,那么最官方的编译过程就是查看Android的官方网站: http://source.an

不喜欢debug的疯子 2万+

GIS分析-利用K-Means方法进行地震分析

通过“聚类”可以获得有关我们所拥有的数据的各种线索,这是数据挖掘技术之一。分析创建的组有助于决策过程。在这项研究中,我们将使用数据挖掘工具之一的K-Means方法研究安纳托利亚东部地区近100年发生的地震的空间分布,并试图获得有用的信息,以供未来的研究使用。我从局地震目录页面获得了研究所需的地震数据,并从获得了区域边界数据。

gis收藏家的博客 1570

当Kmer遇到多倍体:复杂基因组Survey分析中的避坑指南

本文针对小麦、棉花等多倍体及高杂合复杂基因组的Survey分析,深入解析了Kmer分布图解读中的常见陷阱。文章重点探讨了如何超越理想二倍体模型,利用Smudgeplot等工具准确判断基因组倍性,并提供了从参数优化、污染判断到结果验证的全流程实战指南,帮助研究者规避错误,获得更准确的基因组大小、杂合度等关键信息。

yhn45678901的博客 1010

Android源码编译教程

文章目录前言一、导入环境二、配置编译信息三、编译代码四、启动Android虚拟机五、错误记录错误一错误二 前言 当前环境: 1、Ubuntu16.04,已经安装好了各种依赖 2、Android代码版本,android-9.0.0_r3 一、导入环境 源码根目录输入: source build/envsetup.sh 输出: including device/generic/car/vendors...

Alex_Melody的博客 2382

保姆级教程:用SNAP处理哨兵一号数据,5步搞定城区范围提取(附江西晋城案例)

本文提供了一份详细的保姆级教程,介绍如何使用SNAP软件处理哨兵一号数据,通过5个关键步骤快速提取城区范围。以江西晋城为例,教程涵盖数据准备、预处理、核心处理流程、自动化搭建及成果分析,帮助用户轻松掌握SNAP操作技巧,适用于城市规划、环境监测等领域。

weixin_32535389的博客 454

在Mac OS 10.12 编译Android源码:错误小结

在Mac OS 10.12 编译Android源码的错误小结

zhanhong39的专栏 861

YOLOv26与其他目标检测算法的对比分析

本文对YOLOv26与其他主流目标检测算法进行了全面对比分析。YOLOv26在COCO数据集上达到96.0% mAP@0.5和79.0% mAP@0.5:0.95,显著优于其他YOLO系列算法,同时保持85FPS的推理速度和35MB的轻量级模型。相比两阶段算法(如Faster R-CNN),YOLOv26在速度、模型大小和内存占用方面优势明显;相比Anchor-free算法(如CenterNet),YOLOv26在速度和模型压缩方面更优。其核心创新包括动态锚框分配、自注意力机制和轻量级设计,使其成为适用于复

一键难忘的博客 997

Serial RapidIO Gen2 IP 说明(三)

前言 继续接着上篇文章,介绍Serial RapidIO Gen2 IP 的具体端口信息。 一、端口描述 1、缓冲设计接口 2、物理层接口 参考说明 【1】Serial RapidIO Gen2 v4.1https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/srio_gen2/v4_1/pg007_srio_gen2.pdf ...

记录所学,分享知识,结识挚友 1322

vlc android 编译 mac,在Mac中编译vlc-android小结

在Mac中编译vlc-android小结在Mac中编译vlc-android小结VLC CodeSourcehttps://code.videolan.org/exploreThis page is an introduction to the compilation of VLC for Android on Linux.https://wiki.videolan.org/AndroidCom...

weixin_42515739的博客 434

TVS 管击穿电压与钳位电压的工程解析

TVS二极管的核心参数击穿电压(VBR)和钳位电压(VC)常被混淆,但二者具有本质区别。VBR是

硬核科技 480

Android编译顺序小结

android编译:1、build.sh脚本:该脚本根据传进来的参数选择编译的项目:例如./build.sh XXX systemimage因为$1=P729B_CN则会进入if语句中。if [ "$1" = "XXX" ] ]; then    source ./$1/customize.sh//执行定制目录拷贝脚本    ./build_blade.sh update-api//生成curre

linux_eve的专栏 6490

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux编译安卓无法分配内存,Android 内存分配小结

有Android手机的童鞋们可能经常会有这样的疑问,为什么我的G2手机明明是256M的内存,可用任务管理器或者free之类的命令,看到的实际值会远远小于256。看到网上的很多误导言论,这里我给大家澄清一下吧:无图无真相,贴张MSM7627的内存分布图,一目了然:由上图可以看到,内存主要分给modem/bootloader/SMEM/pmem/android几个部分使用:1、modem/bootlo...

weixin_35409775的博客 248

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MuPDF for Android编译过程小结

最近使用mupdf在自己的app上用来打开pdf类型的文件,把自己编译的过程在这里做个小小的记录 源码下载 首先需要把mupdf的源码下载下来为后续编译出so文件做准备,这里推荐官方的下载地址MuPdf官网,里面提供了git地址,这里还推荐另一个地址GITHUB地址 GITHUB地址,而且GITHUB上还有比较详细的文档说明。 源码编译 在编译前,GITHUB上的文档说了我们还需要下载一份

chenzujie的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android编译小结

diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk index ae1997c..e8c5263 100644 --- a/core/combo/TARGET_linux-arm.mk +++ b/core/combo/TARGET_linux-arm.mk @@ -98,11 +98,1

hello_kitty8888的专栏 1305

MTK Android 编译小结

编译流程:makefile--->main.mk--->config.mk(含:board_config.mk、envsetup.mk、product_config.mk)。 1、Applications->Accessories->Terminal进入命令行界面 2、用cd命令切换到代码文件夹 3、如果不知道当前想需要编译的工程名是什么,可以用 ./mk listp查看工程名 4、如果编

chr8880的专栏 4038

编译android系统小结

最近在搞兼容android4.0的一些工作,简单小结一下。1、编译最好用 make -j16 或者 make -j32,这个要根据机器的配置来。我是在高性能服务器上编译,所以,可以这么设置;2、有时只是修改了一下makefile,使用mm编译模块并不会工作,可以先cd到模块下: find . -name *.java | xargs touch如果你是c,c++...

weixin_34010949的博客 108

android反编译小结

http://blog.youkuaiyun.com/dadoneo/article/details/6274780 按上面文章的介绍,装了apktool, 查看是否装上 D:\eclipse\workspace\mytools\apktool-install-windows-r04-brut1>apktool Apktool v1.4.1 - a tool for reenginee

pinklpig的专栏 1527

Android反编译小结

转自:http://www.cnblogs.com/dartagnan/archive/2011/03/24/2003437.html   开篇: “对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式

zengshuqin的专栏 462
上一篇: PB编译生成的BIN文件的格式
下一篇: 编译镜像时给apk加混淆
fire_up
博客等级 码龄26年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值