jjzjj

proguarded

全部标签

java - 如何告诉 Proguard 避免混淆 JNA 库类?

换句话说:我应该使用什么-keep命令来告诉Proguard避免混淆代表native库的类?(因为JNA要求名称匹配等效的native函数、结构等) 最佳答案 这是我现在使用的规则:-keepclassmembersclass*extendscom.sun.jna.**{;;}不过,我仍然认为可能有更好的方法。 关于java-如何告诉Proguard避免混淆JNA库类?,我们在StackOverflow上找到一个类似的问题: https://stackover

java - ProGuard:保留用@Keep 注释的接口(interface)的实现

我想用自定义的@Keep注解来注解我的应用程序中的一些接口(interface),并配置ProGuard以便不混淆带注释的接口(interface)及其方法,在实现类时不混淆那些接口(interface)方法的实现。我试过类似的东西#Keptinterfacesandalltheirmethods-keepinterface@com.foo.bar.annotation.Keep*{;}#Classesimplementingkeptinterfaces-keepclass*implements@com.foo.bar.annotation.Keep*但显然语法是无效的。我尝试了其他方

java - Proguard 说它找不到任何类

我将混淆器与springmvc应用程序和maven一起使用。我的pom.xml的构建部分如下所示:myappcom.pyx4meproguard-maven-pluginpackageproguardtrue-->-keeppublicclass-->-->${project.build.finalName}${project.build.finalName}com.myapp.*我也试过:${project.build.finalName}.war当我运行时:mvncleaninstall构建失败信息:[proguard]Readingprogramwar[/Users/me/dev

java - 为什么proguard不混淆方法主体?

我正在使用ProGuard混淆我的.jar程序。一切正常,除了ProGuard不会混淆方法主体中的局部变量。这是一个例子:原始:混淆:以黄色突出显示的变量名称应该被混淆,但不是。我如何也对它们进行混淆(将它们重命名为a,b,c等?)这是我的ProGuard配置:http://pastebin.com/sb3DMRcC(以上方法不是来自排除的类之一)。 最佳答案 Whyproguarddoesnotobfuscatemethodbody?因为它不能。方法参数和局部变量的名称在编译时根本不会存储。您看到的名称是由反编译器生成的。对于已编

java - ProGuard 是否支持 Java 11?

我尝试使用Proguard(6.1.0beta1)但得到了(Unsupportedversionnumber[55.0](maximum54.0,Java10)))是否有可以使用Java11管理的ProGuard替代品? 最佳答案 作为KarolDowbecki'sanswer的后续行动:ProGuard6.1.0beta2(或更新版本)支持Java10、11和12。参见#188SupportJava11请注意,由于引入了模块系统,您需要为Java9或更新版本更改libaryjars。这是我的GradleKotlinbuildscr

java - 使用 ProGuard 混淆时暴露内部类

我正在使用Ant任务使用ProGuard混淆一个库。当它们具有特定的注释(@ApiAll)时,我将保留特定的类名称及其方法名称,并且我要求保留InnerClasses属性:如果我检查映射输出文件,我可以看到我的内部类有注释,它的成员保持他们的名字未被混淆。但是,当我查看生成的jar文件时,我找不到该类。我错过了什么吗?为什么映射告诉我它保留了这个类,而实际上却没有? 最佳答案 您需要使用正确的表示法指定要保留内部类。用混淆器的说法,这意味着-keepclassmy.outer.Class$MyInnerClass。这里的关键是使用美

java - ProGuard 保留类名但更改包名

想改变包名但需要保持类名不变。有什么想法吗? 最佳答案 ProGuard没有用于重命名包但保留其简单类名的标准选项。您可以手动创建ProGuard映射文件,行如下:com.example.MyClass->a.MyClass:com.example.MyOtherClass->a.MyOtherClass:然后您可以使用选项-applymappingmapping.txt 关于java-ProGuard保留类名但更改包名,我们在StackOverflow上找到一个类似的问题:

java - Proguard 删除抽象类中未使用的重写方法

Proguard正在删除抽象类中未使用的覆盖方法,即使它们在父类中使用也是如此。这是显示行为的引用实现publicabstractclassAnimal{Animal(){born();}abstractvoidborn();}publicabstractclassHumanextendsAnimal{@Overridevoidborn(){System.out.println("Humanisborn.");}}keep属性定义为:-keeppublicclasstest.Human{public*;}Proguard将Human类中重写的born()方法移除为未使用,即使它是从An

java - ProGuard 警告 : there were 7 unresolved references to program class members

ProGuard停止并出现大量警告:Warning:therewere1221unresolvedreferencestoclassesorinterfaces.Youmayneedtoaddmissinglibraryjarsorupdatetheirversions.Ifyourcodeworksfinewithoutthemissingclasses,youcansuppressthewarningswith'-dontwarn'options.(http://proguard.sourceforge.net/manual/troubleshooting.html#unresol

java - Proguard 混淆导致 java.lang.IllegalArgumentException : class declares multiple JSON fields named "a"

启动我的应用程序时记录了两个错误,但仅在混淆之后。没有混淆就没有错误。除非我被误导,否则错误如下:classPropertydeclaresmultipleJSONfieldsnameda类PropertyDefinition也是如此。05/1803:33:19.465java.lang.IllegalArgumentException:classPropertyDefinitiondeclaresmultipleJSONfieldsnameda:com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFie