Skip to content

Commit

Permalink
Update the 'Hello World' Android plugin to match the new Godot 4.2 fo…
Browse files Browse the repository at this point in the history
…rmat

See godotengine/godot#78958 for reference.
  • Loading branch information
m4gr3d committed Jul 2, 2023
1 parent 8a50b71 commit f6a336c
Show file tree
Hide file tree
Showing 18 changed files with 164 additions and 104 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
/captures
.externalNativeBuild
.cxx
.godot
27 changes: 7 additions & 20 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,32 +1,19 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

ext {
kotlin_version = '1.3.70'
}
apply from: 'config.gradle'

repositories {
google()
jcenter()

mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"


// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath "com.android.tools.build:gradle:$versions.gradlePluginVersion"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlinVersion"
}
}

allprojects {
repositories {
google()
jcenter()

}
}
apply from: 'config.gradle'

task clean(type: Delete) {
delete rootProject.buildDir
Expand Down
11 changes: 11 additions & 0 deletions config.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
ext {
versions = [
gradlePluginVersion: '7.2.1',
compileSdk : 33,
minSdk : 21,
targetSdk : 33,
godotLibVersion : '4.0.3.stable',
javaVersion : JavaVersion.VERSION_11,
kotlinVersion : '1.7.21',
]
}
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
39 changes: 24 additions & 15 deletions hello_world/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
apply plugin: 'com.android.library'
plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.android'
}

android {
compileSdkVersion 29
buildToolsVersion "29.0.1"
compileSdk versions.compileSdk

defaultConfig {
minSdkVersion 18
targetSdkVersion 29
minSdk versions.minSdk
targetSdk versions.targetSdk
versionCode 1
versionName "1.0"
}
Expand All @@ -21,14 +23,21 @@ android {
}

dependencies {
/*
Used to provide dependency on the Godot Android library. A version of that
library will be made available for each stable release of Godot.
`compileOnly` is used instead of `implementation` to ensure that the
godot library is not bundled with the generated plugin AAR file. This is
necessary since the Godot editor will also provide a version of the godot
library when building the final binary.
*/
compileOnly fileTree(dir: '../libs', include: ['godot-lib*.aar'])
compileOnly "org.godotengine:godot:$versions.godotLibVersion"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlinVersion"
}

task copyDebugAARToAddons(type: Copy) {
from 'build/outputs/aar'
include 'HelloWorld.debug.aar'
into 'demo/addons/hello_world_plugin'
}

task copyReleaseAARToAddons(type: Copy) {
from 'build/outputs/aar'
include 'HelloWorld.release.aar'
into 'demo/addons/hello_world_plugin'
}

assemble.finalizedBy(copyDebugAARToAddons)
assemble.finalizedBy(copyReleaseAARToAddons)
19 changes: 9 additions & 10 deletions hello_world/demo/Main.tscn
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
[gd_scene load_steps=2 format=2]
[gd_scene load_steps=2 format=3 uid="uid://bgtr75kiyu5fh"]

[ext_resource path="res://Main.gd" type="Script" id=1]
[ext_resource type="Script" path="res://Main.gd" id="1"]

[node name="Main" type="Node2D"]
script = ExtResource( 1 )
script = ExtResource("1")

[node name="Button" type="Button" parent="."]
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
margin_left = 40.0
margin_top = 250.0
margin_right = 320.0
margin_bottom = 312.0
offset_left = 40.0
offset_top = 250.0
offset_right = 320.0
offset_bottom = 312.0
text = "Hello World"
__meta__ = {
"_edit_use_anchors_": true
}

[connection signal="pressed" from="Button" to="." method="_on_Button_pressed"]
1 change: 1 addition & 0 deletions hello_world/demo/addons/hello_world_plugin/.gdignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
@tool
extends EditorExportPlugin

func _supports_platform(platform):
if platform is EditorExportPlatformAndroid:
return true
return false

func _get_android_libraries(platform, debug):
if debug:
return PackedStringArray(["hello_world_plugin/HelloWorld.debug.aar"])
else:
return PackedStringArray(["hello_world_plugin/HelloWorld.release.aar"])

func _get_name():
return "HelloWorldPlugin"
17 changes: 17 additions & 0 deletions hello_world/demo/addons/hello_world_plugin/hello_world_plugin.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
@tool
extends EditorPlugin

# A class member to hold the export plugin during its lifecycle.
var export_plugin : EditorExportPlugin

func _enter_tree():
# Initialization of the plugin goes here.
export_plugin = preload("hello_world_export_plugin.gd").new()
add_export_plugin(export_plugin)
pass


func _exit_tree():
# Clean-up of the plugin goes here.
remove_export_plugin(export_plugin)
export_plugin = null
7 changes: 7 additions & 0 deletions hello_world/demo/addons/hello_world_plugin/plugin.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[plugin]

name="HelloWorldPlugin"
description="Sample to showcase how to package a Godot Android plugin "
author="Fredia Huya-Kouadio (m4gr3d)"
version=""
script="hello_world_plugin.gd"
6 changes: 3 additions & 3 deletions hello_world/demo/default_env.tres
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[gd_resource type="Environment" load_steps=2 format=2]
[gd_resource type="Environment" load_steps=2 format=3 uid="uid://bi2meuxrf37pv"]

[sub_resource type="ProceduralSky" id=1]
[sub_resource type="Sky" id="1"]

[resource]
background_mode = 2
background_sky = SubResource( 1 )
sky = SubResource("1")
57 changes: 29 additions & 28 deletions hello_world/demo/export_presets.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,56 @@
name="Android"
platform="Android"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
patch_list=PoolStringArray( )
script_export_mode=1
script_encryption_key=""
export_path="android/Hello World Plugin Demo.apk"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false

[preset.0.options]

graphics/32_bits_framebuffer=true
xr_features/xr_mode=0
xr_features/degrees_of_freedom=0
xr_features/hand_tracking=0
one_click_deploy/clear_previous_install=false
custom_template/debug=""
custom_template/release=""
custom_template/use_custom_build=true
custom_template/plugins="HelloWorld"
command_line/extra_args=""
gradle_build/use_gradle_build=true
gradle_build/export_format=0
gradle_build/min_sdk=""
gradle_build/target_sdk=""
architectures/armeabi-v7a=true
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
version/code=1
version/name="1.0"
package/unique_name="fhuyakou.godot.plugin.android.helloworld.demo"
package/name=""
package/signed=true
package/app_category=2
package/retain_data_on_uninstall=false
package/exclude_from_recents=false
launcher_icons/main_192x192=""
launcher_icons/adaptive_foreground_432x432=""
launcher_icons/adaptive_background_432x432=""
graphics/opengl_debug=false
xr_features/xr_mode=0
xr_features/hand_tracking=0
xr_features/hand_tracking_frequency=0
xr_features/passthrough=0
screen/immersive_mode=true
screen/orientation=0
screen/support_small=true
screen/support_normal=true
screen/support_large=true
screen/support_xlarge=true
screen/opengl_debug=false
launcher_icons/main_192x192=""
launcher_icons/adaptive_foreground_432x432=""
launcher_icons/adaptive_background_432x432=""
keystore/debug=""
keystore/debug_user=""
keystore/debug_password=""
keystore/release=""
keystore/release_user=""
keystore/release_password=""
user_data_backup/allow=false
command_line/extra_args=""
apk_expansion/enable=false
apk_expansion/SALT=""
apk_expansion/public_key=""
architectures/armeabi-v7a=true
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
permissions/custom_permissions=PoolStringArray( )
permissions/custom_permissions=PackedStringArray()
permissions/access_checkin_properties=false
permissions/access_coarse_location=false
permissions/access_fine_location=false
Expand Down Expand Up @@ -125,6 +125,7 @@ permissions/location_hardware=false
permissions/manage_accounts=false
permissions/manage_app_tokens=false
permissions/manage_documents=false
permissions/manage_external_storage=false
permissions/master_clear=false
permissions/media_content_control=false
permissions/modify_audio_settings=false
Expand Down
21 changes: 13 additions & 8 deletions hello_world/demo/project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,27 @@
; [section] ; section goes between []
; param=value ; assign values to parameters

config_version=4

_global_script_classes=[ ]
_global_script_class_icons={

}
config_version=5

[application]

config/name="Hello World Plugin Demo"
run/main_scene="res://Main.tscn"
config/features=PackedStringArray("4.1")
config/icon="res://icon.png"

[debug]

settings/stdout/verbose_stdout=true

[editor_plugins]

enabled=PackedStringArray("res://addons/hello_world_plugin/plugin.cfg")

[rendering]

renderer/rendering_method="gl_compatibility"
textures/vram_compression/import_etc2_astc=true
environment/defaults/default_environment="res://default_env.tres"
quality/driver/driver_name="GLES2"
vram_compression/import_etc=true
vram_compression/import_etc2=false
environment/default_environment="res://default_env.tres"
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@

import android.app.Activity;
import android.view.View;
import java.util.Collections;
import java.util.List;
import org.godotengine.godot.Godot;
import org.godotengine.godot.plugin.GodotPlugin;
import org.godotengine.godot.plugin.UsedByGodot;

public class HelloWorldPlugin extends GodotPlugin {

Expand All @@ -23,12 +22,7 @@ public String getPluginName() {
}

@Override
public List<String> getPluginMethods() {
return Collections.singletonList("helloWorld");
}

@Override
public View onMainCreateView(Activity activity) {
public View onMainCreate(Activity activity) {
View view = activity.getLayoutInflater().inflate(R.layout.hello_world_view, null);
helloWorldContainer = view.findViewById(R.id.hello_world_container);
return view;
Expand All @@ -37,16 +31,14 @@ public View onMainCreateView(Activity activity) {
/**
* Show/hide, print and return "Hello World".
*/
@UsedByGodot
public String helloWorld() {
if (helloWorldContainer != null) {
helloWorldContainer.post(new Runnable() {
@Override
public void run() {
if (helloWorldContainer.getVisibility() == View.VISIBLE) {
helloWorldContainer.setVisibility(View.GONE);
} else {
helloWorldContainer.setVisibility(View.VISIBLE);
}
helloWorldContainer.post(() -> {
if (helloWorldContainer.getVisibility() == View.VISIBLE) {
helloWorldContainer.setVisibility(View.GONE);
} else {
helloWorldContainer.setVisibility(View.VISIBLE);
}
});
}
Expand Down
Binary file removed libs/godot-lib.release.aar
Binary file not shown.
Loading

0 comments on commit f6a336c

Please sign in to comment.