添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文详细介绍了Flutter应用的多渠道打包过程,包括命令行参数的使用、IDE配置(VS Code和Android Studio)以及原生打包脚本的优化。通过多渠道打包,可以满足产品运营的统计需求,例如数据统计、渠道分发等。同时,文章讨论了如何在Dart代码中处理渠道信息,以及在开发和调试阶段的应用。 摘要由CSDN通过智能技术生成

多渠道打包介绍

多渠道打包的主要作用是满足产品的运营需求,统计渠道和活动效果。
在之前原生( 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
    

    image.png
    这里可以看到已经把对应的参数内容显示出来了,接下来就是具体业务层怎么来使用的问题了,下面内容也会介绍使用场景,继续往下看 👇

    多渠道调试

    我们已经看到效果了,但是在开发过程中我们不可能一直在命令行运行看效果,如果可以配合 IDE 进行多渠道调试开发那就很棒了,下面分别介绍一下 VS CodeAndroid Studio 的配置方法。

    VS Code 配置

  • 先创建一个 launch.json 启动文件
  • 然后配置启动参数项目
  • "version": "0.2.0", "configurations": [ "name": "Flutter", "request": "launch", "type"
    在使用flutter开发的过程中,需要根据不同的环境,不同的包名来打包 根据根据多渠道打包配置,使用命令 flutter build apk --flavor dev 打包。报错如下 FAILURE: Build failed with an exception. * What went wrong
    由于最开始是用脚本一个个打包,一直想解决打包过慢的问题,但是网上大多教程是基于命令行参数或flavor,实质上并没有根本解决打包效率的问题。直到发现了文章的主角 walle。 应用解决方案 walle walle是美团开源的一个打包插件,这里就不做介绍了,传送门。 flutter插件 由于源码Android端的,就想着写一个Flutter插件吧。
    1. 生成签名(多一个维度的世界:Android端证书生成)2. 配置签名(是否需要配置签名信息根据实际情况而定,理论上与多渠道无关,不感兴趣的同学跳过)首先,可以在gradle.properties文件定义一些和签名相关的参数,也可以直接写到到配置,这里主要方便统一管理KEY_ALIAS=flutter_demo_realease KEY_PASSWORD=flutter KEYSTORE_PA...
    Flutter多渠道调试设置 (安卓篇,Android Studio) 在build.gradle中定义不同的风味(flavor),一套代码可在同一个设备上同时安装名称、图标、applicationId不同的两个应用 android { flavorDimensions "app" productFlavors { // 生产环境 flavoronline { dimension
    首先在lib建立多个main.dart,比如main_local.dart表示本地开发运行时执行的入口文件,main_develop.dart和main.dart分别表示开发环境和生产环境: ├── api/ ├── main.dart ├── main_develop.dart ├── models/ ├── pages/ ├── utils/ └── widgets/ 这样如果...
    Foreach_M: dartEnvironmentVariables = dartEnvironmentVariables + project.property('dart-defines') 这一步貌似获取不到,每一次都是拿默认的main 【已开源】Flutter 穿山甲广告插件的集成-FlutterAds ZeroFlutter: 看来你对Flutter不了解,你看看穿山甲官方支持吗?