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

出现java.util.Base64类未找到报错,后端代码无法替换为android.util.Base64如何解决

报错根因

java.util.Base64 是JDK 8新增的API,Android系统仅在 API 26(Android 8.0)及以上版本 提供该类的原生支持。如果你的App最小兼容版本(minSdk)低于26,运行在低版本Android设备上就会触发类找不到的异常。

可行解决方案(无需修改后端通用业务代码)
  • 方案1:调整App最低兼容版本
    若业务允许仅覆盖Android 8.0及以上用户,直接修改模块build.gradle文件中的minSdk参数为26即可,无需修改任何业务代码,系统原生支持java.util.Base64调用。
  • 方案2:新增同名兼容类覆盖系统实现
    在你的Android项目源码中新建java.util包,将OpenJDK中Base64类的完整实现复制到该包下。App运行时会优先加载项目内的类,自动覆盖系统缺失的实现,原有业务代码的导入、调用逻辑完全不需要修改。
  • 方案3:编译期字节码替换
    接入ASM、Byte Buddy或Gradle Transform API,在编译打包阶段全局把所有对java.util.Base64的调用替换为android.util.Base64的对应实现,上层业务无感知。
    其中Base64.getEncoder().encodeToString(macData)的等价Android实现为Base64.encodeToString(macData, Base64.NO_WRAP),替换时注意参数匹配即可。
  • 方案4:引入第三方Base64依赖做全局适配
    引入commons-codec等第三方成熟Base64实现库,调整依赖优先级让后端业务模块优先加载第三方库的Base64实现,不需要修改原有调用逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:36:09