Unity导出Android平台2D横版游戏运行报错:java.lang.NoClassDefFoundError
解决Unity导出Android时
java.lang.NoClassDefFoundError: Landroid/support/v4/app/FragmentActivity报错 这个错误核心原因是AndroidX与旧版Android Support Library依赖冲突,或是Unity的Android构建配置未正确处理依赖转换。以下是具体解决步骤:
1. 启用Unity的AndroidX与Jetifier支持
- 打开Unity编辑器,进入
Edit > Project Settings > Player - 切换到
Android标签页,在Publishing Settings区域:- 勾选
Custom Main Gradle Template和Custom Base Gradle Template(生成自定义Gradle模板文件) - Unity 2020+版本直接找到
AndroidX选项,勾选Use AndroidX和Enable Jetifier - 旧版Unity需打开生成的
mainTemplate.gradle文件,在android代码块内添加:android.useAndroidX=true android.enableJetifier=true
- 勾选
2. 排查并替换旧依赖
- 打开
baseProjectTemplate.gradle文件,检查所有依赖项:- 将所有
com.android.support:开头的依赖替换为对应AndroidX库,比如com.android.support:support-v4替换为androidx.core:core-ktx:1.7.0(版本号可按需调整) - 若第三方插件硬编码旧版Support Library依赖,需手动修改插件的Gradle配置(Jetifier可自动转换大部分旧依赖,但特殊情况需手动调整)
- 将所有
3. 清理缓存并重新构建
- 删除项目根目录下的
Library文件夹,重启Unity让其重新生成项目依赖 - 进入
File > Build Settings > Android,点击Clean Build后重新导出APK/AAB - 导出完成后,可用Android Studio的APK Analyzer检查包内是否包含
androidx.fragment.app.FragmentActivity类,确认依赖转换成功
4. Google Play上传校验
- 确保上传的是重新构建后的AAB/APK文件,避免上传缓存的旧构建包
- 在Google Play Console中,检查应用版本号、签名信息与本地构建包一致,确认未上传错误版本
内容的提问来源于stack exchange,提问作者IncredibroXP
相关产品推荐
相关产品推荐

