码迷,mamicode.com
首页 > 其他好文 > 详细

完全升级OTA包的制作流程(上)

时间:2015-02-27 17:07:53      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

1,    ./mk otapackage

首先介绍一下update.zip

update.zip包的结构如下:
RECOVERY$ tree -L 2
├── kernel
├── ramdisk
└── RAMDISK
    ├── advanced_meta_init.rc
    ├── data
    ├── default.prop
    ├── dev
    ├── etc
    ├── init
    ├── init.factory.rc
    ├── init.goldfish.rc
    ├── init.mt6516.rc
    ├── init.rc
    ├── meta_init.rc
    ├── proc
    ├── res
    ├── sbin
    ├── sys
    ├── system
    └── tmp

BOOT$ tree -L 2
├── kernel
├── ramdisk
└── RAMDISK
    ├── advanced_meta_init.rc
    ├── data
    ├── default.prop
    ├── dev
    ├── init
    ├── init.factory.rc
    ├── init.goldfish.rc
    ├── init.mt6516.rc
    ├── init.rc
    ├── meta_init.rc
    ├── proc
    ├── res -> /system/res
    ├── sbin
    ├── sys
└── system

OTA/bin$ tree
├── applypatch
├── applypatch_static
├── check_prereq
└── updater

META/filesystem_config.txt 并将其加入到 zip 包中。该文件保存了 system 目录下各目录、文件的权限及 owner.
$ head META/filesystem_config.txt
system 0 0 755
system/usr 0 0 755
system/usr/srec 0 0 755
system/usr/srec/config 0 0 755
system/usr/srec/config/en.us 0 0 755
system/usr/srec/config/en.us/grammars 0 0 755
system/usr/srec/config/en.us/grammars/phone_type_choice.g2g 0 0 644
system/usr/srec/config/en.us/grammars/VoiceDialer.g2g 0 0 644
system/usr/srec/config/en.us/grammars/boolean.g2g 0 0 644
system/usr/srec/config/en.us/g2p 0 0 755

编译脚本:
build/core/Makefile

1)update.zip名称与路径信息
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
  name := $(name)_debug
endif
name := $(name)-target_files-$(FILE_NAME_TAG)

intermediates := $(call intermediates-dir-for,PACKAGING,target_files)
BUILT_TARGET_FILES_PACKAGE := $(intermediates)/$(name).zip

2)OTA所需要的工具
built_ota_tools := \
    $(call intermediates-dir-for,EXECUTABLES,applypatch)/applypatch \
    $(call intermediates-dir-for,EXECUTABLES,applypatch_static)/applypatch_static \
    $(call intermediates-dir-for,EXECUTABLES,check_prereq)/check_prereq \
    $(call intermediates-dir-for,EXECUTABLES,sqlite3)/sqlite3 \
    $(call intermediates-dir-for,EXECUTABLES,updater)/updater

3)包的组成部分
$(BUILT_TARGET_FILES_PACKAGE): \
        $(INSTALLED_BOOTIMAGE_TARGET) \
        $(INSTALLED_RADIOIMAGE_TARGET) \
        $(INSTALLED_RECOVERYIMAGE_TARGET) \
        $(INSTALLED_SYSTEMIMAGE) \
        $(INSTALLED_USERDATAIMAGE_TARGET) \
        $(INSTALLED_CACHEIMAGE_TARGET) \
        $(INSTALLED_VENDORIMAGE_TARGET) \
        $(INSTALLED_ANDROID_INFO_TXT_TARGET) \
        $(SELINUX_FC) \
        $(built_ota_tools) \
        $(APKCERTS_FILE) \
        $(HOST_OUT_EXECUTABLES)/fs_config \
        | $(ACP)


完全升级OTA包的生成
1)OTA包的命名

# OTA update package
name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
  name := $(name)_debug
endif
name := $(name)-ota
2)OTA包的生成路径
INTERNAL_OTA_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip
3)有update.zip包生成OTA包
ifneq ($(TARGET_USERIMAGES_USE_UBIFS),true)
    $(hide) ./build/tools/releasetools/ota_from_target_files -v \
       -n \跟时间戳没有关系,即前后版本可以互相升级
       -p $(HOST_OUT) \路径
       -k $(KEY_CERT_PAIR) \签名
       $(BUILT_TARGET_FILES_PACKAGE) $@
else
    $(hide) ./build/tools/releasetools/ota_from_target_files -v \
       -n \
       -g \
       -p $(HOST_OUT) \
       -k $(KEY_CERT_PAIR) \
       $(BUILT_TARGET_FILES_PACKAGE) $@
Endif
4)通过伪目标启动生成OTA包
.PHONY: otapackage
otapackage: $(INTERNAL_OTA_PACKAGE_TARGET)


完全升级OTA包的制作流程(上)

标签:

原文地址:http://blog.csdn.net/cyj369258/article/details/43968951

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!