android - android中的logback和代码混淆

标签 android obfuscation proguard slf4j logback

我正在使用 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/

相关文章:

android - Proguard 吃了我的 Object.wait()

c# - 如何防止重命名所有类,dotfuscator 中的接口(interface)

android - 我如何知道 Proguard 警告我哪些类?

java - "removedialog"同时显示2个对话框时的问题

java - 如何将多种类型的用户重定向到各自的 Activity?

android - 如何从继承的 proguardFiles 中删除 proguard 文件?

android - Proguard 与 Gradle 混淆了 id 的定义

java - 使用 ProGuard 混淆源代码

java - 如何在 Proguard 中混淆依赖 .jar?

android - ListFragment setRetainInstance (true);不起作用