【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)

这篇具有很好参考价值的文章主要介绍了【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OTA升级应用

项目地址:https://github.com/aystshen/Android-RomUpgrade.
这是一个负责 Android OTA 升级的后台应用,开机后自动运行后台 Service,支持系统升级和应用升级,支持本地升级(tf卡、u盘)和在线升级(百度),支持推荐升级和静默升级。

已知兼容版本:
● Android 5.1
● Android 6.0
● Android 7.1
● Android 8.1

预览

本地升级(tf卡、u盘)

【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)
在线升级(百度)
【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)
【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)

API

此固件升级应用也对外提供下面 API,供第三方应用调用 安装、验证、删除 升级包。

// IRomUpgradeService.aidl
package com.ayst.romupgrade;

// Declare any non-default types here with import statements

interface IRomUpgradeService {
    public void checkUpdate();
    boolean installPackage(String packagePath);
    boolean verifyPackage(String packagePath);
    void deletePackage(String packagePath);
}

API使用
1.在 APP 源码 aidl/com/ayst/romupgrade 目录下新建 IRomUpgradeService.aidl,如下

// IRomUpgradeService.aidl
package com.ayst.romupgrade;

// Declare any non-default types here with import statements

interface IRomUpgradeService {
    public void checkUpdate();
    boolean installPackage(String packagePath);
    boolean verifyPackage(String packagePath);
    void deletePackage(String packagePath);
}

2.实现下面代码:

Intent intent = new Intent();
intent.setPackage("com.ayst.romupgrade");
intent.setAction("com.ayst.romupgrade.UPGRADE_SERVICE");
mContext.bindService(intent, mRomUpgradeServiceConnection, Context.BIND_AUTO_CREATE);

private ServiceConnection mRomUpgradeServiceConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        Log.d(TAG, "IRomUpgradeService, onServiceConnected...");
        mRomUpgradeService = IRomUpgradeService.Stub.asInterface(service);
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        Log.d(TAG, "IRomUpgradeService, onServiceDisconnected...");
        mRomUpgradeService = null;
    }
};

/**
 * 检查升级
 * 接口为异步操作,无法直接返回检查结果,当有新版本可升级时直接弹出升级提示窗
 */
public void checkUpdate() {
    if (null != mRomUpgradeService) {
        try {
            mRomUpgradeService.checkUpdate();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
}

/**
 * 安装升级
 *
 * @param packagePath ota升级包
 * @return
 */
public boolean installPackage(String packagePath) {
    if (null != mRomUpgradeService) {
        try {
            return mRomUpgradeService.installPackage(packagePath);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

    return false;
}

/**
 * 验证升级包
 *
 * @param packagePath ota升级包
 * @return
 */
public boolean verifyPackage(String packagePath) {
    if (null != mRomUpgradeService) {
        try {
            return mRomUpgradeService.verifyPackage(packagePath);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

    return false;
}

/**
 * 删除升级包
 *
 * @param packagePath ota升级包
 */
public void deletePackage(String packagePath) {
    if (null != mRomUpgradeService) {
        try {
            mRomUpgradeService.deletePackage(packagePath);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
}

集成
这里讲述如何将此升级应用内置到您定制的系统固件中
前提条件
● 系统签名
● root 权限(应用升级默认采用静默安装,因此需要 root 权限)
内置

  1. 编译 release 版本 apk 文件(或者直接下载已发布的 release 版本)。
  2. 在 Android 源码 vendor/xxx/common/apps/ 路径下新建“RomUpgrade”目录。
  3. 将升级应用 apk 文件复制到“RomUpgrade”目录,并重命名为“RomUpgrade.apk”。
  4. 将升级应用 apk 文件中的 so 库提取出来,复制到“RomUpgrade/lib/arm/”(如果是64系统请提取64库到“RomUpgrade/lib/arm64/”)。
  5. 新建 Android.mk 文件,内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := RomUpgrade
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE :=
LOCAL_CERTIFICATE := PRESIGNED
#LOCAL_OVERRIDES_PACKAGES := 
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
LOCAL_PREBUILT_JNI_LIBS := \
		lib/arm/libotaso.so \
		lib/arm/libnative-lib.so
include $(BUILD_PREBUILT)

6.修改 vendor/xxx/common/apps/apps.mk,如下:

PRODUCT_PACKAGES += \
    RomUpgrade

配置属性
将下面属性配置到系统 build.prop 中

# 百度ota平台产品线id
ro.baidu.product.id=10000

# 百度ota平台产品线密钥
ro.baidu.product.secret=NTUyOGFhOTVjODRlxxxxxx==

# 可升级的内置应用包名(多个包名通过逗号分隔,无应用升级可不配)
ro.baidu.presetapp=com.ayst.sample1,com.ayst.sample2

# 系统固件版本号
ro.fw.version=1.0.0

使用

本地升级(tf卡、u盘)

本地应用升级

  1. 在 tf 卡或 u 盘根目录新建“exupdate”目录。
  2. 将待安装 apk 文件复制到“exupdate”目录下。
  3. 插入 tf 卡或u盘插入 Android 设备。
  4. 等待5秒左右,会弹出升级提示对话框,请根据提示完成升级。

本地系统升级

  1. 将待升级系统 ota 包复制到 tf 卡或 u 盘目录下,并重命名为“update.zip”。
  2. 插入 tf 卡或 u 盘插入 Android 设备。
  3. 等待5秒左右,会弹出升级提示对话框,请根据提示完成升级。

本地应用与系统同时升级

  1. 在 tf 卡或 u 盘根目录新建“exupdate”目录。
  2. 将待安装 apk 文件复制到“exupdate”目录下。
  3. 将待升级系统 ota 包复制到 tf 卡或 u 盘目录下,并重命名为“update.zip”。
  4. 插入 tf 卡或 u 盘插入Android设备。
  5. 等待5秒左右,会弹出升级提示对话框,请根据提示完成升级。

配置推荐升级或静默升级

  1. 在tf卡或u盘根目录新建“exupdate”目录。
  2. 在“exupdate”目录下新建“config.ini”文件,文件内容如下:
#OTA升级包版本号,如:1.0.0
PACKAGE_VERSION=1.0.0

在线系统升级(百度)

注册百度OTA平台账号
注册 百度安全 OTA 平台 账号,申请开通产品线,将『产品线ID』和『产品线秘钥』通过属性配置到系统
上传升级包
进入对应 『产品线』配置页面,进入『升级资源库』,点击『上传升级包』。
【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)
参数说明:
● 上传文件 选择 OTA 升级包文件(应用升级请上传 apk 文件)。
● 类型 勾选『系统升级』『整包』。
● 版本号 版本号格式:1.0.0.0,不足4段补0(系统固件的版本号默认从『ro.topband.sw.version』属性读取)。
● 标签 忽略。

配置测试任务
添加测试设备分组
进入『设备分组管理->测试设备分组』,点击『添加测试设备分组』,勾选『填写设备ID』。

【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)
参数说明:
● 设备ID CPU 序号。可以通过命令『cat /proc/cpuinfo』查看。
创建测试任务
进入『测试任务列表』,点击『创建测试任务』。
参数说明:
● 任务名称 自定义。
● 升级范围 勾选『指定测试设备分组』,点击『选择设备分组』,选择上一步添加的『测试设备』分组。
● 升级类型 选择『系统升级』『整包升级』。
● 系统升级资源 点击『资源库选择』,选择上一步上传的升级包。
● 升级方式 勾选『提示升级』。如果不希望 Android 弹出升级提示,而是直接安装升级包,可以勾选『静默升级』。
● 升级提示 一般填写此次升级的修改点,当 Android 弹出升级提示时,会显示这些内容。
● 优先级 默认值。

设备端检查升级
确保设备端网络连接正常,重启设备后会立即检查升级(稍后会每30分钟检查一次),当检查到新版本升级时,会弹出下面升级提示框:
【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)
点击『立即升级』开始下载,下载完成后将自动重启安装(安装过程中切勿断电)
【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)
配置正式任务
测试任务验证正常后,按照同样方法配置正式任务即可。

在线应用升级(百度)
应用升级配置步骤同配置系统升级。唯一需要注意的是支持配置应用安装完成后动作,比如:安装后重启系统,安装后重新启动应用。

配置应用安装后动作
升级配置界面,滚动到『其他配置』项,打开『自定义字段』,按下面表格配置『字段名称』和『值』,点击『添加』。
【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)

【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)文章来源地址https://www.toymoban.com/news/detail-492304.html

到了这里,关于【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【干货】Android系统定制基础篇:第十四部分(禁止第三方应用调用系统设置、增加TP配置、增加摄像头镜像设置、增加摄像头默认角度设置、修改默认语言)

    修改文件 frameworksbasecorejavaandroidappActivityManagerNative.java 如下: 属性配置: Android 主板定制过程中经常出现客户需要临时适配各种 TP(包括 USB TP),因此在设置菜单中加入 xy 交换,x 反转,y 反转常用配置,以客户多样性需求。 以下修改基于Android 8.1 SDK,如下: 属性配置

    2024年02月10日
    浏览(48)
  • 【干货】Android系统定制基础篇:第一部分(文件权限、增加信号强度、双路背光控制)

    当需要修改某文件或路径权限时,我们可以在init.rc开机启动某节点添加chmod命令进行修改。但是对于system分区,由于是ro权限,在init.rc使用chmod修改权限无效。需要在文件编译时,对权限进行修改。不同的Android版本改法一样,但是文件所在目录有差异,Android O主要修改文件是

    2024年02月09日
    浏览(50)
  • 【干货】Android系统定制基础篇:第二部分(Launcher3支持键盘切换焦点、开发者模式密码确认、禁止非预装应用安装、配置时间)

    Android Launcher3 默认并不支持键盘操作,无法切换焦点,在一些需要支持键盘或遥控操作的设备中无法使用,因些对 Launcher3 做简单修改,使其支持键盘切换焦点。 在安全性要求比较高的产品中,一般会默认关闭『adb调试』,同时禁止用户打开『adb调试』功能。在Android8.1中默认

    2024年02月10日
    浏览(52)
  • Android 系统级APP 升级方案 OTA全流程

    支持原创,请关注专栏: 高质量文章导航 一.Android ota固件编译 OTA 介绍 OTA ( over the air )升级是 Android 系统提供的标准软件升级方式。它功能强大,提供了 完全升级(完整包)、增量升级模式(差异包),可以通过本地升级,也可以通过网络升级 1.完整包 完整包所包含内容

    2024年02月02日
    浏览(80)
  • Android 10.0 ota升级关于SettingsProvider新增和修改系统数据相关功能实现

      在10.0的系统rom定制化开发中,在进行ota升级的过程中,由于在SettingsProvider中新增了系统属性和修改某项系统属性值,但是在ota升级以后发现没有 更新,需要恢复出厂设置以后才会更改,但是恢复出厂设置 会丢掉一些数据,这是应为系统数据库没更新,所以需要在ota的时候

    2024年02月10日
    浏览(46)
  • Android 9.0 ota升级关于SettingsProvider新增和修改系统数据相关功能实现

      在9.0的系统rom定制化开发中,在进行ota升级的过程中,由于在SettingsProvider中新增了系统属性和修改某项系统属性值,但是在ota升级以后发现没有 更新,需要恢复出厂设置以后才会更改,但是恢复出厂设置 会丢掉一些数据,这是应为系统数据库没更新,所以需要在ota的时候

    2024年01月22日
    浏览(63)
  • gd32f103vbt6 串口OTA升级5-combin部分

    本文主要是bin文件的组成进行一些简单介绍,方便理解升级的过程。 2.1 rk3399cpu+gd32f103 2.2 连接方式:串口(115200,8N1)或者iic(本文没有介绍iic) 3.1 单片机端分两个部分:iap(用于升级)和app(自己的应用)部分(这两个部分本文不做介绍)。 3.2 linux端做一个升级的app软件

    2024年02月16日
    浏览(54)
  • gd32f103vbt6 串口OTA升级3-linux端的部分

    本文主要是对linux端升级单片机程序的功能部分做一些介绍,包括一些软件流程。 2.1 rk3399cpu+gd32f103 2.2 连接方式:串口(115200,8N1)或者iic(本文没有介绍iic) 3.4.1  0 ~(0x5c00-1) : iap程序区,用于存放iap程序 3.4.2  0x5c00~(0x6000-1) : 这个1k用于存放一些标志位,以及程序的

    2024年02月17日
    浏览(67)
  • 解决高通 Android 12/13 ota升级失败问题

    1、 Android adb push ota全量包 如下图所示 2、当前设备是a分区 如下图所示  3、adb root -adb enable-verity-adb reboot  如下图所示  4、adb ota包升级成功 升级完成之后记得 reboot 重启一下 如下图所示 5、当前设备成功切换b分区 如下图所示  6、到这里基本就结束了, ota 升级相关 Andr

    2024年02月06日
    浏览(72)
  • Android Jetpack组件库(第七部分)---UI工具包 Compose

    Android Jetpack 是 Google 推出的一整套帮助 Android 应用程序开发的库、工具包和架构指南,旨在为 Android 应用程序提供更快,更轻松,更稳定的开发体验。自推出以来已经发展成了一个庞大的技术生态系统,包括了许多使用方便、功能强大的库,以下是其中一些新特性、新组件:

    2024年01月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包