我正在使用 Logback 库登录我的 Android 应用程序,它运行良好。 但是,当我导出应用程序并使用 Proguard 混淆代码时,它无法正常工作(我使用的是 FileAppder,但未创建文件)。
这是我的配置文件:
<configuration>
<appender
name="userClicksAppender"
class="ch.qos.logback.core.FileAppender" >
<file>
/sdcard/Test/data/log.txt
</file>
<append>
true
</append>
<encoder class="com.android.gooapplication.model.MyEncoder" >
<pattern>
%-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="userClicksLogger" >
<appender-ref ref="userClicksAppender" />
</logger>
</configuration>
我尝试跳过 MyEncoder 类和 proguard 配置文件中的整个 logback 包,如下所示:
-keep public class com.android.gooapplication.model.MyEncoder
-keep public class ch.qos.logback.**
-keep public public class org.slf4j.**
但仍然没有成功。
你怎么看? 非常感谢
最佳答案
这是我的解决方案并且有效
这是 proguard 配置文件 (proguard.cfg) 的一部分:
# ...
-keep public class org.slf4j.** { *; }
-keep public class ch.** { *; }
# ...
这是 logback 配置文件 (assets/logback.xml)
将 pack.of.your.application 更改为您自己的包名称:
<configuration>
<appender name="file" class="ch.qos.logback.core.FileAppender">
<file>/data/data/pack.of.your.application/files/log.txt</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="ALL">
<appender-ref ref="file" />
</root>
</configuration>
这是 Maven 依赖项:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.7</version>
</dependency>
关于android - android中的logback和代码混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15085046/