Skip to content

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

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 🙏

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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