美文网首页Flutter
Flutter渠道打包功能

Flutter渠道打包功能

作者: Fitem | 来源:发表于2021-09-13 18:27 被阅读0次

    Flutter打包

    从 Flutter v1.17 开始,Flutter 命令工具增加了自定义参数的功能 --dart-define,我们可以用这个命令参数在打包或运行App时设置参数即可

    flutter run --dart-define=APP_CHANNEL=BaiduChannel
    

    传递多组参数命令

    flutter run --dart-define=APP_CHANNEL=BaiduChannel --dart-define=OTHER_VAR=百度渠道
    

    在 Dart 代码中你需要这样写,一定是和命令参数是对应的

    // main.dart
    class EnvironmentConfig {
      static const APP_CHANNEL = String.fromEnvironment('APP_CHANNEL');
      static const OTHER_VAR = String.fromEnvironment('OTHER_VAR');
    }
    

    原生打包

    通常 Android 的多渠道是给 AndroidManifest.xml 写一个 <meta-data/> ,如果要保持原来原生的统计方式不变,那么首先我们需要获渠道 命令参数(--dart-define=APP_CHANNEL=BaiduChannel --dart-define=OTHER_VAR=百度渠道)的内容,则需要更改 Gradle 配置

    // android/app/build.gradle
    /// 获取渠道参数使用,这里设置一下默认值
    def dartEnvironmentVariables = [
        APP_CHANNEL: 'main',
        OTHER_VAR: 'other',
    ]
    
    if (project.hasProperty('dart-defines')) {
        dartEnvironmentVariables = dartEnvironmentVariables + project.property('dart-defines')
            .split(',')
            .collectEntries { entry ->
                // 1.22.6 版本
                def pair = URLDecoder.decode(entry).split('=')
                // 2.2 版本
                //def pair = new String(entry.decodeBase64(), 'UTF-8').split('=')
                [(pair.first()): pair.last()]
            }
    }
    
    

    总结

    通过Flutter命令工具的自定义参数功能进行渠道差分打包,在Dart文件或者gradle文件中读取命令参数完成渠道的配置

    参考文章:Flutter 中如何优雅的实现多渠道打包(埋点统计系列)

    相关文章

      网友评论

        本文标题:Flutter渠道打包功能

        本文链接:https://www.haomeiwen.com/subject/pbbfgltx.html