fix(ios): make init_plugin_* entry points public so release builds link on Xcode 27 (#3684)

* fix(ios): make `init_plugin_*` entry points public so release builds link on Xcode 27

Xcode 27's SwiftPM (Swift Build) gives non-public @_cdecl functions local
visibility in release builds, so each plugin's init_plugin_* is undefined
when Rust links. Mark them public in the 11 plugins with an iOS part.

See tauri-apps/tauri#16130

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Apply suggestion from @lucasfernog

---------

Co-authored-by: takakix2 <1370181+takakix2@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Lucas Fernandes Nogueira <lucas@tauri.app>
This commit is contained in:
authored and GitHub committed 2026-10-10 08:09:53 -03:00
1 parent 818d2e04d9
commit 42ae8b4501
12 files changed
+37 -11

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
---
barcode-scanner: patch
biometric: patch
clipboard-manager: patch
dialog: patch
geolocation: patch
haptics: patch
log: patch
nfc: patch
notification: patch
opener: patch
shell: patch
barcode-scanner-js: patch
biometric-js: patch
clipboard-manager-js: patch
dialog-js: patch
geolocation-js: patch
haptics-js: patch
log-js: patch
nfc-js: patch
notification-js: patch
opener-js: patch
shell-js: patch
---
On iOS, mark the plugin's `init_plugin_*` entry point `public` so release builds made with Xcode 27 keep it global and link.
@@ -346,6 +346,6 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate {
}
@_cdecl("init_plugin_barcode_scanner")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return BarcodeScannerPlugin()
}
@@ -148,6 +148,6 @@ class BiometricPlugin: Plugin {
}
@_cdecl("init_plugin_biometric")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return BiometricPlugin()
}
@@ -47,6 +47,6 @@ class ClipboardPlugin: Plugin {
}
@_cdecl("init_plugin_clipboard")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return ClipboardPlugin()
}
@@ -308,6 +308,6 @@ class DialogPlugin: Plugin {
}
@_cdecl("init_plugin_dialog")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return DialogPlugin()
}
@@ -245,6 +245,6 @@ class GeolocationPlugin: Plugin, CLLocationManagerDelegate {
}
@_cdecl("init_plugin_geolocation")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return GeolocationPlugin()
}
@@ -128,6 +128,6 @@ class HapticsPlugin: Plugin {
}
@_cdecl("init_plugin_haptics")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return HapticsPlugin()
}
+1 -1
View File
@@ -8,7 +8,7 @@ import UIKit
import os.log
@_cdecl("tauri_log")
func log(level: Int, message: NSString) {
public func log(level: Int, message: NSString) {
switch level {
case 1: Logger.debug(message as String)
case 2: Logger.info(message as String)
+1 -1
View File
@@ -518,6 +518,6 @@ class NfcPlugin: Plugin, NFCTagReaderSessionDelegate, NFCNDEFReaderSessionDelega
}
@_cdecl("init_plugin_nfc")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return NfcPlugin()
}
@@ -285,6 +285,6 @@ class NotificationPlugin: Plugin {
}
@_cdecl("init_plugin_notification")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return NotificationPlugin()
}
@@ -41,6 +41,6 @@ class OpenerPlugin: Plugin {
}
@_cdecl("init_plugin_opener")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return OpenerPlugin()
}
+1 -1
View File
@@ -29,6 +29,6 @@ class ShellPlugin: Plugin {
}
@_cdecl("init_plugin_shell")
func initPlugin() -> Plugin {
public func initPlugin() -> Plugin {
return ShellPlugin()
}