Android OTA升级

2023-05-16

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/SmsReg
Solution: 修改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</TargetInputOffsetInFlash

e. 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 Update
2
2. Build : makeMtk [project] new
makeMtk [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 lib32z1
lib32stdc++6 ia32-libs
3. 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-keys
12-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/GoogleOtaBinder
2, 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.来制作差分包
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android OTA升级 的相关文章

  • 测试权限和 Android 应用清单文件

    我想知道是否有办法添加某些权限 或任何东西 到 android 清单文件 但这样它仅在测试运行期间使用 不在生产期间使用 我正在寻找一些程序化的东西 而不是在测试时剪切和粘贴 这是上下文 我正在读这篇文章 http developer an
  • 在 Android 中设置 Signalr:崩溃/挂起问题

    我跟着本教程 https whathecode wordpress com 2014 03 20 getting started with the java signalr sdk 为我的 Android 应用程序设置一个 NET 后端来实
  • Android - NumberPicker 滚动/快速滑动更快

    如何使数字选择器滚动 快速滑动更快 目前从00分钟到59分钟需要付出很大的努力 我尝试过一些例子Android 中 Viewpager 控制器速度减慢 https stackoverflow com questions 8155257 sl
  • 无法创建新的远程会话。阿皮姆

    public class StartFirstJobTest AppiumDriver driver BeforeTest public void setUp throws Exception DesiredCapabilities cap
  • 清单合并失败:属性 application@appComponentFactory

    一切都很好 但我正在尝试添加这个库https github com wdullaer MaterialDateTimePicker https github com wdullaer MaterialDateTimePicker有了这个 i
  • 鼠标在两个视图上移动,如何让它们都处理`ACTION_MOVE`事件

    我有两个视图 较大的一个在底部 较小的一个在顶部 如下图所示 现在我在 view1 view2 外部 上按鼠标 然后移动到 view2 我发现即使鼠标在移动过程中位于view2内部 view2也不会得到ACTION MOVE事件 只有vie
  • Android 重新启动我的 Activity

    我怎样才能做到这一点 单击按钮 mycontext finish 然后 重新开始 你可以尝试这个 MyActivity finish Intent intent new Intent MyActivity this MyActivity c
  • 如何在Android中打开设备管理员设置?

    我想去Security gt Device administrators然而 在我的设置中 我只能弄清楚如何打开Security gt Intent dialogIntent new Intent android provider Sett
  • Android BuildConfig 字段错误生成字符串

    在开始新项目的最后一天 我在构建配置中创建了一些变量 作为在发布和调试构建之间单独处理它们的好习惯 如下所示 buildTypes release minifyEnabled false buildConfigField String PA
  • 以编程方式创建进度绘制

    我有一个场景 我需要有大量的进度条可绘制对象 我无法为所有这些创建 xml 资源 因为我希望用户选择一种颜色 然后用于动态创建可绘制对象 下面是 xml 中的一个这样的可绘制对象 我如何以编程方式创建这个精确的可绘制对象
  • 将 SearchView 阈值设置为零

    我在用SearchView在android中 我将适配器设置为搜索视图 但建议弹出框在一个字符后显示 因为我将阈值设置为1 它不接受小于1的数字 如何将阈值设置为零 请喜欢 Google 因为您可能知道 Google Play 的应用程序没
  • 对早期设备使用 Roboto 字体

    我想在我的 Android 应用程序中使用 Roboto 字体 并确保它适用于未安装该字体的早期版本的 Android 我知道我可以通过使用 Typeface createFromAsset 然后手动设置每个 TextViews Butto
  • Android 日期/时间显示 0 而不是 12

    我想知道下面的代码有什么问题 Assign hour set in the picker c set Calendar HOUR selectedHour c set Calendar MINUTE selectedMinute For a
  • Android 中的 GPS 超时

    在黑莓中 我们使用超时来获取位置 这样如果它在这么长时间内没有重新调整位置 我们就会知道 但是在Android中 没有超时的概念 任何人都可以告诉我们替代方案 我们可以发现 在这么长时间之后 GPS没有位置更新 您可以使用两个线程来实现此超
  • Android SDK 构建工具、平台工具和工具是什么?应该使用哪个版本?

    我知道这是一个非常基本的问题 但令我惊讶的是 我找不到任何有关 Android SDK Build tools 的文档 除了 Android SDK 工具和 Android SDK 平台工具之外 还有一堆 Android SDK 构建工具
  • 安装我的应用程序时的 android 意图

    安装我的应用程序时我需要执行一项操作 我研究过使用 Intent PACKAGE ADDED 但我没有收到正在安装的应用程序中的意图 我想在第一次安装我的应用程序时运行代码 该用例是注册在线服务 我可以列出 BOOT COMPLETED 如
  • 如何在 Android WebView 中从远程 URL 访问本地资源?

    要加载 HTML 中的资源 我使用 URLfile android asset my image png 当我在本地加载 HTML 时 它可以工作 例如 使用WebView loadData method 但是 我无法从远程网站加载本地资源
  • 如何启用 Genymotion 模拟器使用主机正在使用的 WIFI 互联网

    我在 Genymotion 模拟器上运行的应用程序需要互联网 互联网似乎无法在 Genymotion 模拟器上运行 我试图通过打开浏览器来确认这一点 这就是我得到的 我在我的笔记本电脑上运行 Windows 7 并使用 Wifi 互联网 我
  • Google Play Services V2 库中的 NoClassDefFoundError

    在按照以下步骤尝试使用 Google Play Services V2 库时 出现以下异常官方教程 https developers google com maps documentation android start java lang
  • ViewPager 中的 PagerTabStrip 位置

    我有以下代码

随机推荐

  • 相位一致性——利用频域检测边缘

    相位一致性 利用频域检测边缘 一 相位一致性提出的背景 相位一致性的提出是基于科学家发现了人感觉图像的关键不在于图像的长度差或者高度差之类的因素 xff0c 关键在于图像信号的相位大小 xff0c 例如人知道一个方波的边缘 xff0c 并不
  • 图像分割——掩膜法

    电路板是用掩膜法制作而成的 xff0c 现在电路板表面涂上一层抗腐蚀的材料 xff0c 然后再进行处理 xff0c 最后洗去材料就得到了电路 掩膜法在图像处理中的应用 xff1a 可用于分割图像中的特定部分 xff0c 关键在于怎么取膜 例
  • C++ 值传递、指针传递、引用传递详解

    具体内容源自 xff1a http www cnblogs com yanlingyin archive 2011 12 07 2278961 html 以下是简介 xff1a 值传递 xff1a 形参是实参的拷贝 xff0c 改变形参的值
  • MATLAB: 读取同一目录下的所有文件名并按时间排序

    用MATLAB测试图像处理算法的过程中 通常需要读入一个目录下的多张测试图片 可以根据文件命名规则来读入某个特定目录下的所有文件 但是相对比较麻烦 通过利用MATLAB自带的dir 可以先读入所有的文件名字 知道文件数量 而且不用知道文件的
  • 相机模型(Camera Model)

    Perspective Camera Model Perspective Camera Model 或 Pinhole Camera Model都是简单但是应用广泛的模型 xff0c 描述了将物体从3D世界坐标系转换 xff08 World
  • Solid Compression

    定义 Solid Compression是一种多文件的数据压缩方式 xff0c 其中所有未被压缩的文件是一个整体 xff0c 视为一个独立的data block 这样的文件称为solid archive 7z RAR压缩格式和tar bas
  • 区分AR、VR、MR、CR

    终极扫盲贴 xff1a VR AR MR CR到底如何区分 xff1f
  • (2016/02/19)多传感器数据融合算法---9轴惯性传感器

    2016年2月18日 传感器的原理 加速度计 xff1a 加速度计 我们可以把它想作一个圆球在一个方盒子中 假定这个盒子不在重力场中或者其他任何会影响球的位置的场中 xff0c 球处于盒子的正中央 你可以想象盒子在外太空中 xff0c 或远
  • 【tx2】——NVIDIA TX2--3--NVIDIA Jetson TX2 查看系统版本参数状态及重要指令

    NVIDIA Jetson TX2 查看系统参数状态 当前博主的TX2更新的版本为 xff1a Jetpack 3 3 cuda 9 0 252 cudnn7 0 opencv3 3 1 TensorRT4 0 2 系统内核 xff1a t
  • 训练深度学习模型时电脑自动重启

    文章目录 问题可能原因解决方案 问题 前面用自己的台式机利用GPU训练模型的时候 xff0c 电脑老是自动重启 xff0c 当时试了各种方法 xff0c 找了各种原因 电脑配置 电脑买的是二手的 xff0c xff08 强烈建议买新的 xf
  • 华为机试题[2017.8.23]

    题目 xff1a 给定一个正整数 xff0c 给出消除重复数字以后最大的整数 输入描述 xff1a 正整数 xff0c 注意考虑长整数 输出描述 xff1a 消除重复数字以后的最大整数 下面的好像有问题 xff0c 当输入是4325432时
  • Kubernetes(k8s)中dashboard的汉化

    1 访问服务器的http 192 168 110 133 8080 ui地址 xff0c 如下所示 xff1a 使用dashboard版本registry cn hangzhou aliyuncs com google containers
  • docker + Rancher + guacamole 容器环境搭建并配置vnc连接

    Rancher 43 guacamole 容器环境搭建 准备环境 xff1a docker ce 17 01 43 43 centos7 x 43 guacamole 最新版0 9 14 43 Rancher 搭建完成效果 xff1a 1
  • C语言习题(1)——字符串拷贝,去空格,奇偶抽取字符串

    1 字符串拷贝 作者 xff1a 一叶扁舟 作用 xff1a 字符串的拷贝 时间 xff1a 18 25 2017 5 1 include lt stdio h gt include lt string h gt include lt st
  • 基于安卓平台的滤镜功能相机

    1 1需求背景 爱美之心 xff0c 人皆有之 我们拍照是为了留住一个美好的瞬间 Android自带的相机拍照效果满足不了人们的爱美心理 xff0c 而且比较单一 xff1b 因此为了解决这个问题我们研 发 滤镜功能相机 滤镜功能相机主要基
  • 威廉·巴特勒·叶芝:“我们是最后的浪漫主义者”

    喜欢叶芝是一件很文艺的事情 叶芝的诗滋润了无数少男少女的情怀 在叶芝被茅德 冈 嫌弃的这一生中 我们不知道他是否曾经后悔 我感动了全世界 却感动不了你 但至少 他的诗 感动了后世无数人 题记 多少人曾爱你青春欢畅的时辰 爱慕你的美丽 假意或
  • Javassist即时编译技术,热修复核心与原理

    Java 字节码以二进制的形式存储在 class 文件中 xff0c 每一个 class 文件包含一个Java类或接口 Javaassist 框架就是一个用来处理 Java 字节码的类库 它可以在一个已经编译好的类中添加新的方法 xff0c
  • ubuntu系统编译安装

    Ubuntu程序安装是个很好理解的 xff0c 这里我发表一下个人理解 xff0c 下面就这就来讲术Ubuntu编译安装 Ubuntu编译程序新手指导Ubuntu 团队对它的使用者公开的承诺 Ubuntu 永远免费 并且对于 34 企业版本
  • Android Launcher浅析(一)

    Launcher桌面的一大功能就是支持左右滑动 xff0c 这样的功能在现在的应用中使用非常广泛 xff0c 并且有很多实现的方式 xff0c 可以通过使用Fragment来实现也可以通过自定义的控件来实现 Launcher采用了后者 xf
  • Android OTA升级

    1 xff0c Build otapackage后system img没有打包进去 xff1f Ota包里面缺失system img xff0c 原因是客户修改了prop里面的 ro product device value值 尝试以下两种