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

升级.NET 8 MAUI至8.0.82后Android端启动报Javax.Crypto.AEADBadTagException

修复.NET 8 MAUI 8.0.82 Android设备上的Javax.Crypto.AEADBadTagException异常

这个异常源于MAUI Essentials的SecureStorage组件升级后,加密机制变更导致旧的加密存储数据无法解密。以下是几种可行的修复方案:

方案1:彻底清除旧应用数据(快速解决)

  • 卸载设备上的目标应用
  • 进入设备应用管理,找到已卸载应用的残留记录(部分设备会保留缓存数据),手动清除其缓存和数据
  • 重启设备后重新部署应用

方案2:代码层面自动处理异常

在访问SecureStorage的代码中添加异常捕获,触发解密失败时自动清除旧存储数据,再重新初始化:

try
{
    var storedValue = await SecureStorage.GetAsync("your_key");
}
catch (Javax.Crypto.AEADBadTagException)
{
    // 清除所有旧的SecureStorage数据
    SecureStorage.RemoveAll();
    // 重新尝试操作
    var storedValue = await SecureStorage.GetAsync("your_key");
}

这种方式无需用户手动卸载应用,首次启动时即可自动修复问题。

方案3:正确配置备份排除规则(预防后续问题)

若需保留自动备份功能,确保在auto_backup_rules.xml中排除SecureStorage的存储文件,避免备份旧的加密数据:

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
    <!-- 排除SecureStorage对应的共享偏好文件 -->
    <exclude domain="sharedpref" path="maui_security_storage.xml"/>
</full-backup-content>

同时在AndroidManifest.xml中配置备份规则引用:

<application ...
    android:fullBackupContent="@xml/auto_backup_rules">

方案4:数据迁移(需保留旧数据时)

如果需要保留原有SecureStorage数据,需在升级前做过渡处理:

  1. 在旧版本MAUI应用中,读取所有SecureStorage数据并临时存储到非加密位置(比如SharedPreferences或本地文件)
  2. 升级应用到8.0.82版本后,将临时存储的数据重新写入新的SecureStorage
  3. 删除临时存储的数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:33:21