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

gson模糊处理程序错误

浦德明
2023-03-14

所以我在这里和其他地方读到了成千上万的帖子,但对我来说仍然不起作用。其错误可能是找不到引用的类sun。杂项。不安全,或者如果我在上面使用dontwarn,它会编译,但gson部分会在某个时候返回ClassCastExecOption。

现在-我知道序列化的类在proGuard设置中被标记为-保持,我知道-保持属性注释和签名,但是我仍然不能正确地混淆我的代码。

附加我的proguard项目。txt

-optimizationpasses 2
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic 

-allowaccessmodification
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-repackageclasses ''

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider

-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}

-keepattributes Signature

-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class my.package.model.** { *; }

-keep class com.google.gson.** { *; }

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keepclassmembers class **.R$* {
    public static <fields>;
}

-keep class net.sqlcipher.** {
    *;
}

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

编辑1我还检查了这个gson示例proguard设置

共有1个答案

陆昂然
2023-03-14

显然,keepattributes异常、内部类、签名、弃用、源文件、LineNumberTable、注释、封闭方法等都有所帮助。我不知道为什么,而且我也没有从输出中删除日志,它只是变成了StringBuffer lol。

编辑1虽然我已经在蚂蚁build.xml脚本中添加了一个目标,如果有人需要,它会像这样运行

<target name="-commentoutlogs">
    <replaceregexp match="(Log\..*?;\s*\n)" replace="/*\1*/" flags="gs" byline="false">
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </replaceregexp>
</target>

并取消评论:

    <target name="-uncommentlogsafter">
    <replaceregexp match="\/\*(Log\..*?;\s*\n)\*\/" replace="\1" flags="gs" byline="false">
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </replaceregexp>
</target>

所以你可以把它添加到喜欢的发布目标中,这样它就可以为你修复这些东西,日志也可以被精确地注释到

/*Log.<blablabla> );
*/
 类似资料:
  • Android Studio有什么混淆工具可以使用吗?IntelliGuard插件被声明为工作室支持,但由于缺少AntSupport插件,它实际上并不工作。我无法在存储库中找到一个。有什么想法吗? 附注。Android Studio构建过程是基于Gradle的,所以我根本不希望看到Ant支持。也许是我错了。

  • 我知道如何混淆可执行的jar文件,因为它有一个主类。但是我正在尝试创建我的API(已经完成了),我只需要混淆代码。问题是,每当我尝试使用Proguard(一个众所周知的java模糊器)模糊jar文件时,它就会给我一个与“keep”有关的错误。我正在从Proguard运行proguard-gui,在Eclipse中,我将项目导出为一个普通的jar文件(非可执行文件),并试图混淆该jar文件。另外,我

  • 一些背景信息:这个项目是一个简单的图像,在项目结束时,它将成为我电脑屏幕的背景。 我想模糊背景的一部分,这样文本的一部分就更清晰了。我可以模糊图像中文本本身的部分,但这是我最后的选择。我不想这样做,因为在未来的项目中,我想随着一些东西的移动而主动模糊背景(我还没有开始这个未来的项目,所以我无法更好地描述这个项目)。 有人知道如何模糊背景的一部分吗?对于这个项目,它需要大约400x200像素,模糊1

  • 问题内容: 反正有一起禁用laravel错误处理程序吗? 我想简单的显示 标准的PHP错误 , 没有 了错误。 问题答案: 并非没有主要违反框架原理的问题(如果您仍然感兴趣,我将在下面告诉您如何做)。 有一些事情使这很难完成。取消默认错误和异常处理程序很容易 但这给您带来两个主要障碍。 第一个是Laravel在其引导过程中注册了一个关闭处理程序,该关闭功能将查找最后一个错误,如果是致命错误,请手动

  • 我正在尝试使用附带的工具调试模糊代码中的异常。模糊标识符使用非ASCII字符,至少在生成的映射文件中是这样的,例如: 当我试图从设备导出堆栈跟踪以便将其馈送到时,这会造成问题。我的模糊设置是否有问题,或者使用非ASCII字符是否正常?如果是这样,我应该如何从设备导出堆栈跟踪以保留它们? 编辑:我后来发现了一种解决办法,它是以的形式输出二进制日志。这会导致日志文件有点难以读取,但堆栈跟踪中确实包含正

  • 我正在使用Laravel 5.5,并试图实现用户和管理员的多重身份验证。我得到这个错误时,我试图调用管理员登录表单在浏览器。 错误: 声明应用\Exceptions\Handler::未经身份验证($请求,应用\Exceptions\身份验证异常$异常)应与Illumate\Foundation\Exceptions\Handler兼容::未经身份验证($请求,Illumate\Auth\身份验证