Skip to content

Contributing

Thank you for your interest in contributing to the Godot AdMob Plugin! This guide will help you understand the project structure, build processes, and development workflows.

Project structure

.
├-- addon/                               # GDScript interface module
│   ├-- addon-build.gradle.kts             # Gradle build configuration for addon module
│   ├-- ?.gradle.kts                       # Any extra addon-specific Gradle configuration (configured in
│   │                                      # addon/config/addon-build.properties) for the plugin goes here
│   ├-- build/
│   │   └-- output/                        # Generated GDScript code
│   │
│   ├-- config/
│   │   └-- addon-build.properties         # Gradle build customization for addon module
│   │
│   └-- src/
│       ├-- main                           # Main GDScript templates
│       └-- shared                         # GDScript templates in common with other plugins, if any
├-- android/                             # Android platform module
│   ├-- android-build.gradle.kts           # Android build configuration
│   ├-- ?.gradle.kts                       # Any extra Android-specific Gradle configuration (configured in
│   │                                      # android/config/android-build.properties) for the plugin goes here
│   │
│   ├-- build/
│   │   └-- outputs/                       # Generated Android AAR files
│   │
│   ├-- config/
│   │   └-- android-build.properties       # Gradle build customization for android module
│   │
│   ├-- libs/                              # Godot library for Android (default location; configurable via local.properties)
│   └-- src/main/                          # Android source code
├-- common/                              # Gradle root - shared build configuration
│   ├-- build.gradle.kts                   # Root build configuration
│   ├-- ?.gradle.kts                       # Any extra Gradle configuration (configured in
│   │                                      # common/config/build.properties) for the plugin goes here
│   │
│   ├-- gradle.properties                  # Gradle properties
│   ├-- local.properties                   # Local machine config (gitignored)
│   ├-- settings.gradle.kts                # Gradle settings
│   ├-- build/
│   │   ├-- archive/                       # Generated archives
│   │   ├-- plugin/                        # Built plugin files
│   │   └-- reports/                       # Build reports
│   │
│   ├-- build-logic/                       # Convention plugin (precompiled script plugins)
│   │   ├-- build.gradle.kts
│   │   ├-- settings.gradle.kts
│   │   └-- src/main/kotlin/
│   │       ├-- base-conventions.gradle.kts  # Core convention plugin - applied by every module
│   │       ├-- BuildConfig.kt               # Reads build.properties + per-module *-build.properties
│   │       ├-- GodotConfig.kt               # Reads godot.properties
│   │       ├-- IosConfig.kt                 # Reads ios/config/ios.properties
│   │       ├-- PluginConfig.kt              # Reads plugin.properties
│   │       ├-- ProjectExtensions.kt         # loadPluginConfig(), loadGodotConfig(), loadIosConfig(), loadBuildConfig()
│   │       └-- SpmDependency.kt             # Data class for spm_dependencies.json entries
│   │
│   ├-- config/
│   │   ├-- build.properties               # Build-related property configuration & customization
│   │   ├-- godot.properties               # Godot version configuration
│   │   └-- plugin.properties              # Plugin configuration
│   │
│   └-- gradle/                            # Gradle wrapper and version catalogs
│       └-- libs.versions.toml             # Dependencies and versions
├-- demo/                                # Demo application
│   ├-- addons/                            # Installed plugin files
│   ├-- ios/                               # iOS-specific demo files
│   └-- *.gd                               # Demo app scripts
├-- ios/                                 # iOS platform module
│   ├-- ios-build.gradle.kts               # iOS build configuration
│   ├-- ?.gradle.kts                       # Any extra iOS-specific Gradle configuration (configured in
│   │                                      # ios/config/ios-build.properties) for the plugin goes here
│   │
│   ├-- src/                               # iOS platform code
│   ├-- plugin.xcodeproj/                  # Xcode project
│   ├-- build/                             # iOS build outputs
│   │
│   ├-- config/
│   │   ├-- ios.properties                 # iOS configuration
│   │   ├-- ios-build.properties           # Gradle build customization for ios module
│   │   ├-- spm_dependencies.json          # SPM dependency configuration
│   │   └-- *.gdip                         # Godot iOS plugin config
│   │
│   └-- godot/                             # Downloaded Godot source (default location; configurable via local.properties)
├-- script/                              # Build and utility scripts
│   ├-- build.sh                           # Main build script
│   ├-- build_android.sh                   # Android build script
│   ├-- build_ios.sh                       # iOS build script
│   ├-- install.sh                         # Plugin installation script
│   ├-- run_gradle_task.sh                 # Gradle task runner
│   ├-- get_config_property.sh             # Configuration reader
│   └-- spm_manager.rb                     # Ruby script for managing SPM dependencies in Xcode project
├-- docs/                                # Documentation
└-- release/                             # Final release archives