Skip to content

elmajime/ARCore-GDExtension

 
 

Repository files navigation

GDExtension Android Plugin Template

This repository serves as a quickstart template for building a GDExtension Android plugin for Godot 4.2+.

Contents

Usage

Note: Android Studio is the recommended IDE for developing Godot Android plugins. You can install the latest version from https://developer. android.com/studio.

To use this template, log in to github and click the green "Use this template" button at the top of the repository page. This will let you create a copy of this repository with a clean git history.

Once the project is cloned to your local machine, run the following command in the project root directory to initialize the godot-cpp submodule:

git submodule update --init

Building the C++ bindings

Build the Android C++ bindings using the following commands. To speed up compilation, add -jN at the end of the SCons command line where N is the number of CPU threads you have on your system. The example below uses 4 threads.

cd godot-cpp
scons platform=android target=template_debug -j4
scons platform=android target=template_release -j4

When the command is completed, you should have static libraries stored in godot-cpp/bin that will be used for compilation by the plugin.

Configuring the template

Several TODO have been added to the project to help identify where changes are needed; here's an overview of the minimum set of modifications needed:

Building the configured Android plugin

  • In a terminal window, navigate to the project's root directory and run the following command:
./gradlew assemble
  • On successful completion of the build, the output files can be found in plugin/demo/addons

Testing the Android plugin

You can use the included Godot demo project to test the built Android plugin

  • Open the demo in Godot (4.2 or higher)
  • Navigate to Project -> Project Settings... -> Plugins, and ensure the plugin is enabled
  • Install the Godot Android build template by clicking on Project -> Install Android Build Template...
  • Open plugin/demo/main.gd and update the logic as needed to reference your plugin and its methods
  • Connect an Android device to your machine and run the demo on it

Tips

Simplify access to the exposed Java / Kotlin APIs

To make it easier to access the exposed Java / Kotlin APIs in the Godot Editor, it's recommended to provide one (or multiple) gdscript wrapper class for your plugin users to interface with.

Those wrapper classes should be included in the plugin/export_scripts_template/interface directory (create the directory if it doesn't exist).

For example:

class_name PluginInterface extends Object

## Interface used to access the functionality provided by this plugin

var _plugin_name = "GDExtensionAndroidPluginTemplate"
var _plugin_singleton

func _init():
	if Engine.has_singleton(_plugin_name):
		_plugin_singleton = Engine.get_singleton(_plugin_name)
	else:
		printerr("Initialization error: unable to access the java logic")

## Print a 'Hello World' message to the logcat.
func helloWorld():
	if _plugin_singleton:
		_plugin_singleton.helloWorld()
	else:
		printerr("Initialization error")

Support using the gdextension functionality in the Godot Editor

If planning to use the gdextension functionality in the Godot Editor, it is recommended that the gdextension's native binaries are compiled not just for Android, but also for the OS onto which the developer / users intend to run the Godot Editor. Not doing so may prevent the developer / users from writing code that accesses the plugin from within the Godot Editor.

This may involve creating dummy plugins for the host OS just so the API is published to the editor. You can use the godot-cpp-template github template for reference on how to do so.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 35.0%
  • CMake 29.7%
  • C 15.9%
  • C++ 11.6%
  • GDScript 7.8%