使用相同的代码构建具有不同资产的多个应用

时间:2018-11-29 11:19:03

标签: android ios flutter

我目前正在将使用Swift和Java制作的应用程序更改为Flutter,但是,现在我有5个Android和iOS应用程序,全部使用相同的代码(Swift中为5个,Java中为5个),并且每个人都有不同的资产,例如图像,字符串,API url等。对于iOS应用程序,我目前在XCode上创建了不同的目标,并在代码中使用了不同的用户定义变量,然后我选择了哪个目标我想构建并发送到corespondent iTunesConnect应用程序。在android中,我做的大致相同,只是使用了Android风格。

我的疑问是如何在Flutter中做到这一点,而不必强迫我为要构建的每个应用程序创建一个不同的Flutter项目。

关于应该使用哪种方法的任何想法?

1 个答案:

答案 0 :(得分:2)

我使用一个自定义生成脚本,该脚本根据口味名称创建符号链接

通过我的Grinder构建脚本

Future<void> _setTenant(Tenant tenant) async {
  const symlinkPath = 'assets/tenant';
  final link = Link(symlinkPath);

  if (link.existsSync() &&
      link.targetSync() == '../assets/${tenant.identifier}') {
    return;
  }
  if (link.existsSync()) {
    link.updateSync('../assets/${tenant.identifier}');
  } else {
    Link(symlinkPath).createSync('../assets/${tenant.identifier}');
  }
}

Tenant是一个自定义类,Tenant.identifier返回一个有效的字符串,作为目录/符号链接名称。

我创建了https://github.com/flutter/flutter/issues/21682以获得Flutter中的直接支持。