Android系统固件定制方式
target_product.mk
Android系统在构建关于某种产品的固件时,一般会根据特定于该产品的具体target_product.mk来配置生成整个Android系统。
/target_product.mk配置文件位于:/path_to_android/device/vendor/目录下,其中path_to_android表示Android系统的根目录;vendor为具体的厂商名称,例如,htc、moto、softwinner等。
target_product.mk的基本结构如下:
基本配置信息:
Android系统基本产品配置信息
特定厂商平台公共的配置信息
1
2
特定产品配置信息:
包括特定于某一个产品的配置信息
1
target_product.mk提供的能力
target_product.mk通过一系列的函数、变量来控制系统的构建过程,主要的变量和函数如下:
PRODUCT_PACKAGES:产品中包括的系统级APP,比如Launcher。
PRODUCT_COPY_FILES:需要拷贝到产品中的文件,格式:src_file:dst_file,其中,src_file、dst_file都为相对路径,例如:
device/softwinner/t3-p1/etc/apns-conf.xml:system/etc/apns-conf.xml,表示将apns-conf.xml拷贝到目标系统system/etc目录下。
PRODUCT_PROPERTY_OVERRIDES:覆盖build.prop中的系统属性信息。例如:
persist.sys.timezone=Asia/Shanghai配置系统的时区信息。
inherit-product:用于调用上级.mk配置信息,例如:
$(call inherit-product, build/target/product/full_base.mk),通过inherit-product,解析full_base.mk中的配置信息。
vendorsetup.sh
特定于某款具体的产品,一般会编写一个target_product.mk文件用于控制Android系统的具体构成,然后,编写vendorsetup.sh用于定义产品的型号。 一般会编写两条型号信息:eng、user。eng用于编译出debug版本的系统,user用于编译release版本的系统。例如:
add_lunch_combo t3_p1-eng
add_lunch_combo t3_p1-user
1
2
系统构建过程
Android系统的构建过程一般分为以下几个:
(1)配置环境变量->(2)选定产品型号->(3)编译->(4)打包。
配置环境变量: 通过如下命令:source build/envsetup.sh设置Android编译时所需要的环境信息。其中,该脚本会扫描device目录下的所有文件,并执行执行所有的vendorsetup.sh脚本。这样,第2步,就可以看到所有的产品型号信息了。
选定产品型号:选定符合需求的产品型号,一般产品型号都是自定义的。
编译:Android系统编译:包括,BootLoader、kernel、rootfs、system.img等。
打包:将编译阶段生成的各个编译产物打包成一个镜像文件,以备系统烧录。
产品定制
对于具体的产品,我们可以进行哪些定制工作?具体定制该如何开展呢?下面以基于全志T3平台的Android 6.0固件定制操作为例。
T3平台使用的Android6.0系统,该平台相关的产品配置信息位于:device/sofewinner/下:
common t3-common t3-p1 t3-p1_v1
1
其中,common包括了全志平台下一些通用的工具,例如pack、extract-bsp等;t3-common包括了t3处理器平台下的一些通用配置。
t3-p1、t3-p1_v1表示两种产品型号。
下面举一个替换系统默认输入法的示例。
Android系统提供的默认输入法不是很好用,所以需要将系统默认输入法替换为Sogou输入法。替换步骤如下:
找到系统输入法对应的安装位置:系统输入法属于Android系统级服务,其安装位置一般位于:build/target/product中,系统输入法的APP名称为:LatinIME。通过grep -nr LatinIME,可以找到关于LatinIME相关的配置信息,把这些配置信息注释掉。
将Sogou.apk放到t3-p1的apk目录下,然后再t3-p1.mk中增加一条配置信息:
PRODUCT_COPY_FILES +=
device/softwinner/t3-p1/apk/sogou.apk:system/preinstall/sogou.apk
配置硬件键盘、Settings中关于输入法的配置信息:
settings put secure show_ime_with_hard_keyboard 1
settings put secure enabled_input_methods com.sohu.inputmethod.sogou/.SogouIME
可以将上述信息编写成一个脚本,保证系统启动时,执行就可以了。至此,系统的默认输入法就替换为了Sogou输入法。
类似的,可以将系统中不需要的APP,例如Music、Camera、Browser、Recorder进行裁剪。
---------------------
Android系统固件定制方式的更多相关文章
- 深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制(瘋耔修改篇一)
首先非常感谢原文作者为我们提供的知识库,因为有你们的贡献,我们的开发难度更显简单 原文 : http://blog.csdn.net/mr_raptor/article/details/30113 ...
- android x86 固件定制
测试提了几个bug 1.系统语言默认设置成中文,否则时间控件显示的内容有问题 2.关闭10分钟不操作自动休眠功能 3.默认关闭虚拟键盘,目的在文本控件点击后,虚拟键盘就会在右下角显示出来,导致物理键盘 ...
- 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速
作者:唐老师,华清远见嵌入式学院讲师. Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新 版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们 ...
- Android系统定制——Download Android System 及加载system镜像文件
定制android系统(配置及相关系统的镜像文件),具体可参考:Driver_All_in_One_V1.0——MT6735_6753.pdf文档,特别需要理解的是Download部分. 与之对应的软 ...
- 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
一. 修改化定制Android4.0系统 Android系统启动时,先加载Linux内核,在Linux的framebuffer驱动里可以定制开 机界面,Linux内核启动成功后,挂载根文件系统,启动A ...
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)
第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...
- Android系统JNI的实现方式
Android系统JNI的实现方式 All rights reserved JNI(Java Native Interface)定义了一种Java代码调用C或者C++代码等其它代码的方式. 在A ...
- Android系统关机或几种方式重启
---------------------------------------------------------------------------------------------------- ...
- Android系统定制和源码开发以及源码编译(附视频)
Android系统定制配套视频: 为了把Android系统源码定制和编译的课程讲完,从准备到录制完所有的视频,一共花去了近半年的时间,前前后后各种下载源码,编译源码,系统不兼容,版本适配,虚拟机配置困 ...
随机推荐
- Struts2的各种标签库
1 在JSP中使用taglib编译指令导入标签库 <%@ taglib prefix="s" uri="/struts-tags" %> ----- ...
- 我自己常用的Watir自动化测试结果报表
特别声明:该报表框架不是我搭建的.
- 微信小程序-B站:wxml和wxss文件
WXML WXML(WeiXin Markup Language)是微信的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. (小安娜:好像很厉害的样子,那基础组件.事件系统是什么?感觉更厉 ...
- sharepoint服务器修改密码后出现HTTP Error 503
HTTP Error 503 解决办法: 更改sharepoint 网站应用程序池标示后,更改标示重新输入管理员密码,问题解决!
- B. Simple Molecules
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- 土法搞docker系列之自制docker的graph driver vdisk
写在最前 偶然整理,翻出来14年刚开始学docker的时候的好多资料.当时docker刚刚进入国内,还有很多的问题.当时我们的思考方式很简单,docker确实是个好的工具,虽然还不成熟.但是不能因为短 ...
- 标准WPS框架下的空间信息处理服务部署方法
笔者第一篇博客里面曾介绍过将专题图制作功能发布为WPS,但随着后面的研究,才发现那时候发布的不是真正WPS框架下的服务,而只是通过Servlet将其发布为可调用的网络服务,所以今天再具体介绍一下真正的 ...
- 博客使用的CSS代码备份
CSS代码备份 /*simplememory*/ #google_ad_c1, #google_ad_c2 { display: none; } .syntaxhighlighter a, .synt ...
- HDU 6092:Rikka with Subset(dp)
分析 很多个较小的数字可以随机组合成较大的数字,所以B数组从小到大开始遍历,除了空集,最小的那个存在的个数对应的数字必然是a数组中的数字. 每求出这一部分之后,更新后续的B序列. 分析完后,主要的难点 ...
- python 面向对象十二 元类
一.类也是对象 只要使用关键字class,Python解释器在执行的时候就会创建一个对象.下面的代码段: class ObjectCreator(object): pass 将在内存中创建一个对象,名 ...