編輯:關於android開發
Do平台的應用升級包含二種升級方式,一種是最常用的安裝包的升級,另外一種是應用內升級。很顯然第二種升級方式更靈活。
原生應用通常的升級方式就是這種,比如android的安裝包是apk文件,ios的安裝包是ipa文件。如果要升級,只能重新下載一個新的apk/ipa文件,然後安裝覆蓋舊的版本,基本流程如下:
調用do_Global.getVersion()方法檢查當前應用的版本號
通過do_Http發送GET/POST請求升級服務端,請求當前應用的最新的版本號,這個服務端是開發者自己搭建,和Do平台無關。
比較這二個版本號,如果不一樣,則調用do_External.openURL()方法使用操作系統帶的浏覽器打開下載應用的網頁。在網頁上下載安裝新的應用覆蓋舊的應用。
這裡要注意的是:
應用內升級並不是Do平台的特有功能,但是Do平台使用應用內升級還是很方便的。應用內升級可以理解為增量升級,替換任何項目文件。
檢查當前應用的版本號,這個版本號可能是從文件裡讀出來的,可能是從SQLite數據庫讀出來的,反正這個版本的讀和寫都是由用戶來決定。
通過do_Http發送GET/POST請求升級服務端,請求當前應用的最新的版本號,這個版本號是指應用內源代碼的版本號,服務端是開發者自己搭建,和Do平台無關,而且版本號的維護也是由開發者來決定。
比較這二個版本號,如果不一樣,則調用do_Http.download方法下載升級包,通常是一個zip文件。
下載後,解壓這個zip文件到data:// 下一個目錄
利用do_App的update方法拷貝所有的最新文件拷貝到source:// 下對應的目錄,覆蓋舊的文件。並更新新的版本到文件或數據庫。
這裡要注意的是:
參考一個示例Demo,主要的源代碼如下:
var button = ui("do_Button_1"); button.on("touch", function() { upgrade(); }); function upgrade() { // 獲取當前應用的版本號 var current_version = storage.readFileSync("data://version.txt"); // 獲取服務端最新的版本號,並下載升級 // 因為沒有搭建一個真正的升級服務,所以先注釋這一行且直接調用update方法 // getLatestVersion(current_version); update("1.1", "data://update.zip"); } // 從服務器上獲取最新的版本號 function getLatestVersion(ver) { var http = mm("do_Http"); http.method = "GET"; http.url = "http://www.xxxx.com/getLatestVersion?current=" + ver; http.on("success", function(d) { // 服務端判斷最新的版本不等於當前的版本就會返回一個最新版本和下載地址,否則返回空 if (d) { // 開始下載最新zip download(d); } else nf.alert("當前版本已經是最新版本"); }); http.request(); } // 從服務器上獲取最新的升級包 function download(d) { var http = mm("do_Http"); var zip = "data://update.zip"; http.method = "POST"; // d.downlaodURL是zip的下載url,d.version是最新的版本號 http.url = d.downloadURL; http.on("success", function(d) { update(d.version, zip); }); http.download(zip); } // 解壓,然後覆蓋舊的文件,然後更新本地版本號 function update(ver, zip) { storage.unzip(zip, "data://update", function(data) { // 這裡可以拷貝文件,也可以拷貝目錄 app.update([ "data://update/test.ui", "data://update/test.ui.js" ], "source://view", function() { nf.alert("升級完成"); storage.writeFile("data://version.txt", "1.1",function(){ app.closePage(); }); }); }) }
這個示例的下載參考這裡
android Unable toexecute dex: method ID not in [0, 0xffff]: 65536問題 作為一名Android開發者,相
手機安全衛士——軟件管理-用戶程序和系統程序,安全衛士系統程序首先看一下界面: AppManagerActivity .java //軟件管理 public clas
新浪微博登錄界面上下拉伸圖片--第三方開源--PullToZoomListViewEx(一),新浪微博第三方登錄 Android PullZoomView是
三種方式獲得手機屏幕的寬和高,三種方式手機屏幕 主要代碼: 1 package com.km.screeninfo; 2 3