自2018年我開源了XUpdate以後,至今已迭代了14個版本,月下載量達4k+,Github的star量也已經有700+.android
最近在研究Flutter,因而就隨手寫了一個Flutter小項目練練手,在寫的時候我就發現,目前並無很是好用的版本更新Flutter插件,嘗試了使用Bugly的版本更新Flutter插件,可是效果很是很差.而後百度了一下,基本上都是以下方案:ios
package_info
插件獲取當前應用的版本信息dio
插件進行網絡請求獲取最新版本信息flutter_downloader
插件下載最新APP並安裝我想了一下,這實在是太麻煩了,要知道個人XUpdate把這些都已經作好了,只須要一行代碼就能夠實現應用內的版本更新,不只如此咱們徹底不必把這個幾乎通用的功能在本身的應用內再實現一遍.git
爲此我仔細研究了一下Flutter的插件開發,用了不到1天的時間,就把XUpdate的絕大多數功能在Flutter插件上實現了,這下我就能夠舒舒服服地使用一行代碼來實現版本更新了!github
下面我給出flutter_xupdate
插件的地址:json
在你的flutter項目中的pubspec.yaml
文件中添加flutter_xupdate
依賴.bash
dependencies:
flutter_xupdate: ^0.0.1
複製代碼
dependencies:
flutter_xupdate:
git:
url: git://github.com/xuexiangjys/flutter_xupdate.git
ref: master
複製代碼
修改Android項目的主題爲AppCompat
主題,文件路徑: android/app/src/main/res/values/styles.xml
, 例如:微信
<resources>
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>
複製代碼
FlutterXUpdate.init
方法進行初始化.FlutterXUpdate.setErrorHandler
方法設置錯誤監聽.import 'package:flutter_xupdate/flutter_xupdate.dart';
///初始化
void initXUpdate() {
if (Platform.isAndroid) {
FlutterXUpdate.init(
///是否輸出日誌
debug: true,
///是否使用post請求
isPost: false,
///post請求是不是上傳json
isPostJson: false,
///是否開啓自動模式
isWifiOnly: false,
///是否開啓自動模式
isAutoMode: false,
///須要設置的公共參數
supportSilentInstall: false,
///在下載過程當中,若是點擊了取消的話,是否彈出切換下載方式的重試提示彈窗
enableRetry: false
).then((value) {
updateMessage("初始化成功: $value");
}).catchError((error) {
print(error);
});
FlutterXUpdate.setErrorHandler(
onUpdateError: (Map<String, dynamic> message) async {
print(message);
setState(() {
_message = "$message";
});
});
} else {
updateMessage("ios暫不支持XUpdate更新");
}
}
複製代碼
{
"Code": 0, //0表明請求成功,非0表明失敗
"Msg": "", //請求出錯的信息
"UpdateStatus": 1, //0表明不更新,1表明有版本更新,不須要強制升級,2表明有版本更新,須要強制升級
"VersionCode": 3, //編譯版本號(惟一)
"VersionName": "1.0.2", //版本名(用於展現)
"ModifyContent": "一、優化api接口。\r\n二、添加使用demo演示。\r\n三、新增自定義更新服務API接口。\r\n四、優化更新提示界面。", //更新內容
"DownloadUrl": "https://raw.githubusercontent.com/xuexiangjys/XUpdate/master/apk/xupdate_demo_1.0.2.apk",// 文件下載地址
"ApkSize": 2048, //文件的大小(單位:kb)
"ApkMd5": "..." //md5值沒有的話,就沒法保證apk是否完整,每次都會從新下載。框架默認使用的是md5加密。
}
複製代碼
FlutterXUpdate.checkUpdate(url: _updateUrl);
複製代碼
FlutterXUpdate.checkUpdate(url: _updateUrl, supportBackgroundUpdate: true);
複製代碼
FlutterXUpdate.checkUpdate(url: _updateUrl, widthRatio: 0.6);
複製代碼
FlutterXUpdate.checkUpdate(url: _updateUrl, isAutoMode: true);
複製代碼
FlutterXUpdate.checkUpdate(
url: _updateUrl,
overrideGlobalRetryStrategy: true,
enableRetry: true,
retryContent: "Github下載速度太慢了,是否考慮切換蒲公英下載?",
retryUrl: "https://www.pgyer.com/flutter_learn");
複製代碼