如何使用构成Gluon项目的iOS,android,桌面(和主要)的Gluon文件夹?

时间:2017-10-08 18:51:55

标签: eclipse gradle javafx gluon

我正在尝试通过将platform / os特定代码放在各自的文件夹中来设置我的Gluon项目(在新创建的Gluon项目中设置自动创建的项目)。但无论我使用Gradle执行什么任务,最终都会使用com.gluonhq.charm.glisten.mvc.View文件夹。

让我们说我希望javafx.scene.control.Button中包含open('...', 'r', encoding='utf-8') - 并通过说明它来自哪个文件夹(主要,安卓,桌面或iOS)来标记它。怎么可能?

1 个答案:

答案 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中的设计创建它。