Как использовать папки 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.

Другие вопросы по тегам