Как использовать папки Gluon для iOS, Android, рабочего стола (и основные), которые составляют проект Gluon?
Я пытаюсь настроить свой проект Gluon, поместив определенный код платформы / операционной системы в соответствующую папку (автоматически созданный проект, созданный во вновь созданном проекте Gluon). Тем не менее, независимо от того, какую задачу я делаю с Gradle, в конечном итоге она берет Main
папка.
Допустим, я хочу иметь com.gluonhq.charm.glisten.mvc.View
с javafx.scene.control.Button
в нем - и пометить его по-разному, указав, из какой папки он пришел (основной, Android, настольный компьютер или iOS). Как это было бы возможно?
1 ответ
Как правило, вы не должны требовать конкретного кода платформы в вашем проекте.
Если вам нужен пользовательский стиль на основе платформы, вы можете использовать Platform.getCurrent().name()
а затем реагировать на это.
Например, MyDevoxx
Приложение загружает различные CSS-файлы в зависимости от платформы и типа устройства.
Хороший способ понять, как работают папки, специфичные для платформы, - взглянуть на библиотеку Charm Down и на реализацию различных сервисов.
Как вы заметите, эти папки содержат как код Java, так и код конкретной платформы.
Пример того, как вы можете создать новый сервис, можно найти здесь. Например, AndroidLogService
реализация использует android.util.Log
, в то время как IOSLogService
использует нативный Objective-C (см. Log.m
). Этот нативный код должен быть скомпилирован как нативная библиотека (см. installNativeLib
задача в файле сборки).
В любом случае услуга вызывается из main
пакет:
Services.get(LogService.class).ifPresent(service -> service.log(message));
При развертывании приложения на конкретной платформе вызывается только реализация для этой платформы.
Поэтому, если вам нужен новый сервис, вы можете создать его, следуя его дизайну в Charm Down.