Android_OTA升级

Android_OTA升级


平台:全志A40I

源码:Android 7.1    Linux 3.1

第一步:
把FanDisplay.apk拷贝到\192.168.1.110user01a40i-7.1a40i-7.1-fsp-newandroid
packagesappsFanDisplay下

第二步:
运行SecureCRT
连接192.168.1.110 user01 123456
cd ~/a40i-7.1/a40i-7.1-fsp-new/android
source build/envsetup.sh
lunch 24
选择:a40_p1-eng  24

//make clean;
mmm -B external/fsp_mg_ctrl/

rm -R /home/user01/a40i-7.1/a40i-7.1-fsp-new/android/out/target/product/a40-p1/obj/APPS/FanDisplay_intermediates/  /home/user01/a40i-7.1/a40i-7.1-fsp-new/android/out/target/product/a40-p1/system/app/FanDisplay/
extract-bsp;make -j16;pack 
make;make otapackage


//拷贝OTA文件
cp ./out/target/product/a40-p1/obj/PACKAGING/target_files_intermediates/*.zip ./OTA/301016.zip
//生成制作差分包:
./build/tools/releasetools/ota_from_target_files -i ./OTA/301015.zip ./OTA/301016.zip ./OTA/upgrade301015301016.zip



第三步:

Z:/a40i-7.1/a40i-7.1-fsp-new/android/out/target/product/a40-p1/obj/PACKAGING/target_files_intermediates

把\192.168.1.110user01a40i-7.1a40i-7.1-fsp-newlichee	oolspack目录下生成的img拷贝出来烧录
Z:a40i-7.1a40i-7.1-fsp-newlichee	oolspack


//生成制作差分包:
./build/tools/releasetools/ota_from_target_files -i ./OTA/100000.zip ./OTA/1000002.zip ./OTA/upgrade100000100002.zip



//放FanDisplay APP的地方
Z:a40i-7.1a40i-7.1-fsp-newandroidpackagesappsFanDisplay



//生产的OTA的文件  路径:
Z:a40i-7.1a40i-7.1-fsp-newandroidout	argetproducta40-p1objPACKAGING	arget_files_intermediates

//生成的OTA的完整的包    路径:
Z:a40i-7.1a40i-7.1-fsp-newandroidout	argetproducta40-p1





//1、修改了驱动6236 、6225的编译过程
Z:a40i-7.1a40i-7.1-fsp-newandroiddevicesoftwinnera40-p1BoardConfig.mk
cd ~/a40i-7.1/a40i-7.1-fsp-new/android/hardware/libhardware_legacy
mmm -B

BOARD_HAVE_BLUETOOTH_NAME := ap6255

BOARD_USR_WIFI := ap6255

//2、添加删除so文件
Z:a40i-7.1a40i-7.1-fsp-newandroiddevicesoftwinnera40-p1a40_p1.mk

        packages/apps/FanDisplay/libcontroller.so:system/lib/libcontroller.so 

Z:a40i-7.1a40i-7.1-fsp-newandroidout	argetproducta40-p1system

device/softwinner/a40-p1/fpga.bin:system/etc/fpga.bin 
Z:a40i-7.1a40i-7.1-fsp-newandroiddevicesoftwinnera40-p1
Z:a40i-7.1a40i-7.1-fsp-newandroidout	argetproducta40-p1systemetc



*/
————————————————————————————————————————————————————————————————————————————————————————————————

androidootable
ecovery


在Android源码整编后执行make otapackage命令即可生成OTA整包
    OTA升级过程中命令make otapackage完成了三件事情:
        重新对system.img文件进行了打包;
        生成差分资源包,路径为out/target/product/<product-name>/obj/PACKAGING/target_files_from_intermedias/<product-name>-target_files-<version-name>.zip,差分资源包用于生成整包和差分包;
        生成OTA   整包,路径为out/target/product/<product-name>/<product-name>-ota-<version-name>.zip

制作:

    整包:
        out/target/product/<product-name>/<product-name>-ota-<version-name>.zip        
        
    差分:        
        make;make otapackage  --->     生成差分资源包     A包     
        make;make otapackage  --->       生成差分资源包   B包
        ./build/tools/releasetools/ota_from_target_files  -i <A包> <B包>  <差分包名>
        
        
写入:

    创建新进程安装升级包
    
    创建了一个新的进程并在新进程中运行升级包中的META-INF/com/google/android/updater-binary文件
    (参数binary已在此前赋值),此文件将按照META-INF/com/google/android/updater-script中的指令
    将升级包里的数据写入到存储区中
    
    
    ./bootable/recovery/updater目录
    通过查看Android.mk代码可知,文件install.c、updater.c将会被编译为可执行文件updater存放到目录
    out/target/product/<product-name>/obj/EXECUTABLES/updater_intermediates/中,而在生成差分资源
    包(target-files zipfile)时,会将此文件添加到压缩包中。
    
    
    OTA/bin/updater主要由bootable/recovery/updater目录下的install.c和updater.c编译而成    
    install.c中定义了读写系统存储区的操作函数(这才是重写系统数据的真正代码)并将这些函数与updater-script中的指令映射起来    
    updater.c会首先装载install.c定义的函数,之后便解析升级脚本updater-script,执行其对应的操作命令    
        
        
        
    Android源码:F:otaandroidvendorawprivateapkUpdate
    系统:         system/app/update.apk
        
        
https://blog.csdn.net/teliduxing1029/article/details/51536560        
https://blog.csdn.net/qq_31811537/article/details/85842762        
https://blog.csdn.net/zhou_chenz/article/details/54917622        
https://www.cnblogs.com/nuoyan/p/11861705.html




author:panda_w




 笔记:

1.

原文地址:https://www.cnblogs.com/panda-w/p/11947363.html