Articles of proguard

如何降级android studio gradle中的proguard版本?

我正在尝试使用scala和android studio来构build一个android应用程序。 在proguard编译失败,例外: Error:java.lang.ArrayIndexOutOfBoundsException: 4 at proguard.classfile.editor.InterfaceDeleter.visitSignatureAttribute(InterfaceDeleter.java:162) at proguard.classfile.attribute.SignatureAttribute.accept(SignatureAttribute.java:97) 我在另一个地方( http://sourceforge.net/p/proguard/bugs/549/ )发现这个问题是由scala中的一个bug造成的,但是它只发生在proguard 5.1中,而不是在proguard 5.0中。 现在我的问题是:我怎么能安装android studio,以便它会使用proguard 5.0?

为什么开始排除我自己的应用程序的资源时,这是不需要的?

我最近遇到一个令人困惑的问题 ,没有任何解释,我设法解决 。 解决scheme本身对我来说是个问题,因为我不理解它 :它迫使我直接指导Proguard忽略关于我自己的应用程序包的全部警告。 -dontwarn com.bta.** 除了不得不忽视关于我的开发中最容易出错的代码(最频繁更改的代码)的警告之外,我对以下两个问题感到困惑: 为什么这个需求突然出现? (我以前从来不需要这样做。) 为什么在我开发的其他项目/应用程序中不需要这些? 我相信我介绍的一些新代码或库导致了这种情况(AdMob?),但对此的解释是什么? 为什么第三方图书馆会迫使我closures对自己应用程序资源的警告? closures我自己的应用程序包的警告(像我一样)的副作用是什么?

如何强制Proguard保留我的.xml资源文件?

我成功地为我的Android应用程序使用proguard。 但是,有一个应用程序,我遇到了麻烦。 这个应用程序使用一个存储在包中的.xml文件的java库。 InputStream istream = Library.class.getResourceAsStream("resource.xml"); 当proguard被禁用时,这个库很好用。 但是,运行proguard,似乎xml文件只是完全剥离。 相关的proguard.cfg -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify #-dontobfuscate #-repackageclasses '' //THIS IS DISABLED -keepattributes *Annotation* -keepattributes Signature -verbose -dontwarn roboguice.activity.RoboMapActivity -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 任何想法如何强制保持这个XML文件?

Proguard回溯输出混乱

我在这里有一个来自Android市场的游戏的堆栈跟踪。 我已经去除了它,但我不能真正理解它! 我不是在错误本身寻求帮助,而是如何解释这一点。 我从市场开始: java.lang.IllegalArgumentException at java.nio.Buffer.position(Buffer.java:299) at com.aakoa(Unknown Source) at com.aakwa(Unknown Source) at com.aakwonDrawFrame(Unknown Source) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118) 但是,retrace.bat已经输出了,这是更长的,所以我不能告诉com.aakoa是什么(如exmaple)。 java.lang.IllegalArgumentException at java.nio.Buffer.position(Buffer.java:299) at com.eaw.graphics.WorldViewShader.void glSetMVPMatrix(float[])(Unknown Source) void glSetNormalMatrix(com.eaw.graphics.AMatrix) void SetVertices(java.nio.FloatBuffer) void ApplyArgs(com.eaw.graphics.WorldViewShaderArgs) at com.eaw.graphics.TriangleRenderer.void onDrawFrame(com.eaw.airrace.ILayer,com.eaw.airrace.StepOutput,boolean)(Unknown Source) void loadTexture$332cd44f(int[],int,int) void delayedLoadTexture(int[],int[],int,int) at com.eaw.graphics.TriangleRenderer.void onDrawFrame(javax.microedition.khronos.opengles.GL10)(Unknown Source) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118) 在遮蔽时是否将4个function分为1个? 或者是什么?

崩溃与Proguard启用

我的应用程序运行完美没有proguard启用,但是当我启用它的应用程序崩溃马上。 我已经尝试了许多组合在configuration无济于事。 有什么我应该保持,我失踪了? proguardconfiguration: https : //gist.github.com/hanleyhansen/99fc07807950bae8e4f5 未混淆的日志: https ://gist.github.com/hanleyhansen/6cba7fc941a79d85802f onSuccess(): https : //gist.github.com/hanleyhansen/e7a4916c42d3ca065c99

为什么proguard处理AndroidManifest.xml

我看到一些不明原因的Proguard行为。 AFAIK proguard不注意android清单。 此外,在我的proguard.cfg我没有提及BroadcastReceiver相关的类。 所以我认为这些应该被剥离。 但是我在bin / proguard.txt中看到一些奇怪的东西: # view AndroidManifest.xml #generated:784 -keep class com.fiksu.asotracking.InstallTracking { <init>(…); } 而那个类(BroadcastReceiver的下属)并没有被剥离。 理性对我没有任何意义: [proguard] com.fiksu.asotracking.InstallTracking [proguard] is kept by a directive in the configuration. 如果class级没有在清单中提到,就会被剥离。 很高兴知道为什么。

在PROGUARD中添加库项目中添加的jar文件path

我已经开始在我的项目中使用proguard了。 但几乎没有警告。 我可以通过添加-dontwarn com.google.**来消除警告。 在proguard.cfg文件中。 每件事情都可以,但是我想完全从我的项目中删除-dontwarn命令。 经过一番调查,我发现这些警告是因为我在我的图书馆项目中添加了一个jar。 现在我在这里有几个问题。 1)我需要添加任何东西在我的项目属性为progurad工作我的图书馆项目。 也不会添加任何警告(根据我的研究,我不需要我猜。请参阅此url ) 2)由于我的库项目中添加了guava.jar ,因此需要在我的应用程序proguard.cfg文件中添加一些命令来添加库path,如-libraryjars 。 如果是的话,我该如何添加-libraryjars。 在这个例子中,我正在谈论path。 我应该包括什么path,或者是在我的库项目中添加jar的path的语法是什么? 仅供参考,我正在添加错误日志。 [2014-12-11 18:00:26 – MyProject] Proguard returned with error code 1. See console [2014-12-11 18:00:26 – MyProject] Warning: com.google.common.base.Equivalence: can't find referenced class javax.annotation.Nullable [2014-12-11 18:00:26 – MyProject] Warning: com.google.common.base.Equivalence: can't find referenced class javax.annotation.Nullable [2014-12-11 18:00:26 – […]

告诉Proguard在方法上保留注释

我使用我自己的注释: @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD, ElementType.TYPE}) public @interface Loggable { } 并使用Proguard进行混淆。 我在Proguardconfiguration中使用-keepattributes *Annotation*来保留注释。 在运行时,当我使用someClass.getAnnotation(Loggable.class)从注释类中检索注解时,所有东西都可以使用 – 我检索了注释的非空实例。 但是,当我想要应用相同的一些类的注释方法 ,我从someMethod.getAnnotation(Loggable.class)检索null。 Proguard是从方法中删除注释吗? 我怎么告诉它不这样做? 我正在使用Proguard 4.7。

proguard-android.txt和proguard-rules.pro有什么区别? – Android

在我的buildType我看到这样的: buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 我有一些问题: 为什么有两个文件? 他们有什么区别? 我应该在哪里写规则? 谢谢

如何从proguard版本中排除R * .class文件

我离这里描述的方法只有一步之遥: 用Scala 2.8 Trunk构buildAndroid 与一个单一的项目(一个项目为斯卡拉和一个为Android)。 我遇到了一个问题。 使用这个input文件(参数)proguard: -injars bin;lib/scala-library.jar(!META-INF/MANIFEST.MF,!library.properties) -outjar lib/scandroid.jar -libraryjars lib/android.jar -dontwarn -dontoptimize -dontobfuscate -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,*Annotation*,EnclosingMethod -keep public class org.scala.jeb.** { public protected *; } -keep public class org.xml.sax.EntityResolver { public protected *; } Proguard成功构build了scandroid.jar,但它似乎包含了由android资源构build器生成和编译的生成的R类。 在这种情况下,它们位于bin / org / jeb / R * .class。 这不是我想要的。 Android的dalvik转换器不能build立,因为它认为有重复的R类(这是在scandroid和R * .class文件)。 我怎样才能修改上述proguard参数从scandroid.jar排除R * […]