我目前正在将使用Swift和Java制作的应用程序更改为Flutter,但是,现在我有5个Android和iOS应用程序,全部使用相同的代码(Swift中为5个,Java中为5个),并且每个人都有不同的资产,例如图像,字符串,API url等。对于iOS应用程序,我目前在XCode上创建了不同的目标,并在代码中使用了不同的用户定义变量,然后我选择了哪个目标我想构建并发送到corespondent iTunesConnect应用程序。在android中,我做的大致相同,只是使用了Android风格。
我的疑问是如何在Flutter中做到这一点,而不必强迫我为要构建的每个应用程序创建一个不同的Flutter项目。
关于应该使用哪种方法的任何想法?
答案 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中的直接支持。