libhybris 和 halium详解(三)

Halium适配:

1. android版本小于7.x:

   根据前面讲述的内容,android没有启用Treble架构(即没有使用GSI), 这个阶段要适配halium,那需要做的工作就很多了,这一点在Halium的github工程里面也可以体现出,工作里面会有很多和设备相关的仓库,做这个阶段的适配工作对开发人员的要求就比较高,最起码对安卓工程和硬件平台很熟悉,有丰富的android硬件平台的开发经验,其次还需要拿到适配硬件的android源码,我们需要编译内核,并且把和设备相关的部分移植到Halium的工程中, 这个就是为什么halium代码编译前需要先获取和设备相关的仓库代码,并且我们发现社区适配的机器近乎全部都是高通平台的机器,这也从另外一个层面说明高通的开源做的要好一些;

一个好消息是,当前android系统的硬件基本上很少有低于android 8的版本了,以此上述全功能适配的方式可以不用关注,如果真的有特殊领域需要,可以留言交流;

2. android 8 及之后的版本:

    根据前面的介绍,android 8 之后的版本采用Treble 架构(使用GSI), 其纯android部分与硬件厂商部分进行分离,即system和vender是分离的,这就意味着halium只需要适配对应android版本的system.img即可,而不必关心vendor(这里主要指HAL层)部分的区别,当然了boot.img还是要进行适配的;

3. halium适配步骤:

   1)boot.img :

      boot.img 实际上就是内核+ramdisk, 将设备的内核源码放到halium工程中,同时把linux ramdisk也放到halium的工程中,然后编译生成boot.img,

     问题:为什么要生成android的boot.img, 我们不是linux吗? 

     这是因为目标设备原系统是android, 而我们没有去动uboot(LK), 所以启动kernel还是借助android uboot来完成的,并且kernel是由原系统android 来的,部分配置还要落实到android工程脚本中,因此借助android工程来做事半功倍,高通的开源做的还是比较好的,市面上高通的机器,尤其是海外发货的机器都可以拿到内核源码,因此就有了修改内核的机会;

     如果有设备的android源码,就更加方便,可以不借助halium工程来做,可以直接使用android源码来进行编译编译,这里面有几点需要注意一下:

     a. 内核是支持android的内核,需要根据主系统的linux进行修改;

     b. ramdisk需要自己打到内核里面,这里就需要熟悉Android的编译过程, 一般是修改INTERNAL_BOOTIMAGE_ARGS 例如INTERNAL_BOOTIMAGE_ARGS += --ramdisk  $(path to ramdisk) ;

     c. 需要修改cmdline 参数,通常情况下需要关闭selinux; 

     d. 特别需要注意的是,编译kernel的时候会有一些ko,需要重新编译才能正确加载;

     经过以上修改,编译后就会得到我们需要的boot.img . 

ramdisk的下载地址: https://github.com/Halium/initramfs-tools-halium/releases/tag/continuous

2) halium GSI编译:

       halium GSI编译按照github上的指导就好了,最后得到的文件system.img,

 # Get all the needed repositories for a Halium-based build
repo init -u https://github.com/Halium/android -b halium-10.0 --depth=1

# Get the required repositories for this specific build
./halium/devices/setup halium_arm64

# Apply Halium patches to the Android source tree
hybris-patches/apply-patches.sh --mb      

# Setup the build environment
source build/envsetup.sh && breakfast halium_arm64

# Build the raw system image
mka rawsystemimage

得到的GSI是system.img 或者android-rootfs.img 

下载代码需要有访问google代码的权限,最好是使用代理,不使用代理经常会下载不成功;

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值