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伺服器,伺服器需要什麼配置
第一種:虛擬主機或雲伺服器
特點:比較便宜、實惠,不需要太多資金和維護。
第二種:使用獨立伺服器
特點:性能相對優秀,需要投入的資金較多,維護成本大。