Coder Social home page Coder Social logo

flutter_fanfq_mutichannelpackage's Introduction

flutter_fanfq_mutichannelpackage

A new Flutter project.

Getting Started

depends

package_info_plus

  package_info_plus: ^1.4.2
  
  late String channelName = "";
  late String platform = "";
  late String appName = "";
  late String packageName = "";
  late String versionName = "";
  late int versionCode = 0;

  init() async{
    //获取包体信息
    PackageInfo packageInfo = await PackageInfo.fromPlatform();

    setState((){
      channelName = EnvironmentConfig.CHANNEL_NAME;
      platform = EnvironmentConfig.PLATFORM;

      appName = packageInfo.appName;
      packageName = packageInfo.packageName;
      versionName = packageInfo.version;
      versionCode = int.fromEnvironment(packageInfo.buildNumber,defaultValue: 0);
    });

  }

  @override
  void initState(){
    super.initState();
    init();
  }

preview

flutter run --dart-define=CHANNEL_NAME=test --dart-define=PLATFORM=android123

flutter run --dart-define=CHANNEL_NAME=appstore --dart-define=PLATFORM=ios

图片描述文字

build

//for .abb
./faab_build.sh googleplay android

//for .apk
./fapk_build.sh channelname android

//for ipa
./fios_build.sh appstore ios

//for muti-channel
./fapk_build.sh mi android
./fapk_build.sh oppo android
./fapk_build.sh vivo android
./fapk_build.sh baidu android
./fapk_build.sh ali android
./fapk_build.sh huawei android
./fapk_build.sh qq android
./fapk_build.sh 360 android
./fapk_build.sh www android
./fapk_build.sh dev android

jenkins

图片描述文字

图片描述文字

setup iOS

//preivew
flutter run --dart-define=CHANNEL_NAME=appstore --dart-define=PLATFORM=ios

//build
flutter build ios --dart-define=CHANNEL_NAME=appstore --dart-define=PLATFORM=ios

//install iOS depends
sudo gem install -n /usr/local/bin cocoapods 

//distribute  with xcode 
1. delete 'ios/Podfile.lock'
2. 'pod install'
3. 'flutter clean'
4. 'flutter run'
5. xcode open 'ios/Runner.xcworkspace'
6. setup signing 'iOS develop account'
7. 'Product' ->  'Archive' 
8. chose 'App Store Connect' -> 'upload'

setup Android

android/app/build.gradle

/// 获取渠道参数使用,这里设置一下默认值
def dartEnvironmentVariables = [
        CHANNEL_NAME: 'googleplay',
        PLATFORM: 'android',
]
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()]
            }
}

...


android {
    defaultConfig {
        ...

        //编译包命名
        setProperty("archivesBaseName", "app_${applicationId}-v${versionName}(${versionCode})-${dartEnvironmentVariables.CHANNEL_NAME}")
    }
    ...
}
...

参考文献

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

flutter_fanfq_mutichannelpackage's People

Contributors

fanfq avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.