博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ----制作自己的Vendor
阅读量:5936 次
发布时间:2019-06-19

本文共 4821 字,大约阅读时间需要 16 分钟。

 
Android源代码使用一个可定制的编译系统来生成 特定的,针对自己硬件平台的Android系统,比方不使用缺省的out/target/prodect/generic文件夹,
本文档简介了这个编译系统,并做一个针对自己硬件平台的Android,
这部分工作主要是由Android源码中的Vendor目录来实现,假设该目录不成立,
自己能够在Android源码的根目录下建立该目录,这个目录里面存放特定的文件,比方自己板子上的3G驱动,WIFI驱动,
自己的应用程序,都能够放在这里。提取文件系统的时候,能够把这个目录里面的东东放到文件系统里面,这样用户能够清晰的
看到你的板子特有的功能。

 

一、细节描写叙述以下几步描写叙述了怎样配置makefile来为执行Android的设备编译系统。1、在/vendor/文件夹下创建company文件夹mkdir vendor/
2、在company文件夹下创建一个 products文件夹mkdir vendor/
/products/3、创建一个设备相关的makefile:vendor/
/products/
.mk这个make文件里至少要包括以下代码:$(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) # # Overrides PRODUCT_NAME :=
PRODUCT_DEVICE :=
4、在产品定义文件里加入设备相关的变量。5、在products文件夹下,创建一个AndroidProducts.mk文件,这个文件指向设备的make文件。 # # This file should set PRODUCT_MAKEFILES to a list of product makefiles # to expose to the build system. LOCAL_DIR will already be set to # the directory containing this file. # # This file may not rely on the value of any variable other than # LOCAL_DIR; do not use any conditionals, and do not look up the # value of any variable that isn't set in this file or in a file that # it includes. # PRODUCT_MAKEFILES := / $(LOCAL_DIR)/first_product_name.mk /6、在company文件夹下创建一个包括特定board特征的文件夹,这个文件夹须要与PRODUCT_DEVICE这个变量中的
相匹配。这个文件夹下会包括一个make文件,这个make文件能够用以下的方式訪问到,比方:mkdir vendor/
/
7、在上步的文件夹(vendor/
/
)下,创建一个BoardConfig.mk文件# These definitions override the defaults in config/config.make for
# # TARGET_NO_BOOTLOADER := false # TARGET_USE_GENERIC_AUDIO := true8、假设你想改动系统属性,在文件夹vendor/
/
下创建一个system.prop文件。 # system.prop for # This overrides settings in the products/generic/system.prop file # # rild.libpath=/system/lib/libreference-ril.so # rild.libargs=-d /dev/ttyS09、在products/AndroidProducts.mk文件里加入一个指向
.mk的引用。 PRODUCT_MAKEFILES := / $(LOCAL_DIR)/first_product_name.mk / $(LOCAL_DIR)/second_product_name.mk10、文件夹vendor/
/
下必须包括一个Android.mk文件,这个文件里至少包括以下的代码: # make file for new hardware from # LOCAL_PATH := $(call my-dir) # # this is here to use the pre-built kernel ifeq ($(TARGET_PREBUILT_KERNEL),) TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel endif # file := $(INSTALLED_KERNEL_TARGET) ALL_PREBUILT += $(file) $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP) $(transform-prebuilt-to-target) # # no boot loader, so we don't need any of that stuff.. # LOCAL_PATH := vendor/
/
# include $(CLEAR_VARS) # # include more board specific stuff here? Such as Audio parameters. #11、想为同样的board创建第二个product时,创建一个名字为vendor/company_name/products/
.mk的make文件,这个文件里包括:$(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk) # # Overrides PRODUCT_NAME :=
PRODUCT_DEVICE :=
眼下为止,你已经有了两个新product,
,都属于
。验证一下一个product是否配置正确,执行 . build/envsetup.sh make PRODUCT-
-user在/out/target/product/
文件夹下,你能够看到生成的二进制文件。二、产品文件树没有翻译三、product定义文件不同的产品,在它的product定义文件里会对一些变量赋予不同的值,product定义文件能够从其他product定义文件里继承。Product定义文件里包括的变量例如以下:

 

Parameter

Description

Example

PRODUCT_NAME

End-user-visible name for the overall product. Appears in the "About the phone" info.

 

PRODUCT_MODEL

End-user-visible name for the end product

 

PRODUCT_LOCALES

A space-separated list of two-letter language code, two-letter country code pairs that describe several settings for the user, such as the UI language and time, date and currency formatting. The first locale listed in PRODUCT_LOCALES is is used if the locale has never been set before.

地区标识

en_GB de_DE es_ES fr_CA

PRODUCT_PACKAGES

Lists the APKs to install.

在这个product中要安装的APK列表。

Calendar Contacts

PRODUCT_DEVICE

Name of the industrial design

生产商的名字

dream

PRODUCT_MANUFACTURER

Name of the manufacturer

制造商的名字

acme

PRODUCT_BRAND

The brand (e.g., carrier) the software is customized for, if any

软件定制后的分支标识。

 

PRODUCT_PROPERTY_OVERRIDES

List of property assignments in the format "key=value"

属性列表,以"key=value"形式列出。

 

PRODUCT_COPY_FILES

List of words like source_path:destination_path. The file at the source path should be copied to the destination path when building this product. The rules for the copy steps are defined in config/Makefile

当编译时,源路径上的文件会被拷贝到目标路径上去,详细的复制规则在config/Makefile中定义。

 

PRODUCT_OTA_PUBLIC_KEYS

List of OTA public keys for the product

 

PRODUCT_POLICY

Indicate which policy this product should use

 

PRODUCT_PACKAGE_OVERLAYS

Indicate whether to use default resources or add any product specific overlays

vendor/acme/overlay

PRODUCT_CONTRIBUTORS_FILE

HTML file containing the contributors to the project.

包括了项目贡献者名字列表的HTML文件。

 

PRODUCT_TAGS

list of space-separated words for a given product

 
以下给出了一个经典的product定义文件$(call inherit-product, build/target/product/generic.mk)#OverridesPRODUCT_NAME := MyDevicePRODUCT_MANUFACTURER := acmePRODUCT_BRAND := acme_usPRODUCT_LOCALES := en_GB es_ES fr_FRPRODUCT_PACKAGE_OVERLAYS := vendor/acme/overlay

 

 

 

本博客參考CSDN网友  ,近期自己须要制作Vendor,很须要这种资料,在此感谢网友的博客。

转载地址:http://pictx.baihongyu.com/

你可能感兴趣的文章
《Android 源码设计模式解析与实战》——第1章,第1.4节让项目拥有变化的能力——依赖倒置原则...
查看>>
浅谈html引入css的几种方式
查看>>
《jQuery Cookbook中文版》——1.4 在指定上下文中选择DOM元素
查看>>
畅捷通入驻阿里云市场,为小微企业在线“号脉开方”
查看>>
《数据驱动的网络分析》——2.3 NetFlow
查看>>
《C++编程调试秘笈》——2.2 怎样用编译器捕捉缺陷
查看>>
Apache Storm 官方文档 —— 常用模式
查看>>
Java网络教程-基础
查看>>
并发数据结构-1.1.3 非阻塞技术
查看>>
实用的系统工具之 lsof
查看>>
中国研发首个神经网络处理器
查看>>
在 Ubuntu Server 16.04 LTS 上安装 LAMP
查看>>
《HTML5 canvas开发详解(第2版)》——1.10 第二个示例:猜字母
查看>>
android加载大图,防止oom
查看>>
2016,再见,在也不见
查看>>
RecyclerView 实现gallery画廊效果
查看>>
myrocks统计信息
查看>>
【区块链之技术实战】在金融领域,区块链该咋用呢?
查看>>
基于ANTLR语法树编写解释引擎最佳实践
查看>>
关于TS流的解析
查看>>