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

构建APK时触发Proguard匿名内部类警告,寻求解决方案

Fixing ProGuard "Ignoring InnerClasses attribute" Warning for Freemarker

我之前也碰到过完全一样的问题,这个警告的核心原因是Freemarker的部分类由旧版Java编译器生成,没有包含ProGuard要求的EnclosingMethod属性,所以在混淆阶段会触发这个提示。下面是我亲测有效的解决方案:

1. 更新你的ProGuard规则

打开proguard-rules.pro文件,添加针对Freemarker的专属规则,同时补充缺失的属性保留配置:

# 解决Freemarker内部类相关警告
-keep class freemarker.** { *; }
-dontwarn freemarker.**
-keepattributes EnclosingMethod, InnerClasses

这里的规则作用分别是:

  • -keep class freemarker.** { *; }:保留所有Freemarker类及其成员,避免混淆或移除导致的结构破坏
  • -dontwarn freemarker.**:直接禁止ProGuard输出所有关于Freemarker的警告,包括这个InnerClasses的问题
  • -keepattributes EnclosingMethod, InnerClasses:明确保留这两个类属性,补上你现有配置里缺失的EnclosingMethod,从根源解决警告触发条件

2. 清理并重新构建项目

添加完规则后,一定要执行清理和重建操作,确保ProGuard规则生效:

  • 在Android Studio里点击Build > Clean Project,然后Build > Rebuild Project
  • 或者用Gradle命令行:
    # Mac/Linux
    ./gradlew clean assembleRelease
    
    # Windows
    gradlew clean assembleRelease
    

额外说明

这个警告本身一般不会导致APK构建失败,但如果追求无警告的干净构建,上面的方法完全可以解决。另外你可以检查一下项目依赖,Freemarker大概率是通过某个第三方依赖(比如你用的com.applozic.communication.uiwidget:audiovideo:1.2)间接引入的,不需要额外手动添加依赖,只需要处理ProGuard规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:25:47