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

Release模式启用Sdk Assemblies Only,开启Pro Guard/Multi Dex时Java.exe报错代码1的原因

可能的原因及排查建议

我来帮你梳理下这个Release模式下的编译错误可能的几个原因,都是基于Android/Xamarin编译场景的常见问题总结的:

  • ProGuard 规则冲突或缺失
    当启用Sdk Assemblies Only模式时,应用仅引用SDK程序集,但ProGuard的默认规则可能未覆盖你实际用到的SDK内部类/方法,或者自定义的proguard.cfg规则存在错误(比如误混淆了SDK中必要的类)。尤其在开启MultiDex后,ProGuard处理dex拆分时,规则问题容易导致类查找失败或混淆错误,最终触发Java编译进程异常退出。
    排查建议:检查proguard.cfg文件,添加AndroidX、Support库等必要SDK类的保留规则;先尝试使用默认ProGuard规则,排除自定义规则的问题。

  • MultiDex 配置适配问题
    Sdk Assemblies Only模式下应用依赖结构更精简,但MultiDex的配置可能未适配这种模式。比如multiDexKeepFile或multiDexKeepProguard中指定的类在该模式下不存在,或者主dex未正确包含启动必需的类(如Application类、入口类)。当ProGuard与MultiDex同时启用时,若主dex类被错误混淆或未被纳入,就会引发编译错误。
    排查建议:检查MultiDex相关配置文件,确保主dex包含所有启动类;尝试手动指定主dex类列表,验证是否解决问题。

  • SDK/构建工具版本不兼容
    Sdk Assemblies Only模式对SDK和构建工具的版本兼容性要求更高,同时启用ProGuard和MultiDex时,若Android SDK Build Tools版本过旧,或目标SDK与编译SDK版本不匹配,可能导致工具链出错,进而出现Java.exe退出码1的问题。
    排查建议:将Android SDK Build Tools更新至最新稳定版,确保目标SDK与编译SDK版本一致;同时检查Xamarin.Android版本是否为最新,修复工具链可能存在的bug。

  • 构建缓存残留问题
    切换编译模式(如从Full切换到Sdk Assemblies Only)后,旧的构建缓存残留可能引发冲突。开启ProGuard和MultiDex时会生成更多中间文件,残留缓存可能导致Java编译时出现资源或类找不到的情况。
    排查建议:清理项目的bin、obj文件夹,或在IDE中执行Clean Solution操作,之后重新构建项目。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:13:55