資料下載地址: 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. 收工!