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. 收工!

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