You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibGDX类无法创建(缺失无参构造):Google Play控制台问题求助

解决LibGDX在Google Play控制台的无参构造缺失错误

问题原因

你遇到的com.badlogic.gdx.scenes.scene2d.f是被ProGuard混淆后的类名,实际对应LibGDX scene2d包下的某个核心类(比如Actor、Group这类基础组件)。本地IntelliJ运行正常是因为debug模式未开启混淆,而Google Play发布的是混淆后的release包,ProGuard删除或修改了这些类的无参构造,导致反射实例化失败。

当前你的ProGuard配置仅保护了scene2d.ui下的类,但scene2d核心包的类未被保留,而这些类大量依赖反射创建实例,必须保留无参构造和完整类结构。

修改后的ProGuard配置

-verbose

-dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication

# Required if using Gdx-Controllers extension
-keep class com.badlogic.gdx.controllers.android.AndroidControllers

# 保护scene2d核心包及UI包的类,保留无参构造和内部枚举
-keep class com.badlogic.gdx.scenes.scene2d.**{
    **[] $VALUES;
    <init>(); # 强制保留无参构造
    *;
}

-keep class com.your.game.data.**{
   **[] $VALUES;
    *;
}

# Required if using Box2D extension
-keepclassmembers class com.badlogic.gdx.physics.box2d.World {
   boolean contactFilter(long, long);
    void    beginContact(long);
    void    endContact(long);
    void    preSolve(long, long);
    void    postSolve(long, long);
    boolean reportFixture(long);
    float   reportRayFixture(long, float, float, float, float, float);
}

关键修改说明

  • 把原有的com.badlogic.gdx.scenes.scene2d.ui.**替换为com.badlogic.gdx.scenes.scene2d.**,覆盖整个scene2d包的类
  • 添加<init>();规则,强制ProGuard保留这些类的无参构造,避免反射失败

内容的提问来源于stack exchange,提问作者Ajax12Ajax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:36:01