Flutter 多渠道打包详解(埋点统计系列文章)
我是 Zero,废话不多说,脑图奉上
脑图梳理
只要你关注 Flutter,这篇文章你绝对用得着 ==>
强烈建议➕收藏
多渠道打包介绍
多渠道打包的主要作用是满足产品的运营需求,统计渠道和活动效果。
在之前原生(Android、iOS
)开发 App 有各种工具来辅助我们完成多渠道打包。
在我们开发过程中也需要为渠道功能负责,原生的开发工具就基本满足我们调试渠道包内容,但是在 Flutter 上需要更多的配置才可以完成,下文将一一介绍从配置=>调试=>打包的全部流程和细节。
多渠道配置
从 Flutter v1.17
开始,Flutter 命令工具增加了自定义参数的功能 --dart-define
,我们可以用这个命令参数在打包或运行 App 时设置参数即可。
首先确定
Flutter
版本,我的版本是v1.22.6
flutter run --dart-define=APP_CHANNEL=ZeroFlutter
当然你可以传递多组参数
flutter run --dart-define=APP_CHANNEL=ZeroFlutter --dart-define=OTHER_VAR=Dart
在 Dart 代码中你需要这样写,一定是和命令参数是对应的
// main.dart
class EnvironmentConfig {static const APP_CHANNEL = String.fromEnvironment('APP_CHANNEL');static const OTHER_VAR = String.fromEnvironment('OTHER_VAR');
}
运行查看结果
- 先修改
Flutter
项目对应的代码
// my_home_page.dart
Text('App 渠道:${EnvironmentConfig.APP_CHANNEL}',style: Theme.of(context).textTheme.bodyText1,
),
Text('其他参数:${EnvironmentConfig.OTHER_VAR}',style: Theme.of(context).textTheme.bodyText1,
),
- 然后运行项目
flutter run --dart-define=APP_CHANNEL=ZeroFlutter --dart-define=OTHER_VAR=Dart
- 查看结果
这里可以看到已经把对应的参数内容显示出来了,接下来就是具体业务层怎么来使用的问题了,下面内容也会介绍使用场景,继续往下看
Flutter 多渠道打包详解(埋点统计系列文章)相关推荐
- Flutter app打包详解
Flutter app打包跟常规打包是差不多的,以android为例: 配置构建信息 这一步呢主要是检查配置app的基础信息: applicationId versionCode versionNam ...
- 《Qt 数据库详解》博客系列文章
本文章原创于www.yafeilinux.com 转载请注明出处. 由于该系列文章图床都挂了,特下载原文博客的word版. 详细博客请点附件下载. 21-Qt数据库(一)简介 22-Qt数据库(二)添 ...
- KVM详解,学习kvm系列文章
目录 (1):简介及安装 1. KVM 介绍 1.0 虚拟化简史 1.1 KVM 架构 2. KVM 的功能列表 3. KVM 工具集合 4. RedHat Linux KVM 安装 4.1 在安装 ...
- 导出jar插件_Fluttify输出的Flutter插件工程详解
系列文章: yohom:Fluttify输出的Flutter插件工程详解zhuanlan.zhihu.com yohom:开发Flutter插件必备原生SDK->Dart接口生成引擎`Flut ...
- linux中的文件夹压缩文件,linux将文件拷贝到目录下Linux下文件的压缩与打包详解...
在Linux中,有很多的压缩命令.利用这些压缩命令,可以方便的从网络上下载大型的文件.同时,我们知道,Linux文件的扩展名是没有特殊意义的,不过,因为Linux下存在着许多压缩命令,所以为了方便记忆 ...
- Maven打包详解(“There are test failures”)
Maven打包详解("There are test failures") 以下操作都是在IDEA软件内进行的. 第一步:idea界面中选择右边的Maven projects 界面: ...
- Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)
Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编辑配置文件(pml.xml)(我 ...
- flutter 生命周期详解
flutter 生命周期详解 简介 一.widget 生命周期 二.APP 生命周期 总结 简介 众所周知,程序是有生命周期的,那么flutter 的生命周期是什么呢? flutter 的生命周期大体 ...
- Android-使用Jenkins自动化打包详解-Linux篇
文章目录 购买和使用阿里云 安装宝塔面板 安装Tomcat 安装 jenkins 配置jenkins 设置FTP jenkins 常规操作 修改admin密码 购买和使用阿里云 首先购买阿里云,可从以 ...
最新文章
- 免费查找AI最优论文神器来啦:一键出结果,分分钟提取论文表格、最新数据...
- [Warning] TIMESTAMP with implicit DEFAULT value is
- python开发环境spyder_spyder python 2.7-spyder(Python开发环境)下载 v2.1.10官方版--pc6下载站...
- 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授
- boost::sort模块实现spreadsort wstring 排序示例
- fatal: remote origin already exists.解决方法
- Angular 依赖注入 useClass 的实例创建位置
- 百度飞桨弯道超车了吗?!
- django 1.8 官方文档翻译: 3-3-5 编写自定义存储系统
- Thread+Handler 线程 消息循环(转载)
- hdu1864--dp
- smp格式音频转换mp3软件方法
- 通信系统中语音信号的仿真分析
- 西门子软件测试教程 博客,西门子视频教程合集
- Problem A. Snapper Chain 问题A.按扣链条 解决办法
- 华硕路由域名访问_“618” WiFi6 路由器选购推荐清单_路由器
- python学习记录三:关于ImageFont.truetype(‘Arial.ttf‘, 36)执行报错以及解决方案
- Java期末复习基础知识整理(有点长)
- 【C++】模板类的友元函数
- Codeforces Round #739 (Div. 3) ABCDEF1F2 解题思路