Delphi Android APP 自動更新:

資料下載地址:   https://download.csdn.net/download/sczyq/12457790

===========================================================

Delphi Android APP 自動更新: 使用 RADStudio10.3.3 並在 Android 10 測試通過

我的理想 : 只需要將新的 APP 複製到網站的下載地址裏, 其他的什麼也不想做

編寫過程 : 艱難地從 N 個坑裏爬出來後, 終於驚險地過關 ^_^

原理:  

        過程: function CheckInstalled : Boolean; 
            檢查 APP_TIME 與 APK_TIME 的值, 一致就表示已經成功安裝, 不一致就繼續檢查
            通過 APP 與 APK 版本檢查是否一致, 如果是, 設標誌 APP_TIME=APK_TIME, 並刪除 APK 文件
                非常重要: Options -> Application -> Version Info -> versionName  版本號不變即使最新也不會執行安裝
        
        A. 每天的首次開啓 APP 時, 則是這樣做(必須獲取信息成功, 否則每次都是首次)

            1.  通過 fso.json 獲取 APK 的信息, 執行 2
            2.  檢查本地 download 目錄 APK 文件, 時間不一致就執行3, 否則直接執行4
            3.  下載, 成功後修改 apk 文件時間, 與服務器一致, 再執行 4
            4.  CheckInstalled 檢查是否成功安裝, 未成功安裝的就調用 APK 安裝
        
        B. 每天的再次開啓 APP 時, 只執行 CheckInstalled 檢查
    
========================================

開工:  如果你的APP下載地址是  http://127.0.0.1/app/android/myapp.apk

========================================

1. 整理 ASP 服務器 (本人是Win7)

1.1 複製 fso.json 到 ASP 服務器根目錄

1.2 修改 IIS 配置 

    [處理程序映射] - 添加腳本映射 
      請求路徑=*.json
      可執行文件=%windir%\system32\inetsrv\asp.dll
      名稱=JSONClassic
      請求限制 設成與 ASPClassic 的一樣

        [MIME類型] - 添加, (如果已做請忽略)
            文件擴展名:   .apk
            MIME類型:     application/vnd.android.package-archive


1.3 測試 fso.json 效果   http://127.0.0.1/fso.json?p=/app/android/myapp.apk
  
  結果是:
  
  {"path" : "/app/android/myapp.apk", "filelist" : [{"name" : "myapp.apk", "size" : "123456", "attr" : "32", "time" : "2020/05/22 12:00:00"}]}  
  
  就可以了.

======================================
   
2. 修改你的 APP 項目:

2.1  加入 AndroidUpdating.pas 到你的 APP 項目

2.2  你的 APP 主窗口(TMainForm)引用 AndroidUpdating 單元

uses
    ...,  
    AndroidUpdating;
   
    provate
        FUpdating : TAndroidUpdating;
    
    //  釋放指針過程: NotifyFreeUpdating
    procedure TMainform.NotifyFreeUpdating;
    begin
        FreeAndNil(FUpdating); //  同步釋放: (不建議, 等於是在類內部過程中調用釋放)
        //  異步釋放: (建議) 通過 TTimer 來進行, 過程自己去寫
    end;

  //    執行版本檢查與自動更新, 寫到最後一行比較好
    procedure TMainform.FromCreate(Sender : TObject);
    begin
        ...
      FUpdating := TAndroidUpdating.Create(Self, 'http://127.0.0.1/app/android/myapp.apk', NotifyFreeUpdating);
  end;
  
  
2.3  修改 APP 項目設置 (建議在 All Configurations - Android 修改) 以下必須要勾選
 
        Options - Application - Entitlement List - Secure File Sharing
        Options - Application - Uses Premissions - Write external stoage
        Options - Application - Uses Premissions - Request install packages


2.4 修改 APP 項目文件夾內的 AndroidManifest.template.xml 在 Application 中加入一行

        android:usesCleartextTraffic="true"
        
        即:    
    <application 
                ...
        android:usesCleartextTraffic="true">

   說明: 如果是 http:// 必須加, 如果是 https:// 就不用, 自動去選

    
======================================

3. 收工!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章