Flutter进阶第12篇: 检测应用版本号、服务器下载文件以及实现App自动升级、安装
一丶 配置版本号:
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1"
package="io.jdshop.demo" xmlns:android="http://schemas.android.com/apk/res/android">
二丶 升级 app 之前的准备工作配置权限
配置 AndroidMenifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
三丶 Android 升级 app 涉及的 API 库
四、获取版本信息
https://pub.dev/packages/package_info
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String appName = packageInfo.appName;
String packageName = packageInfo.packageName;
String version = packageInfo.version;
String buildNumber = packageInfo.buildNumber;print("appName:${appName}");
print("packageName:${packageName}");
print("version:${version}");
print("buildNumber:${buildNumber}");
五、获取文件存储路径.
https://pub.dev/packages/path_provider
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;var directory = await getExternalStorageDirectory();String storageDirectory=directory.path;print("tempPath:${tempPath}");print("appDocDir:${appDocPath}");print("StorageDirectory:${storageDirectory}");
六、下载文件
https://pub.dev/packages/flutter_downloader
final directory = await getExternalStorageDirectory();
String _localPath = directory.path;
final taskId = await FlutterDownloader.enqueue(url: "http://www.ionic.wang/jdshop.apk",
savedDir: _localPath,
showNotification:
true, // show download progress in status bar (for Android)
openFileFromNotification:
true, // click on notification to open downloaded file (for Android)
);
七、打开文件
https://pub.dev/packages/open_file
OpenFile.open("${_localPath}/jdshop.apk");
八、注意事项
1、服务器的 App 版本必须大于本地 App 版本
2、本地 App 和服务器 App 的包名称 签名必须一致,这样的话服务器的包才可以替换本地
的包。
Flutter进阶第12篇: 检测应用版本号、服务器下载文件以及实现App自动升级、安装相关推荐
- Unity3D教程宝典之Web服务器篇:(第二讲)从服务器下载图片
转载自风宇冲Unity3D教程学院 从Web服务器下载图片 上一讲风宇冲介绍了wamp服务器及安装.这回介绍如何从服务器下载内容 ...
- Android应用更新-自动检测版本及自动升级
步骤: 1.检测当前版本的信息AndroidManifest.xml–>manifest–>[Android] 2.从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹 ...
- 深度学习之对象检测_深度学习时代您应该阅读的12篇文章,以了解对象检测
深度学习之对象检测 前言 (Foreword) As the second article in the "Papers You Should Read" series, we a ...
- keras faster物体检测_全网 | 深度学习目标检测算法(精选12篇)
太多的公众号每天的文章是否让你眼花缭乱?刷了好多文章,发现大都是转来转去?今天我在全网公众号里为大家精选主题为深度学习目标检测算法的文章12篇,其中包括综述,R-CNN,SPP-Net,Fast R- ...
- [UE4入门笔记(13)] 40.准星 41.射线检测(续第12篇) 42.行为状态机 --梁迪老师UE4纯C++Slate开发沙盒游戏
目录 前言: 本篇学习内容: 40.准星 41.射线检测(续第12篇) 42.行为状态机 前言: 笔者目前在校本科大三,目标方向是人工智能.计算机视觉.上一个OpenCV学习笔记专栏已完结,在学习完O ...
- 系统分析员论文12篇
<script type="text/javascript"> function StorePage(){d=document;t=d.selection?(d.sel ...
- 那个大三就发了12篇一作SCI的同学,后来怎样了?
喜讯传来. 2021年4月6日,康奈尔大学博士生郑景旭在能源顶级期刊<Nature Energy>上发表论文"Regulating electrodeposition morph ...
- SQL Server索引进阶第六篇:书签
SQL Server索引进阶第六篇:书签 索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员 ...
- SQL Server索引进阶第十篇:索引的内部结构
索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其 ...
- Flutter进阶—实现动画效果(四)
在上一篇文章:Flutter进阶-实现动画效果(三)中,实现了一个随机高度.颜色的条形.这一篇文章我们会实现多个条形,同样是随机高度.颜色. 首先在bar.dart中创建BarChart类,并使用固定 ...
最新文章
- python中文叫什么意思-在python中%是什么意思
- 3690状态压缩+暴力
- 工业用微型计算机(26)-伪操作(2)
- 魔兽老玩家无需购买《燃烧远征》资料片序列号
- 算法设计与分析:(二)动态规划
- openstack服务启动之nova-compute
- 2Do for Mac(任务管理GTD工具)
- AjaxControltoolkit学习笔记—ListSearch 使用详解
- itil 容量管理流程_ITIL 4管理实践之服务管理实践概述
- 统计Java源代码中关键字的数目(每个关键字的数目)
- 教你六步拆解 DDD领域驱动设计落地实践
- php 生成条码插件,php 条形码生成插件Composer组件|php条形码code128实现方法-爱测速网...
- 计算机能安装几个硬盘,一台电脑最多能接多少个硬盘?
- latex大斜杠, 除号
- 我想咨询一下Python,请问在哪儿找资源比较好呀?
- unity2d游戏开发系列教程:一、环境安装
- android studio单选按钮,在Android Studio中设置默认单选按钮
- 异质性分析:系数平滑可变模型
- 【Android】之屏幕适配
- SAP激活中文语言包