android_Zrevo目录结构

今天一天看下来,有了大致的了解,感觉还是有必要用写下来把思路过一遍比较好,这其中理解的跟碎片一样,很多地方不到一起,

或者理解有错误,所以如果有哪位仁兄偶然看见了或者看过了,还请指正,万分感谢!

1:平台项目中的zrevo主要目录:

a80_xx02(项目配置目录):

---customer_a80_xx02.cfg

---env_a80_xx02.ini

---prj_config_a80_xx02.h

---PRJPreConfig_a80_xx02.mk

a80_xx02-huawei(a80_xx02衍生的配置目录):

---customer_a80_xx02-huawei.cfg

---env_a80_xx02-huawei.ini

---prj_config_a80_xx02-huawei.h

---PRJPreConfig_a80_xx02-huawei.mk


目录中各个文件的作用和关联性:

 customer_a80_xx02.cfg文件:主要定义了文件的定制和文件的拷贝

[a80_xx02-huawei-huawei]
CUSTOM_SP=BASE
packages=audio_para
    wificonnectivity_cfg
    bootsound
    bootanimation
    a80_ruiou_inlay_ring

[a80_xx02-huawei-admo]
CUSTOM_SP=admo
packages=audio_para
    wificonnectivity_cfg
    bootsound
    bootanimation
    huawei_admo_ring


 customer_a80_xx02.cfg文件中可能会有多个不同配置,如上面存在两个不同的配置a80_xx02-huawei-huawei和a80_xx02-huawei-admo。

当前项目使用的是哪一个,就是看编译代码时选择的配置是那个决定的。

cfg中packages变量(如bootsound,huawei_admo_ring)就指定了你当前配置下使用的开关机动画铃声,来电铃声。

cfg中packages变量只是配置好了,真正定义的地方是由:public-binary文件中的packages.xml文件定义的。

这里实现了将源文件拷贝到系统当中:

  <package name="bootsound">
    <file dst="system/media/bootsound.mp3" src="system/media/bootsound.mp3"/>
    <file dst="system/media/shutdownsound.mp3" src="system/media/shutdownsound.mp3"/>
  </package>
  <package name="huawei_admo_ring">
      <file dst="system/media/audio/ringtones/AdvanC1.ogg" src="project/a80/media/AdmoC1.ogg" />
      <file dst="system/media/audio/ringtones/AdvanC2.ogg" src="project/a80/media/AdmonC2.ogg" />
      <file dst="system/media/audio/notifications/AdvanN1.ogg" src="project/a80/media/AdmoN1.ogg" />
      <file dst="system/media/audio/notifications/AdvanN2.ogg" src="project/a80/media/AdmoN2.ogg" />
      <file dst="system/media/audio/alarms/AdvanA1.ogg" src="project/a80/media/AdmoA1.ogg" />
      <file dst="system/media/audio/alarms/AdvanA2.ogg" src="project/a80/media/AdmoA2.ogg" />
  </package>

cfg中packages变量的值用于选择那些应用或这二进制资源将被拷贝到out目录中.


env_a80_xx02.ini文件,此处列举出的是一个项目ini配置中的必须项,因为这些是与编译系统逻辑相关的。

      [a80_xx02]
      HUAWEI_PRODUCT_NAME="a80_xx02"
      CUSTOM_SP=BASE
      DRIVER_SP=BASE
      TARGET_PRODUCT=huawei_xx02
      TARGET_BUILD_VARIANT=userdebug
[a80_xx02]:这个定义作为一个配置的key值定义,用于区分各个配置。

REVO_PRODUCT_NAME="a80_xx02" 这个变量非常重要,它用于告诉编译系统,当前所属的配置在哪个目录?

并且确定了各个配置文件的文件名。比如这里HUAWEI_PRODUCT_NAME="a80_xx02",给我们提供了以下信息:

当前需要的配置文件在目录a80_xx02目录下
使用的配置文件是env_a80_xx02.ini、customer_a80_xx02.cfg、prj_config_a80_xx02.h,PRJPreConfig_a80_xx02.mk等..

注意:下面a80_xx02-jisanlianlong的所有衍生项目的REVO_PRODUCT_NAME值都是也必须是a80_xx02-jisanlianlong。

           env_a80_xx02-jisanlianlong.ini定义为:

           [a80_xx02-jisanlianlong]
           REVO_PRODUCT_NAME="a80_xx02-jisanlianlong"
           [a80_xx02-jisanlianlong-uerdebug]
           [a80_xx02-jisanlianlong-a45s]
           [a80_xx02-jisanlianlong-a45s-uerdebug]
CUSTOM_SP:默认设为BASE,这个变量主要用于二进制文件的拷贝,驱动文件的选择等。
 DRIVER_SP:默认设为BASE,这个变量驱动文件的选择。


PRJPreConfig_a80_xx02.mk

            LOCAL_PATH := zrevo/$(HUAWEI_PRODUCT_NAME)

            ifneq ($(CUSTOM_SP),BASE)
                  PRODUCT_PACKAGE_OVERLAYS += zrevo/$(HUAWEI_PRODUCT_NAME)/overlay/$(CUSTOM_SP)
            endif
            PRODUCT_PACKAGE_OVERLAYS += zrevo/$(HUAWEI_PRODUCT_NAME)/overlay/BASE

            $(call inherit-product, zrevo/common/PRJPreConfig_common.mk)

该文件主要的设计用途是用于android overlay机制资源的覆盖,也可以覆盖原有编译系统中针对客户不同配置的部分逻辑信息的覆盖,解决客制化问题。


features目录:

---default目录

   ---env.ini

   ---features.mk

该目录的引入是为了方便各种通用性的定制话需求,比如新UI的属性定制、客户公共需求等。
env.ini中定义通用的feature相关的环境变量,可以作为features.mk中值得补充。features.mk中定义的feature会被
脚本转换为JAVA中可用FeatureOption常量供java中调用。

例如:env.ini中:

HUAWEI_B_LEFTKEY_START_UNLOCK=true
features.mk中:

PRJ_FEATURE_HUAWEI_B_LEFTKEY_START_UNLOCK = bool-HUAWEI_B_LEFTKEY_START_UNLOCK


public-binary目录:

这个目录里面的二进制资源和packages.xml文件都是服务以 customer_a80_xx02.cfg文件,前面已经讲过了。

---logo目录

   ---开机log资源源文件


---project目录

   ---media目录

      ---铃声资源、来电铃声,短信铃声,闹钟铃声,内置音乐....


---system目录:

   ---media

       ---开关机动画,开关机铃声

       ---当然还有其他的资源...


---packages.xml文件(这个很重要了)


2.平台项目中的zrevo目录下主要文件(我知道的而已):

envsetup.sh 这个研究不来,技术目前太差了,目前只知道这么个浅概念:

准备好编译环境后,编译Rom的第一步是 source build/envsetup.sh,该步骤把e\nvsetup.sh里的函数声明为当前会话终端可用的命令。

这些命令能让我们切换目录,提交代码,编译Rom更方便。
在envsetup.sh里将执行vendor和device目录及各自子目录下所有的vendorsetup.sh,这些vendorsetup.sh做的事情是调用add_lunch_combo

将它们各自的产品添加到 LUNCH_MENU_CHOICES 变量里。















  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值