当前位置: 首页 > 知识库问答 >
问题:

dexguard混淆问题

吴建中
2023-03-14

我使用dexGuard来混淆我的应用程序,但当我这样做时,我在运行应用程序时崩溃了。下面是堆栈跟踪。

04-08 17:46:11.786: E/AndroidRuntime(7569): java.lang.RuntimeException: An error occured while executing doInBackground()
04-08 17:46:11.786: E/AndroidRuntime(7569):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.lang.Thread.run(Thread.java:841)
04-08 17:46:11.786: E/AndroidRuntime(7569): Caused by: java.lang.NoSuchFieldError: ˈ
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.lang.Class.getDeclaredAnnotation(Native Method)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.lang.Class.getAnnotation(Class.java:243)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at o.hS.ˊ(:124)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at o.ȑ.ˊ(:113)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at o.ڋ.doInBackground(:42)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-08 17:46:11.786: E/AndroidRuntime(7569):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-08 17:46:11.786: E/AndroidRuntime(7569):     ... 4 more

这是我从ACRA lib初始化方法得到的,因为我们在它里面有getAnnoming方法。我已经使用了-保持属性*注释*-保持类org.acra.ACRA {*;}

但没有任何运气...

有人知道吗?

谢谢,吉姆。

共有1个答案

云英才
2023-03-14

您可能不需要混淆ACRA代码,因为它不是一个秘密库。所以你可以这样做:

# Keep all the ACRA classes
-keep class org.acra.** { *; }

或者如果你非常特别,你可以尝试使用:https://github.com/ACRA/acra/wiki/Proguard配置ACRA,在你的配置文件中包含以下内容:

# keep this class so that logging will show 'ACRA' and not a obfuscated name like 'a'.
# Note: if you are removing log messages elsewhere in this file then this isn't necessary
-keep class org.acra.ACRA {
    *;
}

# keep this around for some enums that ACRA needs
-keep class org.acra.ReportingInteractionMode {
    *;
}

-keepnames class org.acra.sender.HttpSender$** {
    *;
}

-keepnames class org.acra.ReportField {
    *;
}

# keep this otherwise it is removed by ProGuard
-keep public class org.acra.ErrorReporter
{
    public void addCustomData(java.lang.String,java.lang.String);
    public void putCustomData(java.lang.String,java.lang.String);
    public void removeCustomData(java.lang.String);
}

# keep this otherwise it is removed by ProGuard
-keep public class org.acra.ErrorReporter
{
    public void handleSilentException(java.lang.Throwable);
}    
 类似资料:
  • 我们正在使用dexguard,并且在dexguard项目中还具有以下设置。文本 我还尝试了提供res/值/字符串的变体。类似xml的: 和 等 在小路上。但字符串的键值正在变得模糊。 正在返回0。(其中key是字符串值)。 我也试过了 避免字符串OBF指令的正确方法是什么?

  • 在dexguard混淆时,在dexguard发布构建期间抛出引用的类not find错误。 找不到引用的类com.sun.jna.ptr.IntByInformation 请提出解决办法。

  • 当我关闭DexGuard时,我的应用程序可以与Crashlytics完美运行。但是,当我添加以下配置以混淆代码时,应用程序在启动时会出现黑屏。 下面是构建的相关部分。格拉德尔 基本建设。渐变文件: dexguard项目的相关部分。txt文件: Logcat控制台输出: 我在用Crashlytics做什么。getInstance: 我在生成日志中没有看到任何警告或错误。有人知道问题的原因吗? 提前谢

  • 如何避免类名和记录器混淆(DexGuard) DexGuard:避免类名和记录器混淆从Android版本构建Apk 推荐我任何一个。。。

  • 我一直在摆弄Proguard配置,我想测试只是为了优化 但我仍然会遇到这样的错误: java.lang.IllegalArgumentExc0019:找不到[org/apache/log/log4j/core/jackson/Log4jXmlMoules](有1个已知的超级类)和[org/apache/log/log4j/core/jackson/Log4jJsonMoules](有4个已知的超级

  • Powershell的混淆目前已经使用的越来越多,国内外也有了较多的研究,在今年的BH大会上也有对应的议题,关注点是反混淆,那么里面的一些姿势很值得我们学习,我们提供一些混淆实例,来让大家对于PS的混淆做到一个初步了解,也为防御混淆提供一些思路。 实例 在混淆之前,先看看powershell编码执行的方式。 -EC,-EncodedCommand,-EncodedComman,-EncodedCo