Skip to content

Android support regression in JFoenix with JavaFX 17+ / GluonFX (SubstrateVM) #1275

@ctoabidmaqbool

Description

@ctoabidmaqbool

Background

JFoenix worked well on Android in the past when using:

  • JavaFX 8 / 1.8
  • javafxmobile-plugin
  • JavaFXPorts + Dalvik VM
  • Charm Down–based Android deployment

In that setup, JFoenix relied on Android-specific JavaFX skins, for example:

  • TextAreaSkinAndroid
  • TextFieldSkinAndroid

which were available at runtime and used directly by JFoenix Android skins:

  • JFXTextAreaSkinAndroid
  • JFXTextFieldSkinAndroid

This approach worked reliably for Android APK builds.


Current Situation (Problem)

With modern tooling:

  • JavaFX 17+
  • GluonFX
  • SubstrateVM / GraalVM
  • Attach APIs
  • Android deployment via Gluon

JFoenix no longer works correctly on Android, even though it still works fine on desktop.

The main blocker appears to be that:

  • TextAreaSkinAndroid and TextFieldSkinAndroid are no longer exposed as usable APIs
  • They exist only in the JavaFX Android source tree, not in public JavaFX artifacts
  • Third-party libraries (like JFoenix) cannot depend on them safely

Relevant OpenJFX source (Android-only):

https://github.com/openjdk/jfx/tree/jfx17/modules/javafx.controls/src/android/java/javafx/scene/control/skin


Related Gluon / Substrate Discussion

I have opened a related question with the Gluon team to understand the intended approach going forward:

🔗 Gluon Substrate issue:
gluonhq/substrate#1340

This issue discusses:

  • Whether Android skins are internal-only
  • How custom controls should support Android with GluonFX
  • Whether copying or reimplementing Android skins is expected

Questions for JFoenix Maintainers

I’d appreciate guidance on the JFoenix side:

  1. Is Android support still a goal for JFoenix with JavaFX 17+?
  2. Should JFoenix continue to rely on Android-specific skins, or move away from them?
  3. Would a partial reimplementation of Android behavior be acceptable?
  4. Is there interest in aligning JFoenix with the modern GluonFX / SubstrateVM stack?

I’m currently experimenting with porting JFoenix to JavaFX 17+ and GluonFX and would be happy to contribute fixes or refactors if there is an agreed direction.


Summary

  • ✅ JFoenix worked on Android with JavaFX 8 + JavaFXPorts
  • ❌ It does not work correctly with JavaFX 17+ + GluonFX
  • 🚧 Android-specific skins are no longer publicly accessible
  • 🤝 Clarification is needed on the future Android strategy

Thanks for maintaining JFoenix — any guidance would be highly appreciated 🙏

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions