2.[sprd]-(recovery升级本地验证)

1.全编并拷贝基础包img,

source build/envsetup.sh
lunch sp9820e_2h10_oversea-userdebug
make -j8 2>&1 |tee build.log

2.制作ota升级的资源target包

2.1
make -j8 otapackage 2>&1 |tee build.log
然后拷贝out下的img下载(注意:这个img一定要在make otapckage之后)

2.2
拷贝生成的基础版本的ota资源包
mkdir ota
cp out/target/product/sp9820e_2h10/obj/PACKAGING/target_files_intermediates/sp9820e_2h10_oversea-target_files-eng.zwl.zip ota/old.zip

3.制作一个新版本的差分资源包:

修改下版本号:
vim build/core/Makefile
 BUILD_DISPLAY_ID := just_for_test___123

再remake:
make -j8 2>&1 |tee build,log
编译新版本资源文件:
make -j8 otapackage 2>&1 |tee build.log

拷贝新版本的资源文件:
out/target/product/sp9820e_2h10/obj/PACKAGING/target_files_intermediates/sp9820e_2h10_oversea-target_files-eng.zwl.zip ota/new.zip

4.生成差分包

./build/tools/releasetools/ota_from_target_files -v -n -i ota/old.zip ota/new.zip ota/update.zip

5.进行本地升级

因为没有sd卡,所以把update.zip茶分包放到cache分区
adb root;
adb remount
adb push ota/update.zip cache/

adb shell (进入手机adb环境)
cd cache

如果没有recovery文件夹,就创建一个,有了就忽略
mkdir recovery

往recovery目录下的command中写命令,让recovery启动后进行本地升级
echo "--update_package=CACHE:update.zip" > cache/recovery/command

最后启动recovery 模式进行升级:
reboot recovery

6.等待升级完成,开机后查看是否升级完成

我们直接查看版本号:以下证明升级完成
shell@sp9820e_2h10:/ $ getprop |grep display                                   
[ro.build.display.id]: [just_for_test___123]

7.升级失败后可以直接在reocvery模式查看log:

adb root;
adb remount
adb shell "cat /tmp/recovery.log "

8.也可以在重启后查看log:

adb root
adb remount
adb shell "cat cache/recovery/last_log"

9.update.zip 目录结构(自己的分析,有错请指正)

total 544
drwxrwxr-x 3 zwl zwl   4096  6月 17 17:38 META-INF     
drwxrwxr-x 3 zwl zwl   4096  6月 17 17:38 patch        
drwxrwxr-x 3 zwl zwl   4096  6月 17 17:38 recovery
drwxrwxr-x 3 zwl zwl   4096  6月 17 17:38 system
-rw-rw-r-- 1 zwl zwl 537408  2月 29  2008 u-boot.bin

10.target_file资源包目录结构:
不需要更新什么的话,直接把old.zip 和 new.zip里面的同步,
最后再生成差分包update.zip就好了

drwxr-xr-x  3 zwl zwl      4096  6月 17 10:14 BOOT
drwxr-xr-x  2 zwl zwl      4096  6月 17 10:14 DATA
-rw-r--r--  1 zwl zwl     83968  6月 17 10:14 dt.img
drwxr-xr-x  2 zwl zwl      4096  6月 17 10:14 META
drwxr-xr-x  3 zwl zwl      4096  6月 17 10:14 OTA
drwxr-xr-x  2 zwl zwl      4096  6月 17 10:14 RADIO
drwxr-xr-x  3 zwl zwl      4096  6月 17 10:14 RECOVERY
drwxr-xr-x 16 zwl zwl      4096  6月 17 10:14 SYSTEM

11.user版的可能无法通过adb获取log,我们需要将log导出到uart log

同时将recovery的log定位到串口(bootable/recovery/recovery.cpp):
//static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log";
static const char *TEMPORARY_LOG_FILE = "/dev/ttyS1";

猜你喜欢

转载自blog.csdn.net/qq_16919359/article/details/106808355
2.