android - 使用不同的资产构建多个应用程序,但使用相同的代码
问题描述
我目前正在将使用 Swift 和 Java 制作的应用程序更改为 Flutter,但是,现在我有 5 个适用于 android 和 iOS 的应用程序,所有应用程序都使用相同的代码(Swift 中的 5 个,Java 中的 5 个),并且对于每一个我有不同的资产,如图像、字符串、API url 等。如果是 iOS 应用程序,我目前正在 XCode 上创建不同的目标,我在代码中使用不同的用户定义变量,然后我选择了我想要的目标构建并发送到 corespondent iTunesConnect 应用程序。在 android 中,我或多或少做同样的事情,但使用的是 Android 风格。
我的疑问是如何在 Flutter 中做到这一点,而不会被迫为我要构建的每个应用程序创建不同的 Flutter 项目。
关于我应该使用什么方法的任何想法?
解决方案
我使用自定义构建脚本,根据风味名称创建符号链接
来自我的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 中的直接支持。
推荐阅读
- javascript - SyntaxError: 解析 json 时 JSON 输入意外结束,但代码仍继续运行
- msbuild - 如何使用 roslyn 构建和现有解决方案并解析 csproj 中的所有引用,以便我可以解析所有类型
- excel - 如何在VBA的数组中单独排序每一行?
- excel - 如何触发多个工作表中所有文本框的输入按键?- VBA
- python - 如何从 Python 中的日期时间戳中提取小时:分钟
- amazon-web-services - AWS Lambda 函数如何在 VPC 子网内扩展?
- eclipse - 在全新安装时出现内部错误:“Acceleo”
- dialogflow-es - 在 Dialogflow 中将组合词作为实体的困难
- postgresql - PostgreSQL docker容器未将数据写入磁盘
- javascript - 如何将自定义图像选择器连接到 CKeditor5 在反应 js 中插入图像