Godot Android插件异常:Engine.has_singleton(_plugin_name)返回false的排查求助
Godot Android插件异常:Engine.has_singleton(_plugin_name)返回false的排查求助
大家好,我现在在用Godot开发一款Android应用,因为需要用到特定的Android库,所以跟着官方模板做了一个Godot Android插件。为了适配目标库,我把gradle版本更到了8.11.1,Target Android SDK设为36。目前插件能成功编译,App也能正常构建,插件在编辑器里也显示已激活,但一到手机上运行,Engine.has_singleton(_plugin_name)就返回false,而且没有任何其他报错信息,实在找不到问题出在哪,想请大家帮忙排查下。
我的入口脚本(Node2D)
extends Node2D # TODO: Update to match your plugin's name var _plugin_name = "GodotSensorPlugin" var _android_plugin func _ready(): if Engine.has_singleton(_plugin_name): _android_plugin = Engine.get_singleton(_plugin_name) else: printerr("Couldn't find plugin " + _plugin_name)
export_plugin.gd代码
@tool extends EditorPlugin # A class member to hold the editor export plugin during its lifecycle. var export_plugin : AndroidExportPlugin func _enter_tree(): # Initialization of the plugin goes here. export_plugin = AndroidExportPlugin.new() add_export_plugin(export_plugin) func _exit_tree(): # Clean-up of the plugin goes here. remove_export_plugin(export_plugin) export_plugin = null class AndroidExportPlugin extends EditorExportPlugin: var _plugin_name = "GodotSensorPlugin" func _supports_platform(platform): if platform is EditorExportPlatformAndroid: return true return false func _get_android_libraries(platform, debug): if debug: return PackedStringArray([_plugin_name + "/bin/debug/" + _plugin_name + "-debug.aar"]) else: return PackedStringArray([_plugin_name + "/bin/release/" + _plugin_name + "-release.aar"]) func _get_android_dependencies(platform, debug): # TODO: Add remote dependices here. if debug: return PackedStringArray(["androidx.health.connect:connect-client:1.1.0-rc02", "com.google.android.material:material:1.10.0", "androidx.appcompat:appcompat:1.6.1", "androidx.constraintlayout:constraintlayout:2.1.4", "androidx.navigation:navigation-fragment-ktx:2.6.0", "androidx.navigation:navigation-ui-ktx:2.6.0"]) else: return PackedStringArray(["androidx.health.connect:connect-client:1.1.0-rc02", "com.google.android.material:material:1.10.0", "androidx.appcompat:appcompat:1.6.1", "androidx.constraintlayout:constraintlayout:2.1.4", "androidx.navigation:navigation-fragment-ktx:2.6.0", "androidx.navigation:navigation-ui-ktx:2.6.0"]) func _get_name(): return _plugin_name
Kotlin插件主类(路径:src/de/path/to/my/plugin)
package de.path.to.my.plugin import android.content.pm.PackageManager import androidx.activity.ComponentActivity import androidx.activity.result.contract.ActivityResultContract import androidx.health.connect.client.HealthConnectClient import androidx.health.connect.client.PermissionController import androidx.health.connect.client.records.StepsRecord import androidx.health.connect.client.request.ReadRecordsRequest import androidx.health.connect.client.time.TimeRangeFilter import org.godotengine.godot.Godot import org.godotengine.godot.plugin.GodotPlugin import org.godotengine.godot.plugin.UsedByGodot import java.time.Instant class HealthConnectBridge(godot: Godot) : GodotPlugin(godot) { private val componentActivity: ComponentActivity get() = godot.getActivity() as ComponentActivity private val client: HealthConnectClient by lazy { HealthConnectClient.getOrCreate(componentActivity) } override fun getPluginName(): String = "GodotSensorPlugin" }
BuildConfig内容
public final class BuildConfig { public static final boolean DEBUG = Boolean.parseBoolean("true"); public static final String LIBRARY_PACKAGE_NAME = "de.path.to.my.plugin"; public static final String BUILD_TYPE = "debug"; // Field from default config. public static final String GODOT_PLUGIN_NAME = "GodotSensorPlugin"; }
我已经确认Kotlin文件的路径是正确的,和BuildConfig里的LIBRARY_PACKAGE_NAME完全对应。现在实在摸不着头脑,有没有什么方法能排查出问题所在?比如有没有隐藏的日志可以查看,或者哪里的配置我可能遗漏了?
内容来源于stack exchange
相关产品推荐
相关产品推荐

