
本文共 8894 字,大约阅读时间需要 29 分钟。
1,Build otapackage后system.img没有打包进去?
Ota包里面缺失system img,原因是客户修改了prop里面的“ro.product.device” value值.尝试以下两种方式,ota_from_target_files中不需要设定 cust_dir1 这个值了:a. 修改ota_from_target_files 中的system_path:system_path = os.path.join("out/target/product/g32wh_xfy","system.img")b. 將 system.img copy 一份到不需要 device 相关的路径,比如out/target下,那么在此处设置system_path值如下:system_path = os.path.join("out/target", "system.img")
2,Build OTA升级包的时候出现异常,无法编译 ?
是low memory 导致build otapackage 失败的:需确定build otapackage时保证足够的memory,比较多的情况下在制作升级包时,都是采用虚拟机的方式,而不是特定义的一台server,所以就会有low memory 的情况。如果可 以,增加此虚拟机的memory 也行参考以下两种方案:a) 将 partition_table_MT6589.xls中的android那个区域的大小改小一些, 删除一些内置 在system区域的apk;(cause:对于build otapackage 失败,是在打包ota时,对 ota进行签章时报了low memory的error。对于签章sign所需的memory的大小,取决于apk的大小,所以对partition_table_MT6589.xls 中的android 分区设定,如果android 分区设定大,则在对ota中的apk进行签章时要求的memory也要大。)b) 修改SignFile.java 中的cmd = [“java”, “-Xmx2048m”, “-jar”, 这条 ,将“-Xmx2048m”,修改 为“-Xmx4096m” 或者更大,也可。(cause:对于这个SignFile 中 的这个cmd,是指当前签章run 的虚拟机上,指定虚拟机可用的最大heap size为2048,这个值 需要参考当前的build的pc server的可用内存的大小。
3,DM/FOTA/MOTA相关的feature宏开关 ?
在alps/mediate/config/[project]/projectConfig.mk里的对应DM/FOTA/MOTA的宏开关都由客户自行控制,但如果要实现相应的功能,则需要将相应的宏开关设置为Yes。宏开关所控制的应用如下: MTK_SMSREG_APP -- 短信自注册编译开关 MTK_DM_APP--DM功能(包括采配,SCOMO, LAWMO,FUMO)编译开关MTK_FOTA_SUPPORT-- FOTA编译开关MTK_FOTA_ENTRY-- FOTA升级手机端入口开关MTK_SCOMO_ENTRY -- SCOMO下载及升级状态查看入口开关MTK_GOOGLEOTA_SUPPORT -- MOTA升级功能 (JB2 之前版本)MTK_SYSTEM_UPDATE_SUPPORT --MOTA升级功能(JB2及JB2之后的版本)。
4,DM短信自注册,在重新download版本后也要重新短信自注册?
支持情况:目前MT6573/75/77/89都支持DM短信自注册相关资料:有关短信子注册,DM的参考资料请在DMS搜索以下文档:CMCC_Common_DM送测版本克制化准备.ppt客户端的代码请参考:alps/mediatek/source/packages/SmsRegSolution: 修改alps/mediatek/source/packages/dm_agent_binder/下的dm_agent.c文件,将其中的define DM_IMSI_PATH DM_ROOT_PATH "imsi"修改为define DM_IMSI_PATH "/data/imsi"这样修改的话,在恢复出厂设置时也会重新发送自注册消息。
5,Fota 升级error总结。
a. 0x8001007C: system_attr 文档与当前device版本的system.img不一致b. 0x80010016: system 分区太小c. 0x80010022: boot.xml或system.xml配置有误,请check boot.xml/system.xml中<PartitionName>boot</PartitionName>或 <PartitionName>system</PartitionName>d, 0x80000001: redbend 的 library 在解析升级包时需要更多的memory(默认20MB,一般够),可分析制作boot.delta时的log,并check boot.xml,设置:SourceInputOffsetInFlash>0</SourceInputOffsetInFlash TargetInputOffsetInFlash>0</TargetInputOffsetInFlashe. 0x8000013C:ram太小,ram use cannot be less than 0x10004,请采用v7.0工具制作升级包
6, How to make OTA.zip for SDcard Upgrade ?
1. Enable SystemUpdate: EngineerMode--->Others--->System update options--->Sd card Update22. Build : makeMtk [project] newmakeMtk [project] otapackages Full package:[project]-ota-eng.[username].zip ,rename as updat.zip; or delta package, please use command : build/tools/releasetools/ota_from_target_files -n -i old.zip
new.zip update.zip
3. META-INF(/com/google/andriod/updater-script) (from full package)
scatter.txt:partition layout information(from full package)
type.txt: type of update package(from full package)
config.xml:(configure follow info by yourself ,please preference build.prop)
4.将以上文件 files (update.zip, META-INF, scatter.txt, type.txt, configure.xml)打包为 **.zip
5. copy **.zip to SD card , entry setting—>system update
8, MOTA Server 搭建环境问题.
在搭建MOTA Server时,会有无权访问文档或者无法打开某些文档的类似error 原因:搭建MOTA server的整体环境有问题解决:製作差分包的server環境是否有以下3個問題1. out/host/linux-x86/bin/ 目錄下的檔案必須為可執行權限 chmod 755 *2. server 是否缺少 32 bit 相關 library, apt-get install libc6-i386 lib32gcc1 lib32z1lib32stdc++6 ia32-libs3. server 是否缺少 java 程式, apt-get install openjdk-6-jre
9,MOTA Server上传整包软件失败,界面显示upload error?
1.在/var/www/路径下需要创建文件夹命名为OTA 2.在fota/db.php文件里面,查看$upload_version_dir的值是否等于'/var/www/OTA/';如 果不是的话,需要对1中提到的OTA路径按要求进行修改。
10.MOTA升级时更改版本问题
默认情况下,可以通过修改ProjectConfig.mk中的MTK_BUILD_VERNO即可达到修改版本的目的。如果客户想保留MTK_BUILD_VERNO字段不变,采用CUSTOM_BUILD_VERNO来区分版本,需做以下修改:– 配置:ProjectConfig.mk中配置宏:CUSTOM_BUILD_VERNO=custom.v1– APP code:GoogleOta 中的Util.java中的getDeviceVersionInfo()里的String buildnumber = SystemProperties.get("ro.build.display.id")修改为String buildnumber = SystemProperties.get("ro.costom.build.version")– 差分包:制作差分包的准备包时,配置config.xml时:buildnumber 参考build.prop里的ro.costom.build.version进行配置 。
11,OTA 升级查询版本失败,log显示yourversion is illegal ?
这是因为手机的信息,也就是old版本的信息与Server上提交old版本时候填写的信息不一致。 old版本,new版本在upload到server的时候,server上要求填写的项是来自于package包的build.prop文件。对应关系如下:build.prop upload.php– ro.build.display.id-----------------build number of the version– ro.product.locale.language---------------LANGUAGE– ro.product.manufacturer------------------OEM– ro.operator.oper--------------------OPERATOR– ro.product.device-----------PRODUCT– ro.build.fingerprint------------FINGERPRINT– ro.build.version.release--------------------android version– ro.product.name------------------------name of the version
12,FAQ10254]OTA 升级重启后,提示:”fail toupgrade to version *“.
原因:客户有自定义一个 custom version,这样,在升级后通知升级结果时,原code获取的版本信息是build.verno,并不是custom version,所以不一样,提示升级失败。请参考以下方式修改code:请修改 SystemUpdateReceiver.java 的 getUpdateResult():修改后:private boolean getUpdateResult() {Xlog.i(TAG, "getUpdateResult");if (FeatureOption.MTK_EMMC_SUPPORT) { try { IBinder binder = ServiceManager.getService("GoogleOtaBinder"); SystemUpdateBinder agent = SystemUpdateBinder.Stub .asInterface(binder); if (agent == null) { Xlog.e(TAG, "Agent is null."); return false; } return agent.readUpgradeResult(); } catch (RemoteException e) { e.printStackTrace(); return false; } } else { //add by lyx begin String strCurrentVersion = SystemProperties.get("ro.custom.build.version"); if(strCurrentVersion ==null){ String strCurrentVersion = SystemProperties.get("ro.build.display.id"); } //add by lyx end if (strCurrentVersion != null) { strCurrentVersion = strCurrentVersion.trim(); Xlog.i(TAG, "strCurrentVersion = " + strCurrentVersion); } DownloadInfo downloadInfo = DownloadInfo.getInstance(mContext); String strTargetVersion = downloadInfo.getTargetVer(); if (strTargetVersion != null) { strTargetVersion = strTargetVersion.trim(); Xlog.i(TAG, "strTargetVersion = " + strTargetVersion); } return (strTargetVersion.equalsIgnoreCase(strCurrentVersion)); } }
13,OTA升级,无法找到更新包?
在对比版本的时候,会对比fingerprint值,log来看这里12-20 09:49:20.895: INFO/SystemUpdate/HttpManager(2002): fingerPrintPkg = XXXXX/vh075_td_emmc_xxxxx_s4509/vh075_td_emmc_xxxxx_s4509:4.2.2/JDQ39/1387464158:user/test-keys12-20 09:49:20.895: INFO/SystemUpdate/HttpManager(2002): fingerPrintLocal = fingerPrintLocal是获取来的本地手机的fingerprint值,这边获取为null,是因为 客户定义的版本号太长了,导致在组装成fingerprint值的时候,超出了google限制的property的长度92 byte,这种情况下,请改小客户定义版本内容,即XXXXX/vh075_td_emmc_xxxxx_s4509/vh075_td_emmc_xxxxx_s4509:4.2.2/JDQ39/1387464158:user/test-keys
14,OTA升级不能进入到recovery mode
原因:在初始化时没有将应用GoogleOtaBinder设置为user root。解决:在init.rc中添加以下两行:1, service GoogleOtaAgent /system/bin/GoogleOtaBinder2, user root
15,要求FOTA升级功能适用所有运营商
解决:A. 将/alps/mediatek/source/operator/OP02/SPEC0200/operator_packages下的fota_zte文件拷贝到/alps/mediatek/source/external下b, 将Android.mk文件的第一行”ifneq”和最后一行的”endif”用“#”注释掉
16,用ota_from_target_files制作差分包失败问题
原因:客户误用整包来制作差分包了,需要改换成ota.zip来制作差分包。解决:您在用ota_from_target_files制作差分包时,请用/out/target/product/[product]/obj/PACKAGING/target_files_intermediates/
下面的[project]-target_files-eng.[username].zip,改名为ota.zip。这个是用来制作差分包用
的原始包。
17,有关OTA升级与FOTA升级的区别,及相应的资料 ?
支持情况:目前MT6573/75/77都支持OTA升级
相关资料:有关OTA升级的参考资料请参考DMS的以下路径:
/3G Phone Data/Smart Phone/Software_Customer/Standard Package/MT6577 SW Doc
Package/Application/OTA Update
客户端的代码请参考:alps/mediatek/source/packages/GoogleOta*三支文件
DM/fota和mota的区别:是两种软件版本升级的方式,只需采用其中之一即可。
fota: 是需要拿到三方RedBend的license,升级包的发布与管理是由运行商控制的,在实现过程中
需要从运行商那申请开通DM(增强售后服务)功能,在升级过程中需要收费;
mota: 是敝司自行实现的一套升级方式,其中server端和客户端都已经实现,且免费提供给客户
,是不需要三方介入。
18,FAQ11682]手机在进行OTA升级的时候,将仅使用WLAN升级不选择的时候,点击升级后仅使用WLAN升级又会勾选
这个是MTK的design,因为差分包一般都比较大,我们不建议终端用户使用GPRS流量来下载。所
以每一次都会初始化wifi-only这个check box,以保证终端用户不会因为没有勾选而造成流量损
失。
我们的代码流程你可以参考一下
点击是—–检查GPRS网络——GPRS网络不可用(客户自己断开了GPRS网络)———-下
载切到PauseDownload状态———–初始化wifi-only为勾选
点击否——初始化wifi-only为勾选
如果客户觉得这种行为不合适,那可以注释掉initWifiOnlyCheckbox(),这个方法的调用。但
是MTK不建议修改
19,差分包升级时签章问题
原因:A版使用的key和B版使用的key不一致,导致签章error。解决:先确定在ProjectConfig.mk文件中的宏:MTK_SIGNATURE_CUSTOMIZATION设置,如果设置为yes, 客户需要自己去gen releasekey,生成key的文档参考DMS如下路径的资料:/Product Line/WCX/3G Phone Data/Smart Phone/Software_Customer/Standard Package/MT6575 SW Doc Package/Build/V2.3 /Application Signing Process Enhancement.ppt ,产生releasekey之后(releasekey在:alps/build/target/product/security/project下),Build第一个版本,build A new, build A otapackage, 将A版download到手机上,再build第二版,build B new, build Botapackage。最后用命令./build/tools/releasetools/ota_from_target_files –k alps/build/target/product/security/project/release –n –i oldotapackage.zip newotapackage.zip update.zip.如果宏MTK_SIGNATURE_CUSTOMIZATION设置为no,则不需要产生key,使用默认的alps/build/target/product/security下的testkey。这时在build 完A、B两个版本后直接用命令:./build/tools/releasetools/ota_from_target_files –n –i oldotapackage.zip newotapackage.zip update.zip.来制作差分包
发表评论
最新留言
关于作者
