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

Flutter项目APK用ProGuard移除日志未彻底解决AppSweep检测问题

解决Flutter APK上传AppSweep后仍存在日志输出的问题

我用Flutter项目生成了Android APK,上传到AppSweep后被检测到「应用存在日志输出」的问题。我已经在ProGuard中添加了如下配置,虽然问题检出数量有所减少,但没能彻底解决。

-assumenosideeffects class android.util.Log {
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

从AppSweep的检测结果来看,剩余的日志输出多来自Flutter底层组件(如flutter/lib/ui/ui_dart_state.cc)或第三方依赖的日志调用。以下是几个可行的解决方向:

1. 补充ProGuard规则覆盖更多日志方法

除了常规的v/i/w/d/e方法,Android的Log类还有println()等其他日志输出方法,补充规则可以覆盖这些遗漏:

-assumenosideeffects class android.util.Log {
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
    public static int println(int, java.lang.String, java.lang.String);
}

2. 确保ProGuard在release构建中生效

检查android/app/build.gradle中的release配置,确认已启用混淆和资源压缩:

android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

3. 添加Flutter专属混淆规则

Flutter框架自身的日志可能未被默认规则处理,在proguard-rules.pro中添加以下规则:

# Flutter核心组件混淆规则
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-dontwarn io.flutter.**

# 移除Flutter底层日志
-assumenosideeffects class dart::developer::Log {
    public static void log(...);
}

4. 处理第三方依赖的日志

如果项目引入了第三方SDK,它们可能自带日志输出。查看依赖的官方文档,添加对应的ProGuard规则来移除其日志,例如某些SDK会使用自定义日志类,需要针对性添加-assumenosideeffects规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:12:50