# Android 系统 OTA 升级应用
一个负责 Android 系统 ota 升级的后台应用,开机后自动运行后台 Service,支持系统升级、应用升级,支持本地升级(tf卡、u盘)、在线升级(百度),支持推荐升级、静默升级。
已知兼容版本:
- Android 5.1
- Android 6.0
- Android 7.1
- Android 8.1
## 预览
### 本地升级(tf卡、u盘)
![](screenshots/device-2020-01-18-150651.png)
### 在线升级([百度](https://ota.baidu.com/))
![](screenshots/device-2020-01-18-150533.png)
![](screenshots/device-2020-01-18-150622.png)
## API
此固件升级应用也对外提供下面 API,供第三方应用调用 **安装、验证、删除** 升级包。
```java
// IRomUpgradeService.aidl
package com.ayst.romupgrade;
// Declare any non-default types here with import statements
interface IRomUpgradeService {
boolean installPackage(String packagePath);
boolean verifyPackage(String packagePath);
void deletePackage(String packagePath);
}
```
### API使用
1. 在 APP 源码 **aidl/com/ayst/romupgrade/** 目录下新建 **IRomUpgradeService.aidl**,如下:
```java
// IRomUpgradeService.aidl
package com.ayst.romupgrade;
// Declare any non-default types here with import statements
interface IRomUpgradeService {
boolean installPackage(String packagePath);
boolean verifyPackage(String packagePath);
void deletePackage(String packagePath);
}
```
2. 实现下面代码:
```java
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;
}
};
/**
* 安装升级
*
* @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=10254
# 百度ota平台产品线密钥
ro.baidu.product.secret=NTUyOGFhOTVjODRlZjFmOA==
# 可升级的内置应用包名(多个包名通过逗号分隔,无应用升级可不配)
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”文件,文件内容如下:
```
#升级类型,1:推荐升级,2:静默升级
UPDATE_TYPE=2
```
#### 配置升级包版本号
此版本号可以配可以不配。如果配置了该版本号则当前系统版本小于此版本时才会升级,否则不升级。如果没有配置该版本号则一律升级。
```
#OTA升级包版本号,如:1.0.0
PACKAGE_VERSION=1.0.0
```
注意 如果配置了静默升级,请一定要配置此版本号,否则升级完成后又会重复升级。
### 在线升级(百度)
#### 注册百度OTA平台账号
注册 [百度安全 OTA 平台](https://ota.baidu.com/) 账号,申请开通产品线,将**『产品线ID』**和**『产品线秘钥』**通过属性配置到系统。
#### 上传升级包
进入对应 『**产品线**』配置页面,进入『**升级资源库**』,点击『**上传升级包**』。
![](screenshots/1585270300.jpg)
参数说明:
- **上传文件** 选择 OTA 升级包文件(应用升级请上传 apk 文件)。
- **类型** 勾选『**系统升级**』『**整包**』。
- **版本号** **版本号格式:1.0.0.0,不足4段补0**(系统固件的版本号默认从『**ro.topband.sw.version**』属性读取)。
- **标签** 忽略。
#### 配置测试任务
##### 添加测试设备分组
进入『**设备分组管理->测试设备分组**』,点击『**添加测试设备分组**』,勾选『**填写设备ID**』。
![](screenshots/1585270318.jpg)
参数说明:
- **设备ID** CPU 序号。可以通过命令『**cat /proc/cpuinfo**』查看。
##### 创建测试任务
进入『**测试任务列表**』,点击『**创建测试任务**』。
参数说明:
- **任务名称**
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是一个负责 Android 系统 ota 升级的后台应用,开机后自动运行后台Service,支持系统升级和应用升级,支持本地升级(tf卡、u盘)和在线升级(百度),支持推荐升级和静默升级。 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
资源推荐
资源详情
资源评论
收起资源包目录
这是一个负责 Android 系统 ota 升级的后台应用,开机后自动运行后台Service,支持系统升级和应用升级,支持本地升级(tf卡、u盘)和在线升级(百度),支持推荐升级和静默升级。.zip (88个子文件)
cm
gradle.properties 816B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 238B
screenshots
1585270225.jpg 44KB
1585270318.jpg 13KB
1585270231.jpg 30KB
1585270300.jpg 15KB
device-2020-01-18-150651.png 150KB
device-2020-01-18-150622.png 139KB
device-2020-01-18-150533.png 146KB
app
CMakeLists.txt 2KB
system.keystore 2KB
src
main
java
com
ayst
romupgrade
adapter
DownloadAdapter.java 3KB
receiver
UpdateReceiver.java 8KB
service
UpdateService.java 50KB
baidu
NewVersionBean.java 4KB
ErrorString.java 3KB
SystemInfo.java 1KB
App.java 3KB
entity
LocalPackage.java 1KB
InstallProgress.java 2KB
util
MD5.java 3KB
AppUtils.java 20KB
SPUtils.java 3KB
EncryptUtil.java 4KB
InstallUtil.java 6KB
DataEncryptUtil.java 2KB
filecopy
FileCopyTaskParam.java 973B
IFileCopyListener.java 836B
FileCopyTask.java 3KB
FileUtils.java 7KB
config
UsbConfigManager.java 3KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 6KB
mipmap-hdpi
ic_launcher_round.png 5KB
ic_launcher.png 3KB
drawable-v24
ic_launcher_foreground.xml 3KB
mipmap-anydpi-v26
ic_launcher.xml 925B
ic_launcher_round.xml 925B
mipmap-mdpi
ic_launcher_round.png 3KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 15KB
ic_launcher.png 9KB
mipmap-xhdpi
ic_launcher_round.png 7KB
ic_launcher.png 4KB
xml
file_paths.xml 929B
values
dimens.xml 885B
colors.xml 2KB
strings.xml 3KB
styles.xml 2KB
layout
layout_download.xml 1KB
layout_download_item.xml 1KB
drawable
btn_default_selected.xml 1KB
btn_default_normal.xml 1KB
ic_launcher_background.xml 6KB
btn_default_text_selector.xml 1015B
btn_default_pressed.xml 1KB
btn_default_selector.xml 1KB
bg_dialog.xml 944B
btn_default_disable.xml 1KB
values-zh
strings.xml 3KB
cpp
native-lib.cpp 284B
aidl
com
ayst
romupgrade
IRomUpgradeService.aidl 326B
AndroidManifest.xml 4KB
proguard-rules.pro 3KB
config.ini 129B
libs
otasdk(3.2.0.12)_ota_release.aar 645KB
build.properties 138B
build.gradle 7KB
.gitignore 8B
gradlew.bat 2KB
build.gradle 1KB
.idea
jarRepositories.xml 1KB
codeStyles
Project.xml 3KB
dbnavigator.xml 47KB
runConfigurations.xml 564B
vcs.xml 180B
misc.xml 3KB
modules.xml 431B
gradle.xml 836B
encodings.xml 138B
copyright
ayst_shen_foxmail_com.xml 819B
profiles_settings.xml 219B
settings.gradle 16B
gradlew 5KB
.gitignore 242B
utils.gradle 160B
README.md 10KB
共 88 条
- 1
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功