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

Android Studio运行GitHub项目触发ExceptionInInitializerError崩溃求解决

解决libgdx原生库加载失败导致的应用崩溃问题

从你提供的Logcat日志可以明确,崩溃的核心原因是应用找不到32位的libgdx.so原生库,进而触发了ExceptionInInitializerError和UnsatisfiedLinkError。下面是针对这个问题的分步解决方案:

首先贴出你的错误日志以便参考:

FATAL EXCEPTION: main
Process: com.gamestudio24.cityescape.android, PID: 29666
java.lang.ExceptionInInitializerError
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1090)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load shared library 'gdx' for target: Linux, 32-bit
at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:115)
at com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:34)
at com.badlogic.gdx.backends.android.AndroidApplication.<clinit>(AndroidApplication.java:59)
... 11 more
Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.gamestudio24.cityescape.android-1/base.apk"],nativeLibraryDirectories=[/data/app/com.gamestudio24.cityescape.android-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libgdx.so"
at java.lang.Runtime.loadLibrary(Runtime.java:367)
at java.lang.System.loadLibrary(System.java:1076)
at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:111)
... 13 more

具体解决方案

1. 检查Gradle中的ABI过滤配置

你的设备是32位架构(日志显示Linux, 32-bit),需要确保Gradle配置中包含对应的32位ABI。打开模块级的build.gradle文件,在defaultConfig块中添加或修改ndk.abiFilters:

android {
    defaultConfig {
        // 保留其他原有配置
        ndk {
            // 包含常用的32位架构,按需调整
            abiFilters 'armeabi-v7a', 'x86', 'armeabi'
        }
    }
}

如果之前只配置了64位架构(比如arm64-v8a),32位设备就无法找到匹配的库,必须加入32位ABI选项。

2. 确认libgdx依赖正确引入

确保在模块级build.gradle的dependencies块中,正确添加了libgdx核心库和对应架构的原生依赖:

dependencies {
    // 替换$gdxVersion为你实际使用的libgdx版本,比如1.12.1
    implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
    implementation "com.badlogicgames.gdx:gdx:$gdxVersion"
    
    // 添加32位架构的原生依赖
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
}

如果缺少对应架构的natives依赖,打包时就不会将libgdx.so包含到APK中。

3. 清理缓存并重建项目

缓存问题可能导致库没有正确打包,执行以下操作:

  • 在Android Studio中点击Build > Clean Project
  • 接着点击Build > Rebuild Project
  • 也可以手动删除项目根目录和模块目录下的build文件夹,然后重新构建

4. 验证APK中的原生库是否存在

通过Android Studio的Build > Analyze APK功能打开生成的APK,查看lib目录下是否存在对应架构的文件夹(比如armeabi-v7a),并且该文件夹内有libgdx.so文件。如果不存在,说明依赖没有正确被打包,需要回到步骤2检查配置。

5. 确认设备架构兼容性

如果你的测试设备是64位的,理论上应该兼容32位库,但如果Gradle配置只打包了64位库,就会出现问题。此时需要同时添加32位和64位的ABI过滤,确保覆盖所有需要支持的设备。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:49:06