zoukankan      html  css  js  c++  java
  • Android aosp 编译系统基础相关命令

     源码管理 

      找到原有的.git  删除后 添加自己的git   

        find ./ -name '.git' | xargs rm -rf

    常用命令

      gettop 函数     获取当前编译环境的work_directory目录 如下所示,适用于在深层目录中 跳转其他目录 

    (aosppy2) aosp@ubuntu:~/android/android5.1$ cd packages/apps/gifaLibs/common/
    (aosppy2) aosp@ubuntu:~/android/android5.1/packages/apps/gifaLibs/common$ cd $(gettop)
    (aosppy2) aosp@ubuntu:~/android/android5.1$ cd packages/apps/gifaLibs/common/
    (aosppy2) aosp@ubuntu:~/android/android5.1/packages/apps/gifaLibs/common$ cd $(gettop)/packages
    (aosppy2) aosp@ubuntu:~/android/android5.1/packages$ pwd
    /home/aosp/android/android5.1/packages
    (aosppy2) aosp@ubuntu:~/android/android5.1/packages$

      croot  指令   输入后 直接回到当前编译环境的work_directory

       m  :make的缩写    -jx  参数-j 表示job  后面的x:表示工作的线程数

      mm : 表示编译当前目录的mk文件

      MMM : 标识编译指定目录下的mk文件,例如当修改common文件后,编译其他目录的App应用

    (aosppy2) aosp@ubuntu:~/android/android5.1/packages/apps/gifaLibs/common$ mmm ../../gifaApps/test1/
    

      jgrep :只在java文件中查找 指定的字符串   示例:  jgrep "Activity"

      cgrep :只在C/C++文件中查找指定的字符串   示例:  cgrep "Activity"

      resgrep   只在res资源文件中查找指定的字符串

      godir  查找加跳转指令  示例   godir  ctgmath    找到这个文件所在的目录 并且跳转进去

        godir 会在第一次执行的时候,在编译根目录建立filelist索引文件,若在其他文件夹下执行,只会将所在目录下的文件建立索引,因此当找不到文件时,可以将根目录的“filelist”文件删除,再到编译根目录执行一次

      make  snod  :当编译部分模块完成后,输入此命令标识重新生成img镜像文件

     emulator  &  :运行当面环境下的配置的模拟器   参数“&” 标识后台运行

    工作目录说明

    •   build/目录
      •   core/   aosp整个编译过程中核心编译规则文件目录
      •   envsetup.sh  编译环境初始化脚本
      • target / Android自带模拟器的一些makefile文件目录
      • tools    编译过程中使用的shell及python编写的一些脚本 
    •  packages/  一些常用系统APP存放目录,电话、日历等
    • framworks    公共库   
        • av/   多媒体相关的native目录
        • webview/   浏览器内核源码目录
        • native/  power、input、binder等服务native实现目录
        • base
          •   core     |   framework.jar  framework-res.apk libandroid_runtime.so等源文件
          •   native  |   libandroid.so的源代码目录  java api的native实现  比如looper、assetmanager
          •        media  |  多媒体相关的javaapi及jni文件目录
          •   package  |  settingProvider、SystemUI等不在桌面直接启动的App源码目录
          •   service  |  services.jar、libandroid_services.so的源文件目录
          •   WIFI  |  wifi服务相关的javaAPI、wifiManager、wifiService等
    • devices/<vendor_name>/<product_name> |     跟硬件厂商相关的内核,硬件配置等
    • vendor/<vendor_name>/<product_name> |     厂商对AOSP修改或者定制、放在vendor目录下。包括不限于framework层新增API、APP等业务需求,目前谷歌更推荐放在devices目录下

    AndroidBuildSystem说明  aosp 构建 编译系统

      Androld Build 系统用来编译 Androld 系统Androld SDK以及相关文档。
        该系统主要由如 make 文件, shell 脚本以及 Python 脚本组成,在编译时能够支持面向不同的硬件设备,不同的编译类型,且提供面向各个厂商的定制扩展。  

     什么是makefile

        makefile 是一些有特定语法,可供make命令读取并执行的脚本性质的配置文件,作用就是定义编译相关属性,对哪些源文件进行编译,怎么编译,怎么处理他们之间的依赖关系

        makefile可以定义变量,函数,调用系统命令, shen / python脚本,管理module 之间的依赖,整个Android Build系统中的make文件分成三类
      1 . Build 系统核心 Makefile
          这类Makefile定义了整个 Build 系统的框架,而其他所有make文件都是在这个框架的基础上编写出来的。位于 build/Core 目录下.
      2 .针对某个产品的 Makefile
          这类 makefile是针对某个产品 Make文件这些文件通常位于 device/< vendor_name>/< product_name 》 目录下。
      3 .针对某个模块的 Makeflle - Android.mk
          第三类是针对某个徽块的 Moke 文件。 AOSP中,不会针对某一个文件进行编译,每一个编译单位都是一个模块,
          每个模块由一个名为“ Android.mk ”的 makefile 来声明。该文件中定义了如何编译当前模块。

     

     

  • 相关阅读:
    SignalR2结合ujtopo实现拓扑图动态变化
    SignalR2简易数据看板演示
    使用SignalR 2进行服务器广播
    使用SignalR实时Web应用程序
    ZooKeeper安装
    MongoDB安装
    线程安全与非线程安全
    监听器,事件对象,事件源
    Graphics与Canvas
    JDialog
  • 原文地址:https://www.cnblogs.com/shenwenbo/p/15045313.html
Copyright © 2011-2022 走看看