Android用iText给PDF加密时找不到AESFastEngine类报错如何解决?
Android平台iText加密PDF崩溃问题解决方案
报错原因
iText的PDF加密功能依赖SpongyCastle(Android平台适配的BouncyCastle加密分支)库,当前项目未引入该依赖,导致运行时加载AES加密相关类失败。
修复步骤
第一步:引入适配的依赖
首先确认你使用的是Android专属的iText版本,不要直接用Java平台的普通iText包,在模块级build.gradle的dependencies块中添加以下依赖:// Android专用iText库 implementation 'com.itextpdf:itextg:5.5.10' // 加密依赖SpongyCastle implementation 'com.madgag.spongycastle:core:1.58.0.0' implementation 'com.madgag.spongycastle:prov:1.58.0.0'注:如果你使用的是其他版本的iText 5.x,保持SpongyCastle版本为1.58.x即可保证兼容性
第二步:排除冲突依赖(可选)
如果项目中其他依赖引入了原生BouncyCastle包,会和SpongyCastle产生冲突,需要在iText依赖中排除冲突项,修改iText依赖配置如下:implementation ('com.itextpdf:itextg:5.5.10') { exclude group: 'org.bouncycastle' }第三步:Multidex配置(可选)
如果依赖引入完成后仍报类找不到错误,检查是否因方法数超过65535导致未正确加载类,开启Multidex即可解决:- 在
build.gradle的defaultConfig块中开启Multidex
defaultConfig { ... multiDexEnabled true }- 若你的项目minSdkVersion低于21,额外引入Multidex依赖:
implementation 'androidx.multidex:multidex:2.0.1'同时在自定义Application类的attachBaseContext方法中初始化Multidex。
- 在
完成以上配置后重新编译运行,加密逻辑即可正常执行,不会再出现类缺失崩溃问题。
内容的提问来源于stack exchange,提问作者Syed Irfan Hussaini
相关产品推荐
相关产品推荐

