ota升级总结

来源:互联网 发布:http上传文件java代码 编辑:程序博客网 时间:2024/05/17 04:14
升级文件:可用的update.zip
目录:/flash/update.zip  必须是这个,一个字都不能差
这里不能指定为/mnt/storage/update.zip,即使“/flash”和"/mnt/storage" 在目录上他们的映射是一样的.
这里不得不说,做底层的真tm坑爹啊! 


第一:原厂真坑爹
SDK里面自带的RecoverySystem.java在机顶盒上根本就不能用! 
测试:
这里没有添加任何权限。
reboot权限和cache权限在Eclipse中是hide了的。
SDK的RevoverySystem.java + Eclipse编译 + 不要shareduserId == 权限不够,不能进入重启环节

基于同样的变量,这里也没有加同样的变量。
新的RecoverySystem.java + 源码编译 + 不要shareduserId == 权限不够,不能进入重启环节

基于同样的变量,这里也没有加同样的变量。
新的RecoverySystem.java + 源码编译 + 要shareduserId == 能升级成功

由于新的RecoverySystem.java有隐藏类FileUtils、BerInputStream、ContentInfo、SignedData、X509CertImpl
所以,在使用新的RecoverySystem时必须在源码编译下使用。

总结:ota升级相关的程序,
1、必须用源码下编译,
2、并且使用shareduserId,
3、并且使用新的RecoverySystem.java

第二:权限的理解
实现apk有系统的权限,必须要做三步:
第一种实现方式
1、在manifest文件中定义android:sharedUserId="android.uid.system"
2、Andorid.mk 中需要添加LOCAL_CERTIFICATE := platform 
3、需要放在packages/apps/下去 mm
第二种实现方式
1、也是需要定义android:sharedUserId="android.uid.system"
2、在源码或是Eclipse中编译生成apk
3、用platform.x509.pem 和 platform.pk8这两个文件进行认证,但是这两个文件的通用性不大
一般都是一个厂家一个版本,不能通用。

如果在manifest文件中没有指定android:sharedUserId="android.uid.system"的话,即使是在Android.mk
文件中指定了LOCAL_CERIFICATE:=platform,编译出来的apk也不能获取系统权限。

第三:遇到了一个很棘手的问题
在源码编译自己android工程的时候,怎样加入工程需要的jar包?

原创粉丝点击