You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: tutorials/platform/ios/ios_plugin.rst
+18-9
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ iOS plugins allow you to use third-party libraries and support iOS-specific feat
10
10
Loading and using an existing plugin
11
11
------------------------------------
12
12
13
-
An iOS plugin requires a ``.gdip`` configuration file, a ``.a`` binary file, and possibly other dependencies. To use it, you need to:
13
+
An iOS plugin requires a ``.gdip`` configuration file, a binary file which can be either ``.a`` static library or ``.xcframework`` containing ``.a`` static libraries, and possibly other dependencies. To use it, you need to:
14
14
15
15
1. Copy the plugin's files to your Godot project's ``res://ios/plugins`` directory. You can also group files in a sub-directory, like ``res://ios/plugins/my_plugin``.
16
16
@@ -29,7 +29,7 @@ When a plugin is active, you can access it in your using ``Engine.get_singleton(
29
29
Creating an iOS plugin
30
30
----------------------
31
31
32
-
At its core, a Godot iOS plugin is an iOS static library (*.a* archive file) with the following requirements:
32
+
At its core, a Godot iOS plugin is an iOS library (*.a* archive file or *.xcframework* containing static libraries) with the following requirements:
33
33
34
34
- The library must have a dependency on the Godot engine headers.
35
35
@@ -39,7 +39,9 @@ An iOS plugin can have the same functionality as a Godot module but provides mor
39
39
40
40
Here are the steps to get a plugin's development started. We recommend using `Xcode <https://developer.apple.com/develop/>`_ as your development environment.
41
41
42
-
.. seealso:: The `Godot iOS plugin template <https://github.com/naithar/godot_ios_plugin>`_ gives you all the boilerplate you need to get your iOS plugin started.
42
+
.. seealso:: The `Godot iOS Plugins <https://github.com/godotengine/godot-ios-plugins>`_ Godot iOS plugins.
43
+
44
+
The `Godot iOS plugin template <https://github.com/naithar/godot_ios_plugin>`_ gives you all the boilerplate you need to get your iOS plugin started.
43
45
44
46
45
47
To build an iOS plugin:
@@ -56,9 +58,11 @@ To build an iOS plugin:
56
58
57
59
3. In the ``Build Settings`` tab, specify the compilation flags for your static library in ``OTHER_CFLAGS``. The most important ones are ``-fcxx-modules``, ``-fmodules``, and ``-DDEBUG`` if you need debug support. Other flags should be the same you use to compile Godot. For instance, ``-DPTRCALL_ENABLED -DDEBUG_ENABLED, -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTYPED_METHOD_BIND``.
58
60
59
-
4. Add the required logic for your plugin and build your library to generate a ``.a`` file. You will probably need to build both ``debug`` and ``release`` targeted ``a`` files. Depending on your need, pick only one or both. If you need both ``a`` files their name should match following pattern: ``[PluginName].[TargetType].a``. You can also build the static library with your SCons configuration.
61
+
4. Add the required logic for your plugin and build your library to generate a ``.a`` file. You will probably need to build both ``debug`` and ``release`` target ``.a`` files. Depending on your needs, pick either or both. If you need both debug and release ``.a`` files, their name should match following pattern: ``[PluginName].[TargetType].a``. You can also build the static library with your SCons configuration.
62
+
63
+
5. The iOS plugin system also supports ``.xcframework`` files. To generate one, you can use a command such as: ``xcodebuild -create-xcframework -library [DeviceLibrary].a -library [SimulatorLibrary].a -output [PluginName].xcframework``.
60
64
61
-
5. Create a Godot iOS Plugin configuration file to help the system detect and load your plugin:
65
+
6. Create a Godot iOS Plugin configuration file to help the system detect and load your plugin:
62
66
63
67
- The configuration file extension must be ``gdip`` (e.g.: ``MyPlugin.gdip``).
64
68
@@ -80,18 +84,21 @@ To build an iOS plugin:
80
84
81
85
files=["data.json"]
82
86
87
+
linker_flags=["-ObjC"]
88
+
83
89
[plist]
84
90
PlistKey="Some Info.plist key you might need"
85
91
86
92
The ``config`` section and fields are required and defined as follow:
87
93
88
94
- **name**: name of the plugin
89
95
90
-
- **binary**: this should be the filepath of the plugin ``a`` file.
96
+
- **binary**: this should be the filepath of the plugin library (``a`` or ``xcframework``) file.
91
97
92
-
- The filepath can be relative (e.g.: ``MyPlugin.a``) in which case it's relative to the directory where ``gdip`` file is located.
93
-
- The filepath can be absolute: ``res://some_path/MyPlugin.aar``.
94
-
- In case you need multitarget library usage, filename should be ``MyPlugin.a`` and ``a`` files should be name as ``MyPlugin.release.a`` and ``MyPlugin.debug.a``.
98
+
- The filepath can be relative (e.g.: ``MyPlugin.a``, ``MyPlugin.xcframework``) in which case it's relative to the directory where the ``gdip`` file is located.
99
+
- The filepath can be absolute: ``res://some_path/MyPlugin.a`` or ``res://some_path/MyPlugin.xcframework``.
100
+
- In case you need multitarget library usage, the filename should be ``MyPlugin.a`` and ``.a`` files should be named as ``MyPlugin.release.a`` and ``MyPlugin.debug.a``.
101
+
- In case you use multitarget ``xcframework`` libraries, their filename in the configuration should be ``MyPlugin.xcframework``. The ``.xcframework`` files should be named as ``MyPlugin.release.xcframework`` and ``MyPlugin.debug.xcframework``.
95
102
96
103
The ``dependencies`` and ``plist`` sections are optional and defined as follow:
97
104
@@ -107,4 +114,6 @@ To build an iOS plugin:
107
114
108
115
- **files**: contains a list of files that should be copied on export. This is useful for data files or images.
109
116
117
+
- **linker_flags**: contains a list of linker flags to add to the Xcode project when exporting the plugin.
118
+
110
119
- **plist**: should have keys and values that should be present in ``Info.plist`` file following pattern: ``KeyName="key value"``
0 commit comments