前提

Flutter 版本:1.17.0地址,别用最新版本或者比较老的版本。我之前使用1.13.0版本也会出现问题。

Dart版本:2.8.1使用Flutter中提供的版本

ok ,在大版本相同的情况下。我能搞定的问题,你也没问题。

不多说了,打包这块真的是卡了好久...

在 Bugly 官网注册

在官网注册一个App,我这里只注册了 Android 渠道的。iOS 的不熟悉,所以以后再搞吧。

注册之后会拿到androidAppId,在初始化的时候填写即可。

集成上报功能

App的线上问题收集有助于开发定位问题。而且还可以自定义上报功能,例如埋点数据上报。之前在开发Android App的时候集成过Bugly。那么这里也就直接在Flutter App中再集成一次。

Bugly提供了flutter_bugly包,我们直接使用即可。

按照官方文档集成即可。

这里说一下注意事项。

在项目配置中,如果支持全部的 SO 库架构,apk 的大小会增大两倍左右。但是不支持全部 SO 库架构,有可能会出现 flutter build apk失败的情况。

defaultConfig {

ndk {

//设置支持的SO库架构,apk 的大小会增大两倍左右

abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'

}

}

如只支持armeabi-v7a,打出来的apk只有5.6M左右,下面是支持全部so库架构打出来的apk大小

打包的时候根据不同的平台打不同的包

64-bit

flutter build apk --release --target-platform android-arm64

32-bit

flutter build apk --release --target-platform android-arm

问题

debug apk 包出现异常或者崩溃不会上报,所以只能打 release 包。我这边使用还会一分钟左右的延迟

集成升级功能

升级也是App必备的功能,这里为了快速验证升级效果,也是使用的 Bugly 提供的升级功能。

在官方文档中说明使用了AndroidX的话的自定义升级弹窗了。官方也给了一个示例,那么我们直接使用示例中的弹窗效果

实现

由于想快速实现升级功能,且考虑了每个手机必备浏览器,所以下载的操作直接使用浏览器来实现。

流程图大概如下:

实现的核心代码如下:

使用的也基本是 Bugly 提供的升级弹窗,跳转浏览器 使用的是 【 launchurl 库】

void _checkUpdate(){

if (Platform.isAndroid) {

FlutterBugly.checkUpgrade();

FlutterBugly.getUpgradeInfo().then((_info) {

FlutterBugly.getUpgradeInfo().then((UpgradeInfo info) {

if (info != null && info.id != null) {

showUpdateDialog(info.versionName, info.newFeature, info.apkUrl);

}else{

ToastUtil.showBasicToast("暂未检测到新版本");

}

});

});

}

}

void showUpdateDialog(String versionName, String feature, String url) async {

await showDialog(

barrierDismissible: false,

context: context,

builder: (_) => _buildDialog(versionName,feature, url),

);

}

Widget _buildDialog(String versionName, String feature, String url) {

return new UpdateDialog(

key:_dialogKey,

version:versionName,

feature:feature,

onClickWhenDownload:(_msg) {

//2. 提示不要重复下载

print("---------提示不要重复下载---------${_msg}");

},

onClickWhenNotDownload:() {

// 1. 直接使用浏览器下载

_launchURL(url);

// 2. 下个计划:本地下载

// 下载apk,完成后打开apk文件,建议使用dio+open_file插件

print("---------下载apk,完成后打开apk文件,建议使用dio+open_file 插件---------");

},

);

}

/// 跳转应用市场升级

_launchURL(url) async {

if (await canLaunch(url)) {

await launch(url);

} else {

throw 'Could not launch $url';

}

}

问题

UpgradeInfo经常会返回null,多试几次。

上传 bugly 的 apk 的版本号一定要大于本地 apk 的版本号才能升级。

源码

bugly android 错误不上报,Flutter Android 端集成 Bugly 的异常上报和升级功能相关推荐

  1. 【错误记录】Flutter / Android 报错 ( AAPT: error: attribute android:requestLegacyExternalStorage not found )

    文章目录 一. 报错信息 二. 问题分析 三. 解决方案 一. 报错信息 Flutter 使用 image_picker 时 , 需要进行 AndroidX 兼容 , 设置了 Android 编译 S ...

  2. android 错误统计,百度统计android端出现异常crash,是啥原因哦

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 02-08 18:38:52.629 18329 18329 E AndroidRuntime: java.lang.IllegalArgumentExc ...

  3. Android 腾讯Bugly使用(异常上报,全量升级,热更新)

    1.0.1腾讯Bugly使用(异常上报,全量升级,热更新) 说明 Bugly全量升级,热更新以及异常上报是一起集成的,还包括运营统计,本文档着重演示热更新功能. 接入步骤 1.在Project的bui ...

  4. 【错误记录】Flutter 报错 ( Android Studio 中 main.dart 左侧不显示设备栏 )

    文章目录 一.报错信息 二.解决方案 一 ( 备选方案 ) 三.解决方案 二 ( 推荐方案 ) 一.报错信息 为了解决 [错误记录]Flutter 构建报错 ( Because xxx require ...

  5. 【腾讯Bugly干货分享】浅谈Android自定义锁屏页的发车姿势

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57875330c9da73584b025873 一.为什么需要自定义锁屏页 锁屏 ...

  6. 友盟统计封装android,react native 友盟统计 Android 端集成

    ios 端 可参考:https://www.jianshu.com/p/879d28ee74e6 趁热打铁吧,把刚才已经完成的友盟统计集成记录下 Android端集成: 分下面几部: 步骤 sdk的集 ...

  7. Android端集成支付宝支付

    Android端集成支付宝支付 1.申请账号及配置变量 支付宝快速接入链接点击打开链接 支付宝扫码或者账号密码登录 下面是支付宝给出的接入介绍 第一步:创建应用并获取APPID 要在您的应用中接入支付 ...

  8. 【腾讯Bugly干货分享】浅谈 Android 自定义锁屏页的发车姿势

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57875330c9da73584b025873 一.为什么需要自定义锁屏页 锁屏 ...

  9. Android Ftp 下载文件:服务端搭建,客户端编写使用详情

    一  FTP与HTTP HTTP是超文本传输协议:面向网页的. FTP是File Transfer Protocol,文件传输协议:面向文件的. 1.FTP (1)FTP比HTTP复杂 FTP和HTT ...

最新文章

  1. Lucene.net中文分词探究
  2. 计算机 双 ip地址,win7双ip怎么设置_Win7电脑如何设置双IP地址
  3. 内温的整体优先效应实验_实验室通风与系统控制
  4. javaweb实现单点登录,防止重复登录,获取sessionid,对session及时销毁回收,只允许一个用户登录,结合struts2实现
  5. 功能与命令式编程。 Java 8中的斐波那契,素数和阶乘
  6. C++对象的赋值和复制
  7. Add-in and Automation Development In VB.NET 2003 (8)
  8. 杭电4554 叛逆的小明
  9. 2021年福建高考成绩位次查询,2021年福建普通高考理科成绩一分一段表汇总(成绩排名查询)...
  10. python寻峰算法_现代法谱估计(1)Yule Walker 方程法MATLAB及Python实现
  11. 代码描述10911 - Forming Quiz Teams
  12. android圆角视图_Android图库视图示例教程
  13. less,sass,stylus配置和应用教程及三者比较
  14. 毕设题目:Matlab语音去噪
  15. u2020 华为_顶级标压U加持轻薄本!华为MateBook 13 2020锐龙版评测
  16. 易语言取MySQL错误代码,易语言中“取错误码”命令详解
  17. PLECS的热模型无法导入的解决办法
  18. Django使用livereload自动刷新页面
  19. 苹果电脑mysql_MacBook 安装 MySQL 5.7.29(新手都看得懂的安装教程)
  20. boren -飞机大战6

热门文章

  1. [AV1] 谈谈AV1中的 S-Frame
  2. “食族人”商标不具有不良影响,二审被驳回上诉!
  3. 自动生产线实训考核装备
  4. 常见互联网34个术语解释
  5. 【转】【GO】9.go:linkname
  6. 【pycharm】英文输入法变成全角字符无法输入
  7. 集合语音识别、音频蓝牙、对话控制多功能一体的WTK6900H-32N眼部按摩器应用设计方案
  8. fetch_array()与fetch_assoc()的用法
  9. 在服务器创建并进入虚拟环境
  10. 案例23-服务出现频繁掉线情况