Skip to content

[godot-iap] Avoid repeated Windows editor errors for Apple-only GDExtension #366

Closed

Description

@BriceN

Description

When using godot-iap on Windows for Android development, Godot repeatedly logs errors because the bundled .gdextension file only provides iOS/macOS libraries.

The plugin itself works for Android: the Android AAR loads correctly and an Android App Bundle can be exported successfully. However, the Godot Windows editor repeatedly attempts to load the Apple-only GDExtension during project startup and development.

Environment

  • Godot: 4.7.stable.official
  • OS: Windows x86_64
  • Plugin: godot-iap 3.3.2
  • Target platform: Android
  • Android package: com.bricenuzzo.spiketest

Current GDExtension configuration

[configuration]
entry_symbol = "godot_iap_entry_point"
compatibility_minimum = "4.3"
supported_platforms = ["ios", "macos"]

[libraries]
ios.arm64 = "ios/GodotIap.framework/GodotIap"
macos.arm64 = "macos/GodotIap.framework/GodotIap"

Actual behavior

Godot repeatedly logs:

ERROR: core/extension/gdextension_library_loader.cpp:369 - No GDExtension library found for current OS and architecture (windows.x86_64) in configuration file: res://addons/godot-iap/bin/godot_iap.gdextension

ERROR: GDExtension dynamic library not found: 'res://addons/godot-iap/bin/godot_iap.gdextension'.

These messages appear repeatedly when opening and developing the project under Windows.

Expected behavior

Because the GDExtension explicitly declares only ios and macos, the Windows editor should ignore it without logging repeated errors.

The Android integration should continue to use the Android .gdap configuration and AAR files.

Workaround

For an Android-only development phase, renaming:

godot_iap.gdextension

to:

godot_iap.gdextension.disabled

removes the errors and does not prevent Android AAR exports.

However, this workaround requires manually restoring the file before starting iOS/macOS integration.

Possible improvement

Could the plugin package avoid loading the Apple-only .gdextension on non-Apple development platforms, or provide a platform-safe packaging mechanism that prevents these editor errors while preserving iOS/macOS support?

This appears related to the Godot issue:

godotengine/godot#105615

Activity

  1. hyochan commented on Aug 20, 2026

    @hyochan
    Member

    Confirmed, and the cause is on our side: supported_platforms is not a key Godot reads. The .gdextension format only defines entry_symbol, compatibility_minimum, compatibility_maximum, reloadable, and android_aar_plugin, so that line never gated anything — the loader went straight to the library search and printed the errors you saw.

    The real key is include_tags, which the loader checks before searching [libraries], returning ERR_SKIP so the extension is skipped without logging. #367 ships that.

    One caveat worth being upfront about: include_tags exists only in Godot master (4.8-dev). It is absent from 4.3 through 4.7 — your log line gdextension_library_loader.cpp:369 matches the 4.7 branch exactly — and godotengine/godot#105615 is still open, so nothing we put in the config file can silence 4.7 today. The change is inert on your version and starts working when you move to 4.8.

    Until then your rename is the right workaround, and it is now documented in the Godot setup guide with the reason it is safe: iOS and macOS builds require a Mac, so nothing in bin/ is usable from Windows, and Android keeps loading the AAR from addons/godot-iap/android/.

    Thanks for the precise report — the version, the exact log lines, and the upstream link made this quick to pin down.

  2. hyochan commented on Aug 20, 2026

    @hyochan
    Member

    Released in godot-iap 3.3.3. The shipped .gdextension now reads:

    [configuration]
    entry_symbol = "godot_iap_entry_point"
    compatibility_minimum = "4.3"
    include_tags = ["ios", "macos"]

    To be clear about what this does and does not fix on your setup: include_tags is only implemented in Godot 4.8. On 4.7 the key is ignored, so the errors will persist for you until you move to 4.8 — the rename remains the working answer in the meantime, and it is now documented in the Godot setup guide.

    Nothing else changes: Android still loads the AAR plugin, and iOS and macOS still load their frameworks. Verified on device before release — Android fetched its Play catalog and iOS fetched the StoreKit catalog with the new config.

    Thanks again for the report. The supported_platforms line was ours, and it never did anything.

  3. BriceN commented on Aug 20, 2026

    @BriceN
    Author

    Hey @hyochan
    I updated both Godot to 4.8 dev3 and godot-iap to 3.3.3, and I still get the output errors :

    Image
  4. hyochan commented on Aug 20, 2026

    @hyochan
    Member

    Expected on that exact build, unfortunately — my earlier "Godot 4.8" wording was too loose. Sorry for the confusion.

    Engine support for include_tags (godotengine/godot#121575) merged into master on Aug 11 — four days after 4.8-dev3 was built (Aug 7, from godotengine/godot@51105cc). No downloadable Godot build reads the key yet; the next 4.8 snapshot will be the first that skips the extension silently. On dev3 the loader behaves exactly like 4.7 here — your error line gdextension_library_loader.cpp:369 matches the pre-filter source.

    The errors remain cosmetic: your log shows [GodotIap] Plugin enabled, Android loads the AAR plugin independently, and iOS/macOS exports are unaffected. To silence the editor today:

    mv addons/godot-iap/bin/godot_iap.gdextension \
       addons/godot-iap/bin/godot_iap.gdextension.disabled

    (restore the name before an iOS/macOS build).

    Docs now state the exact boundary: https://www.openiap.dev/docs/setup/godot#gdextension-non-apple-editor

    Keeping this closed since the addon side is complete — once a 4.8 build newer than dev3 ships, updating Godot alone silences it. If it does not, ping here and I will reopen.

  5. added a commit that references this issue on Aug 25, 2026
    eda9e68
  6. djrain commented on Sep 8, 2026

    @djrain

    Hi, the docs suggest this is only an issue on Windows and linux - is it expected that I'm getting same errors and engine freeze on Mac?

     ERROR: core/extension/gdextension_library_loader.cpp:369 - No GDExtension library found for current OS and architecture (macos.arm64) in configuration file: res://addons/godot-iap/bin/godot_iap.gdextension  ERROR: GDExtension dynamic library not found: 'res://addons/godot-iap/bin/godot_iap.gdextension'.

    If so, the docs should be updated.

  7. hyochan commented on Sep 9, 2026

    @hyochan
    Member

    Expected with the release zip, and the docs were wrong to say Windows and Linux only — fixed: https://www.openiap.dev/docs/setup/godot#gdextension-non-apple-editor

    The zip ships an iOS-only GDExtension (include_tags = ["ios"], a single ios.arm64 library, no bin/macos), so a macOS editor hits the same "no library for macos.arm64" path a Windows one does. Your line number, gdextension_library_loader.cpp:369, is the 4.7 / 4.8-dev3 loader, which does not read include_tags. 4.8-dev4 is the first build that does; on it the extension is skipped silently on every desktop OS. Until then the rename in the docs silences it — restore the name before an iOS export.

    The freeze is not something this path explains: the loader logs and returns. Which Godot build is it, and does the editor recover after the project scan or stay stuck? If your addon folder has a bin/macos/ directory (3.3.2 and 3.3.3 shipped one; a source build can too), that is a different problem — Gatekeeper — and the "Damaged Framework Warning" section on the same page covers it.

  8. djrain commented on Sep 9, 2026

    @djrain

    Which Godot build is it, and does the editor recover after the project scan or stay stuck?

    Godot 4.7.2 stable. It freezes for a second or two and then recovers. I do not have addons/godot-iap/bin/macos (installed 3.5.0) but the freeze is definitely from this addon since removing it or doing the rename workaround resolves it.

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

    🐛 bugSomething isn't working📖 documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions