1、安卓系统在线升级(OTA)可以使用虚拟主机作为服务器吗?
这些都可以的。
虚拟主机或云服务器比较便宜、实惠,不需要太多资金和维护;
独立服务器需要投入的资金较多,维护成本也大,但性能可能会好一点。
2、android的OTA升级服务器是怎么搭建?还是有其他别的办法?
这个不在我们的力求范围
3、搭建安卓OTA服务器,服务器需要什么配置
OTA升级你是说ROM的升级吗,如果是这样指定windows服务器干这事显然不专业,不像是具有ROM开发和推送的公司干的。
无论是rom还是 app的推送,10000请求数问题都不大,如果说有10000用户同时下载,你有多少带宽?
并发不是一个严格的概念,你需要确定相同的时间,有多少用户同时发送请求以确定服务器配置,同时多少用户同时下载确定带宽。
你的所有用户是10000,更新消息推送后5分钟内有1%用户登录查看你就很牛逼了,也就不到100人的5分钟并发。如果时间再划为秒,每秒钟1/6人,连一个人都不到,cpu表示太闲了不如休眠算了。
4、安卓系统常说的OTA升级是什么意思
OTA(Over-the-AirTechnology)升级是指手机终端通过无线网络下载远程服务器上的升级包,对系统或应用进行升级的技术。
OTA(Over The Air)是一项基于短消息机制,通过手机终端或服务器(网上)方式实现SIM卡内业务菜单的动态下载、删除与更新,使用户获取个性化信息服务的数据增值业务(简称OTA业务),是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。
通过OTA空中下载技术,手机用户只要进行简单操作,就可以按照个人喜好把网络所提供的各种业务菜单利用OTA机制下载到手机中,并且还可以根据自己的意愿定制具体业务。
(4)androidota服务器扩展资料:
OTA运行原理:
1、OTA Server主要是对差分包的一个上传、下载以及版本的管理。
2、开发者通过差分包的制作工具制作出差分包,使用客户端进行上传和对版本的管理。
3、手机通过WIFI/GPRS网络进行连接下载,然后完成更新。
要实现OTA功能,至少需要两块设备,分别是服务器与客户端。服务器只有一个,客户端可有多个。服务器通过串口与PC机连接,需要下载的镜像文件存放于PC机,命令执行器给服务器发命令及镜像文件。
首先命令执行器控制服务器广播当前可用的镜像文件信息,客户端收到信息后进行对比,若有与自身相匹配的镜像,则向服务器请求数据。服务器收到请求后向命令执行器索取固定大小的块,再点对点传送给客户端。镜像传输完毕后,客户端进行校验,完成后发送终止信号。
5、Android OTA 的工作流程是怎样的
1、获取并下载OTA格式的.zip文件2、重启至recovery,并应用OTA格式升级包3、recovery首先验证升级包的数字签名。根据.zip里的内容,修改(覆盖)对应的文件,特别是/system分区的4、重启至系统,系统会将/system,/data分区内已安装的应用程序,以及Framework内的apk格式文件(以.jar扩展名存在)全部重新"安装"一遍,期间显示“Android正在更新”之类的字眼实际上是建立odex文件。对于Dalvik执行环境,是把apk中的dex文件"解压缩"为性能更好的odex,期间还有检查等项目。对于Android RunTime执行环境,则是利用LLVM把dex编译为二进制机器码的oat格式,再封装成elf这种常见于(类)unix操作系统的可执行文件格式,但实际的扩展名依然是odex。5、升级完毕,把控制权交给用户。
6、android x86支持ota么
OTA(Over-the-Air Technology)空中下载技术,就是官方推送的升级包。
OTA升级是Android系统提供的标准软件升级方式。它功能强大,可以无损失升级系统,主要通过网络[例如WIFI、3G]自动下载OTA升级包、自动升级,但是也支持通过下载OTA升级包到SD卡升级
OTA的升级包非常的小,一般几M到十几M,如果你用网络升级,非常的方便,基本是在系统上点击几下就完成了升级,并且最重要的是,OTA升级无需备份数据,短短几分钟就搞定所有升级工作,所有数据都会完好无损的保留下来。
OTA升级一般依赖叫做Recovery的模式来进行升级,一般会有专属的签名才能正确完成升级,并且系统必须保证没有做过精简删除等更改才能正常升级。
安卓系统升级分两种:
一种为手机直接升级(OTA),即在正常使用手机时,会收到系统更新的通知,可以点击直接下载和安装。一般多见于谷歌自己的nexus设备和官方行货机器。
第二种叫刷机升级,即手机破解后可以刷入其他第三方的ROM(同样ROM对应的系统版本升级了相应你的手机系统也升级了。)当然有些强大的第三方ROM制造团队也会部署自己的服务器,也提供第一类的OTA升级方式。
7、如何做android应用的OTA升级
让您的nexus 设备马上收到安卓6.0.1 OTA的方法是:清除google服务框架数据,然后去点系统升级,记得多重复的试几次,就可以接到ota升级包了!找到google服务框架和google合作伙伴设置的办法如下:进入设置->应用,然后往左翻动,找到全部,然后下翻,见下图:然后在列表里依次找到google服务框架和google合作伙伴设置。清空数据,这里强调清空google合作伙伴设置不是必须的,再检查系统更新。如果不成功的话,多测试几次。小编的nexus 7 二代就是这样获得的OTA升级的。不过如果您升级过程中出错,出现倒地的机器人,并在肚子上有个感叹号。
8、国内android系统ota方案商有哪些
1,获取并OTA格式的.zip文件 2,重启至recovery,并应用OTA格式升级包 3,recovery首先验证升级包的数字签名。根据.zip里的内容,修改(覆盖)对应的文件,特别是/system分区的 4,重启至系统,系统会将/system,/data分区内已安装的应用程序
9、android 怎么编译otapackage
OTA 升级是 Android 系统提供的标准软件升级方式。 它功能强大,提供了完全升级、增量升级模式,可以通过 SD卡升级,也可以通过网络升级。
这里,我们先研究最简单的情况,通过 SD 卡进行完全升级。
如何执行升级就不多说了,网上有很多资料。(比如,介绍HTC手机如何升级)。我们感兴趣的是它是如何实现的,作为开发者,如何修改它以符合我们的定制化需求。
首先,我们研究一下 ota 升级包的编译过程。
Quick start
首先编译出android, 然后执行:
make otapackage
即可获得:out/target/proct/{proct_name}/ {proct_name}-ota-eng.{uid}.zip
将该文件改名为update.zip放到T卡根目录, 即可开始recovery模式下的 OTA 升级。
编译过程研究
主要分两步,第一步, 会准备一个包,其中包含升级需要的内容(原材料),比如,system 目录。
第二步,运行python 脚本 ./build/tools/releasetools/ota_from_target_files,以步骤一准备的ZIP包作为输入,最终生成需要的升级包。
步骤一
编译脚本如下:
(From: build/core/Makefile)
1073 # Depending on the various images guarantees that the underlying
1074 # directories are up-to-date.
1075 $(BUILT_TARGET_FILES_PACKAGE): /
1076 $(INSTALLED_BOOTIMAGE_TARGET) /
1077 $(INSTALLED_RADIOIMAGE_TARGET) /
1078 $(INSTALLED_RECOVERYIMAGE_TARGET) /
1079 $(INSTALLED_FACTORYIMAGE_TARGET) /
1080 $(INSTALLED_SYSTEMIMAGE) /
1081 $(INSTALLED_USERDATAIMAGE_TARGET) /
1082 $(INSTALLED_SECROIMAGE_TARGET) /
1083 $(INSTALLED_ANDROID_INFO_TXT_TARGET) /
1084 $(built_ota_tools) /
1085 $(APKCERTS_FILE) /
1086 $(HOST_OUT_EXECUTABLES)/fs_config /
1087 | $(ACP)
1088 @echo "Package target files: $@"
1089 $(hide) rm -rf $@ $(zip_root)
1090 $(hide) mkdir -p $(dir $@) $(zip_root)
1091 @# Components of the recovery image
1092 $(hide) mkdir -p $(zip_root)/RECOVERY
1093 $(hide) $(call package_files-copy-root, /
1094 $(TARGET_RECOVERY_ROOT_OUT),$(zip_root)/RECOVERY/RAMDISK)
1095 ifdef INSTALLED_KERNEL_TARGET
1096 $(hide) $(ACP) $(INSTALLED_KERNEL_TARGET) $(zip_root)/RECOVERY/kernel
1097 $(hide) $(ACP) $(recovery_ramdisk) $(zip_root)/RECOVERY/ramdisk
1098 endif
1099 ifdef INSTALLED_2NDBOOTLOADER_TARGET
1100 $(hide) $(ACP) /
1101 $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/RECOVERY/second
1102 endif
1103 ifdef BOARD_KERNEL_CMDLINE
1104 $(hide) echo "$(BOARD_KERNEL_CMDLINE)" > $(zip_root)/RECOVERY/cmdline
1105 endif
1106 ifdef BOARD_KERNEL_BASE
1107 $(hide) echo "$(BOARD_KERNEL_BASE)" > $(zip_root)/RECOVERY/base
1108 endif
1109 @# Components of the factory image
1110 $(hide) mkdir -p $(zip_root)/FACTORY
1111 $(hide) $(call package_files-copy-root, /
1112 $(TARGET_FACTORY_ROOT_OUT),$(zip_root)/FACTORY/RAMDISK)
1113 ifdef INSTALLED_KERNEL_TARGET
1114 $(hide) $(ACP) $(INSTALLED_KERNEL_TARGET) $(zip_root)/FACTORY/kernel
1115 endif
1116 ifdef INSTALLED_2NDBOOTLOADER_TARGET
1117 $(hide) $(ACP) /
1118 $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/FACTORY/second
1119 endif
1120 ifdef BOARD_KERNEL_CMDLINE
1121 $(hide) echo "$(BOARD_KERNEL_CMDLINE)" > $(zip_root)/FACTORY/cmdline
1122 endif
1123 ifdef BOARD_KERNEL_BASE
1124 $(hide) echo "$(BOARD_KERNEL_BASE)" > $(zip_root)/FACTORY/base
1125 endif
1126 @# Components of the boot image
1127 $(hide) mkdir -p $(zip_root)/BOOT
1128 $(hide) $(call package_files-copy-root, /
1129 $(TARGET_ROOT_OUT),$(zip_root)/BOOT/RAMDISK)
1130 ifdef INSTALLED_KERNEL_TARGET
1131 $(hide) $(ACP) $(INSTALLED_KERNEL_TARGET) $(zip_root)/BOOT/kernel
1132 $(hide) $(ACP) $(INSTALLED_RAMDISK_TARGET) $(zip_root)/BOOT/ramdisk
1133 endif
1134 ifdef INSTALLED_2NDBOOTLOADER_TARGET
1135 $(hide) $(ACP) /
1136 $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/BOOT/second
1137 endif
1138 ifdef BOARD_KERNEL_CMDLINE
1139 $(hide) echo "$(BOARD_KERNEL_CMDLINE)" > $(zip_root)/BOOT/cmdline
1140 endif
1141 ifdef BOARD_KERNEL_BASE
1142 $(hide) echo "$(BOARD_KERNEL_BASE)" > $(zip_root)/BOOT/base
1143 endif
1144 $(hide) $(foreach t,$(INSTALLED_RADIOIMAGE_TARGET),/
1145 mkdir -p $(zip_root)/RADIO; /
1146 $(ACP) $(t) $(zip_root)/RADIO/$(notdir $(t));)
1147 @# Contents of the system image
1148 $(hide) $(call package_files-copy-root, /
1149 $(SYSTEMIMAGE_SOURCE_DIR),$(zip_root)/SYSTEM)
1150 @# Contents of the data image
1151 $(hide) $(call package_files-copy-root, /
1152 $(TARGET_OUT_DATA),$(zip_root)/DATA)
1153 @# Extra contents of the OTA package
1154 $(hide) mkdir -p $(zip_root)/OTA/bin
1155 $(hide) $(ACP) $(INSTALLED_ANDROID_INFO_TXT_TARGET) $(zip_root)/OTA/
1156 $(hide) $(ACP) $(PRIVATE_OTA_TOOLS) $(zip_root)/OTA/bin/
1157 @# Files that do not end up in any images, but are necessary to
1158 @# build them.
1159 $(hide) mkdir -p $(zip_root)/META
1160 $(hide) $(ACP) $(APKCERTS_FILE) $(zip_root)/META/apkcerts.txt
1161 $(hide) echo "$(PRODUCT_OTA_PUBLIC_KEYS)" > $(zip_root)/META/otakeys.txt
1162 $(hide) echo "$(PRIVATE_RECOVERY_API_VERSION)" > $(zip_root)/META/recovery-api-version.txt
1163 $(hide) echo "blocksize $(BOARD_FLASH_BLOCK_SIZE)" > $(zip_root)/META/imagesizes.txt
1164 $(hide) echo "boot $(call image-size-from-data-size,$(BOARD_BOOTIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt
1165 $(hide) echo "recovery $(call image-size-from-data-size,$(BOARD_RECOVERYIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt
1166 $(hide) echo "system $(call image-size-from-data-size,$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt
1167 $(hide) echo "secro $(call image-size-from-data-size,$(BOARD_SECROIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt
1168 $(hide) echo "userdata $(call image-size-from-data-size,$(BOARD_USERDATAIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt
1169 $(hide) echo "$(tool_extensions)" > $(zip_root)/META/tool-extensions.txt
1170 @# Zip everything up, preserving symlinks
1171 $(hide) (cd $(zip_root) && zip -qry ../$(notdir $@) .)
1172 @# Run fs_config on all the system files in the zip, and save the output
1173 $(hide) zipinfo -1 $@ | awk -F/ 'BEGIN { OFS="/" } /^SYSTEM/// {$$1 = "system"; print}' | $(HOST_OUT_EXECUTABLES)/fs_config > $(zip_root)/META/filesystem_config.txt
1174 $(hide) (cd $(zip_root) && zip -q ../$(notdir $@) META/filesystem_config.txt)
可见往里面添加了很多内容。
L1089-1090 , 造一个目录。
L1091-1108,填充 RECOVERY 子目录的内容。用于生成recovery.img。包括:kernel 的image, recovery 根文件系统的 image, recovery 根文件系统的内容:
RECOVERY$ tree -L 2
├── kernel
├── ramdisk
└── RAMDISK
├── advanced_meta_init.rc
├── data
├── default.prop
├── dev
├── etc
├── init
├── init.factory.rc
├── init.goldfish.rc
├── init.mt6516.rc
├── init.rc
├── meta_init.rc
├── proc
├── res
├── sbin
├── sys
├── system
└── tmp
L1109-1125, 填充 FACTORY 子目录的内容, 没有用到,包括:kernel 的image
L1126-1143, 填充 BOOT子目录的内容,用于生成boot.img。和 RECOVERY目录类似,包括:kernel 的image,根文件系统的 image,根文件系统的内容:
BOOT$ tree -L 2
.
├── kernel
├── ramdisk
└── RAMDISK
├── advanced_meta_init.rc
├── data
├── default.prop
├── dev
├── init
├── init.factory.rc
├── init.goldfish.rc
├── init.mt6516.rc
├── init.rc
├── meta_init.rc
├── proc
├── res -> /system/res
├── sbin
├── sys
└── system
L1144-1146, 填充 RADIO子目录的内容, 没有用到。
L1147-1149, 填充 SYSTEM子目录的内容。 这是升级的主要内容。
L1150-1152, 填充 DATA子目录的内容。缺省没有用到。
L1153-1156, 填充 OTA/bin子目录的内容,这是OTA升级自己使用的程序。后面会遇到。
OTA/bin$ tree
.
├── applypatch
├── applypatch_static
├── check_prereq
└── updater
L1159-1169, 填充 META子目录的内容,这里包含了OTA脚本需要的一些附加信息。
L1170-1171,将所有内容打包。供下一阶段使用。
L1173-1174,生成 META/filesystem_config.txt 并将其加入到 zip 包中。该文件保存了 system 目录下各目录、文件的权限及 owner.
$ head META/filesystem_config.txt
system 0 0 755
system/usr 0 0 755
system/usr/srec 0 0 755
system/usr/srec/config 0 0 755
system/usr/srec/config/en.us 0 0 755
system/usr/srec/config/en.us/grammars 0 0 755
system/usr/srec/config/en.us/grammars/phone_type_choice.g2g 0 0 644
system/usr/srec/config/en.us/grammars/VoiceDialer.g2g 0 0 644
system/usr/srec/config/en.us/grammars/boolean.g2g 0 0 644
system/usr/srec/config/en.us/g2p 0 0 755
这里,目录由 zipinfo –l 提供, 而权限则由 fs_config 设定。此程序的源码位于:build/tools/fs_config, 其中fs_config 包含了一个头文件:
54 #include "private/android_filesystem_config.h"
这个文件(system/core/include/private/android_filesystem_config.h)以hardcoding 的方式设定了 system 下各目录、文件的权限、属主。比如:
152 { 00440, AID_ROOT, AID_SHELL, "system/etc/init.goldfish.rc" },
153 { 00550, AID_ROOT, AID_SHELL, "system/etc/init.goldfish.sh" },
154 { 00440, AID_ROOT, AID_SHELL, "system/etc/init.trout.rc" },
155 { 00550, AID_ROOT, AID_SHELL, "system/etc/init.ril" },
如果需要升级其它内容,比如 bootloader, 则可以在这里加入。
步骤二
编译脚本如下:
(From: build/core/Makefile)
1186 name := $(TARGET_PRODUCT)
1187 ifeq ($(TARGET_BUILD_TYPE),debug)
1188 name := $(name)_debug
1189 endif
1190 name := $(name)-ota-$(FILE_NAME_TAG)
1191
1192 INTERNAL_OTA_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip
1193
1194 $(INTERNAL_OTA_PACKAGE_TARGET): KEY_CERT_PAIR := $(DEFAULT_KEY_CERT_PAIR)
1195
1196 ifeq ($(TARGET_OTA_SCRIPT_MODE),)
1197 # default to "auto"
1198 $(INTERNAL_OTA_PACKAGE_TARGET): scriptmode := auto
1199 else
1200 $(INTERNAL_OTA_PACKAGE_TARGET): scriptmode := $(TARGET_OTA_SCRIPT_MODE)
1201 endif
1202
1203 $(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE) $(OTATOOLS)
1204 @echo "Package OTA: $@"
1205 $(hide) ./build/tools/releasetools/ota_from_target_files /
1206 -m $(scriptmode) /
1207 -p $(HOST_OUT) /
1208 -k $(KEY_CERT_PAIR) /
1209 $(BUILT_TARGET_FILES_PACKAGE) $@
10、搭建安卓OTA服务器,服务器需要什么配置
第一种:虚拟主机或云服务器
特点:比较便宜、实惠,不需要太多资金和维护。
第二种:使用独立服务器
特点:性能相对优秀,需要投入的资金较多,维护成本大。