首页 > 解决方案 > 使用不同的资产构建多个应用程序,但使用相同的代码

问题描述

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

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

关于我应该使用什么方法的任何想法?

标签: androidiosflutter

解决方案


我使用自定义构建脚本,根据风味名称创建符号链接

来自我的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 中的直接支持。


推荐阅读