我正在尝试通过将platform / os特定代码放在各自的文件夹中来设置我的Gluon项目(在新创建的Gluon项目中设置自动创建的项目)。但无论我使用Gradle执行什么任务,最终都会使用com.gluonhq.charm.glisten.mvc.View
文件夹。
让我们说我希望javafx.scene.control.Button
中包含open('...', 'r', encoding='utf-8')
- 并通过说明它来自哪个文件夹(主要,安卓,桌面或iOS)来标记它。怎么可能?
答案 0 :(得分:1)
根据经验,您不应该在项目中需要特定的平台代码。
如果你想要的是基于平台的自定义样式,你可以使用Platform.getCurrent().name()
然后根据它做出反应。
例如,MyDevoxx
app根据平台和设备类型加载不同的css文件。
了解平台特定文件夹的工作方式的一个好方法是查看Charm Down library以及不同服务的实现。
您会注意到这些文件夹包含java和特定平台代码。
可以找到有关如何创建新服务的示例here。例如,AndroidLogService
实现使用android.util.Log
,而IOSLogService
使用本机Objective-C(请参阅Log.m
)。必须将此本机代码编译为本机库(请参阅构建文件中的installNativeLib
任务)。
在任何情况下,都会从main
包调用该服务:
Services.get(LogService.class).ifPresent(service -> service.log(message));
将应用程序部署到特定平台时,只会调用该平台的实现。
因此,如果您需要新服务,可以按照Charm Down中的设计创建它。