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

Release构建下Android应用日志失效问题求助(关联第三方依赖)

Android Release版本日志丢失问题解决办法

问题根因

你引入的amazonpay和simpl SDK自带的ProGuard规则,和默认的proguard-android-optimize.txt优化规则叠加,导致android.util.Log的调用被优化移除或者混淆,所以Release包下日志既无法输出到控制台,也不能写入文件。

具体修改方案

1. 修改ProGuard规则(优先推荐)

在项目的proguard-project.txt里添加以下规则,确保Log相关代码不会被处理掉:

# 保留android.util.Log的所有静态方法,防止被优化删除
-keepclassmembers class android.util.Log {
    public static *** d(...);
    public static *** e(...);
    public static *** i(...);
    public static *** v(...);
    public static *** w(...);
    public static *** wtf(...);
}

# 明确告知ProGuard:Log方法是有实际输出作用的,不能随意移除
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** e(...);
    public static *** i(...);
    public static *** v(...);
    public static *** w(...);
    public static *** wtf(...);
}

说明:默认的proguard-android-optimize.txt中可能存在“Log方法无副作用可移除”的规则,上述配置会直接覆盖该逻辑,强制保留所有Log调用。

2. 若有自定义日志工具类

如果你自己封装了日志工具类(比如com.xxx.utils.MyLogger),也要添加规则保留它的方法:

# 保留自定义日志工具类的所有公开静态方法
-keep class com.xxx.utils.MyLogger {
    public static *** d(...);
    public static *** e(...);
    // 根据你工具类的实际方法补充其他日志级别
}

3. 换用温和的ProGuard优化文件(备选方案)

如果上述规则无效,可以将默认的优化文件从proguard-android-optimize.txt替换为proguard-android.txt——这个文件的优化策略更保守,默认不会删除Log调用。修改build.gradle的Release配置:

buildTypes {
    release {
        minifyEnabled true
        ndk.debugSymbolLevel = 'FULL'
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
    }
}

4. 排查SDK自带的ProGuard规则

部分SDK会在aar包中嵌入自己的ProGuard规则,你可以解压SDK的aar文件,查看里面的proguard.txt或consumer-rules.pro文件。如果发现其中存在删除Log的配置,就在自己的proguard-project.txt中添加以下规则覆盖:

# 禁止对android.util.Log类进行优化
-dontoptimize class android.util.Log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:17:33