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

VS2022 Xamarin Android13下如何启用ProGuard代码收缩工具?

Xamarin Android 13 + VS2022下ProGuard启用冲突解决办法

问题本质

现在Xamarin Android已经强制用D8当默认DEX编译器了,旧的DX编译器直接被废弃,根本没法用;而D8只认R8作为代码收缩工具,ProGuard和D8的组合早就被官方砍掉支持了,所以你才会碰到这两个互相矛盾的错误。

官方推荐的替代方案:转用R8

R8是ProGuard的官方继任者,完全兼容你之前写的ProGuard规则文件,优化效果还更强,操作步骤也简单:

1. 通过VS项目属性配置

  • 右键你的Xamarin Android项目,点「属性」
  • 切到「Android Options」里的「Packaging」标签页
  • 在「Code shrinker」下拉框选择**「R8」**
  • 确认「DEX compiler」选项是**「D8」**(默认就是这个,要是被修改过改回来就行)

2. 手动编辑项目文件(.csproj)

要是属性页配置没生效,直接编辑项目文件:

  • 找到文件中的<PropertyGroup>节点,添加或修改以下两行:
    <AndroidLinkTool>r8</AndroidLinkTool>
    <AndroidDexTool>d8</AndroidDexTool>
    

3. 复用原有ProGuard规则

之前的proguard.cfg或者proguard-rules.pro不用重新编写,只要把文件的「生成操作」设置为**「ProGuardConfiguration」**,R8会自动读取并应用这些规则。

若坚持使用ProGuard(不推荐)

由于DX已被废弃且Android 13不兼容旧工具链,硬要使用ProGuard只能采取以下风险极高的操作:

  • 降级Xamarin Android SDK版本到Android 11及以下,且需确保对应版本支持ProGuard+DX组合
  • 但此方法会导致应用无法适配Android 13的新特性,存在严重的稳定性和安全性隐患,不建议采用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:15:17