换句话说:我应该使用什么-keep命令来告诉Proguard避免混淆代表native库的类?(因为JNA要求名称匹配等效的native函数、结构等) 最佳答案 这是我现在使用的规则:-keepclassmembersclass*extendscom.sun.jna.**{;;}不过,我仍然认为可能有更好的方法。 关于java-如何告诉Proguard避免混淆JNA库类?,我们在StackOverflow上找到一个类似的问题: https://stackover
我想用自定义的@Keep注解来注解我的应用程序中的一些接口(interface),并配置ProGuard以便不混淆带注释的接口(interface)及其方法,在实现类时不混淆那些接口(interface)方法的实现。我试过类似的东西#Keptinterfacesandalltheirmethods-keepinterface@com.foo.bar.annotation.Keep*{;}#Classesimplementingkeptinterfaces-keepclass*implements@com.foo.bar.annotation.Keep*但显然语法是无效的。我尝试了其他方
我将混淆器与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
我正在使用ProGuard混淆我的.jar程序。一切正常,除了ProGuard不会混淆方法主体中的局部变量。这是一个例子:原始:混淆:以黄色突出显示的变量名称应该被混淆,但不是。我如何也对它们进行混淆(将它们重命名为a,b,c等?)这是我的ProGuard配置:http://pastebin.com/sb3DMRcC(以上方法不是来自排除的类之一)。 最佳答案 Whyproguarddoesnotobfuscatemethodbody?因为它不能。方法参数和局部变量的名称在编译时根本不会存储。您看到的名称是由反编译器生成的。对于已编
我尝试使用Proguard(6.1.0beta1)但得到了(Unsupportedversionnumber[55.0](maximum54.0,Java10)))是否有可以使用Java11管理的ProGuard替代品? 最佳答案 作为KarolDowbecki'sanswer的后续行动:ProGuard6.1.0beta2(或更新版本)支持Java10、11和12。参见#188SupportJava11请注意,由于引入了模块系统,您需要为Java9或更新版本更改libaryjars。这是我的GradleKotlinbuildscr
我正在使用Ant任务使用ProGuard混淆一个库。当它们具有特定的注释(@ApiAll)时,我将保留特定的类名称及其方法名称,并且我要求保留InnerClasses属性:如果我检查映射输出文件,我可以看到我的内部类有注释,它的成员保持他们的名字未被混淆。但是,当我查看生成的jar文件时,我找不到该类。我错过了什么吗?为什么映射告诉我它保留了这个类,而实际上却没有? 最佳答案 您需要使用正确的表示法指定要保留内部类。用混淆器的说法,这意味着-keepclassmy.outer.Class$MyInnerClass。这里的关键是使用美
想改变包名但需要保持类名不变。有什么想法吗? 最佳答案 ProGuard没有用于重命名包但保留其简单类名的标准选项。您可以手动创建ProGuard映射文件,行如下:com.example.MyClass->a.MyClass:com.example.MyOtherClass->a.MyOtherClass:然后您可以使用选项-applymappingmapping.txt 关于java-ProGuard保留类名但更改包名,我们在StackOverflow上找到一个类似的问题:
Proguard正在删除抽象类中未使用的覆盖方法,即使它们在父类中使用也是如此。这是显示行为的引用实现publicabstractclassAnimal{Animal(){born();}abstractvoidborn();}publicabstractclassHumanextendsAnimal{@Overridevoidborn(){System.out.println("Humanisborn.");}}keep属性定义为:-keeppublicclasstest.Human{public*;}Proguard将Human类中重写的born()方法移除为未使用,即使它是从An
ProGuard停止并出现大量警告:Warning:therewere1221unresolvedreferencestoclassesorinterfaces.Youmayneedtoaddmissinglibraryjarsorupdatetheirversions.Ifyourcodeworksfinewithoutthemissingclasses,youcansuppressthewarningswith'-dontwarn'options.(http://proguard.sourceforge.net/manual/troubleshooting.html#unresol
启动我的应用程序时记录了两个错误,但仅在混淆之后。没有混淆就没有错误。除非我被误导,否则错误如下:classPropertydeclaresmultipleJSONfieldsnameda类PropertyDefinition也是如此。05/1803:33:19.465java.lang.IllegalArgumentException:classPropertyDefinitiondeclaresmultipleJSONfieldsnameda:com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFie