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";