Articles of proguard

android:onClick不使用ProGuard

从今天开始,我的应用程序发生了一些奇怪的事情。 每次我点击设置了android:onClick属性的按钮,我都会收到IllegalStateException:找不到方法… 我注意到只有当我在文件中启用Proguard时才会发生:default.properties 这是我的proguard.cfg: -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -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.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep […]

带有@Inject注释的ProGuard和RoboGuice问题

我在优化我的Android应用程序时遇到了一些proguard问题。 似乎对注释类(@ com.google.inject.Inject)做了一些事情,Dalvik / Harmony在运行时不满意。 java.lang.annotation.IncompleteAnnotationException:注释com.google.inject.Inject的元素可选元素不完整 com.google.inject.Inject看起来像这样(Guice的一部分): @Target(value={ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD}) @Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) @Documented public abstract @interface com.google.inject.Inject extends Annotation { public abstract boolean optional() default false; } 这是发布失败: 04-07 09:48:00.864: ERROR/AndroidRuntime(9384): FATAL EXCEPTION: main 04-07 09:48:00.864: ERROR/AndroidRuntime(9384): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bitgrind.wtb/com.bitgrind.wtb.activity.Main}: com.google.inject.bq: com.google.inject.bq: java.lang.annotation.IncompleteAnnotationException: The element optional is not complete for the annotation com.google.inject.Inject […]

如何自动生成proguard-android.txt?

阅读Android的新ProGuard改进所做的所有精彩事情,我通过在新创建的项目中取消注释以下行来切换到新方案: proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt;proguard-project.txt 但是当我尝试导出这个项目的APK时,我会收到以下消息: 无效的proguard配置文件路径C:\ android-sdk-windows \ tools \ proguard \ proguard-android.txt不存在或不是常规文件 好吧,我检查了目录C:\android-sdk-windows\tools\proguard ,果然,虽然这个目录存在并且有子目录甚至自述文件,但是找不到proguard-android.txt 。 顺便说一句,我尝试过:而不是; 但这似乎没有任何改变。 是不是Eclipse + ADT + Proguard应该为我自动生成这个文件? 我错过了什么? 另外,我在哪里可以findAndroid proguard-android.txt的“标准” 默认规则集,以便我可以将其复制到其缺失的插槽中?

如何使用Proguard生成的mapping.txt对jar文件进行反混淆处理?

这可能听起来很可疑,但我需要对我自己的应用进行反混淆处理 。 前段时间我发布了我的应用程序,我与Proguard混淆了。 不幸的是,我没有保存该应用程序的版本并且更改了代码。 现在我需要旧版本的代码。 我仍然有 Proguard生成的mapping.txt文件。 我已将classes.dex文件转换为jar(使用dex2jar工具),现在我需要根据mapping.txt对其进行反混淆处理。 有什么工具可以帮助我吗? 也许是Proguard本身? UPD。 我需要一个可以自动重命名所有类,函数等的工具,所以我不必手动完成。 谢谢

NineOldAndroids ObjectAnimators不能与ProGuard和签名apk一起使用

我正在使用NineOldAndroids的ObjectAnimators来淡化Android Map v2标记,其代码如下: mMarkerSelected = mMap.addMarker(new MarkerOptions() .position(location.getLatLng()) .title(location.getName()) .snippet(location.getId()) .icon(BitmapDescriptorFactory.defaultMarker(location.getMarkerHue()))); mMarkerSelected.setAlpha(0.0f); ObjectAnimator.ofFloat(mMarkerSelected, “alpha”, 0.0f, 1.f) .setDuration(300).start(); 这与apk的可调试版本完美配合。 但是,当我签署我的apk并使用ProGuard时,突然标记不会淡入。我的猜测是alpha属性已被混淆,因此将”alpha”传递给ObjectAnimator.ofFloat与混淆的alpha属性不匹配Marker 。 使用ProGuard时如何让animation工作? 为了完整起见,这是我的proguard-rules.txt的唯一内容 -dontwarn com.squareup.okhttp.**

使用proguard for Android删除未使用的类

历史/上下文我有一个项目[1],其中大小真的很重要 – 最近我把东西移到共享库[2],并认为proguard将小心并删除未使用的类,因为我有一个配置,大大减小了大小,但通过使用lib我来到了神奇的100kb标记所以我调查了:我没有使用的类肯定是​​在生成的dex文件中 – 甚至是全名(不缩写为单字符) – 例如我在中看到了SquareView我没有在App中使用的dex。 问题令人惊讶的是,我在proguard文档中发现了以下内容: The library jars themselves always remain unchanged. 我可以以某种方式告诉/欺骗proguard(in)来处理它们吗? 我觉得这很奇怪,特别是因为我希望在lib中可以删除比在App本身中更多的东西。 [1] https://github.com/ligi/FAST [2] https://github.com/ligi/AndroidHelper

Android BadParcelableException仅与签名的apk

当我从调试运行我的项目时,一切正常。 但是,当我使用从Android Studio(使用proguard)生成的签名apk运行它时,使用getParcelable时出现以下错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{mypackage.android/mypackage.mobile.android.activities.searchActivity}: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class mypackage.android.ada 为什么只有我签名的apk才会发生此exception? 在我的proguard配置文件中,我确实必须使用dontwarn android.support.v4.**来避免proguard错误。 是回来咬我吗?

设置Proguard和导出APK时出错

我正在我的Android项目和导出我的APK文件上做第一次proguard设置,但我得到以下错误:(我也没有在我的项目根目录中find任何proguard.cfg文件) [2013-08-01 10:54:42 – SalesmanTracker] Note: there were 2 duplicate class definitions. [2013-08-01 10:54:42 – SalesmanTracker] Warning: com.google.common.collect.MinMaxPriorityQueue: can’t find referenced field ‘int UNSET_EXPECTED_SIZE’ in class com.google.common.collect.MinMaxPriorityQueue$Builder [2013-08-01 10:54:42 – SalesmanTracker] Warning: com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator: can’t find referenced class sun.misc.Unsafe [2013-08-01 10:54:42 – SalesmanTracker] Warning: com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator: can’t find referenced class sun.misc.Unsafe [2013-08-01 10:54:42 – SalesmanTracker] Warning: com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator: […]

Proguard:找不到引用的类

有几个问题,但没有解决方案适合我。 我认为这很容易使用。 我只是得到一个完整的控制台can’t find referenced class 这是我的proguard-project.txt -injars bin/classes -injars libs -outjars bin/classes-processed.jar -libraryjars C:/Users/ME/android-sdks/platforms/android-10/android.jar -dontpreverify -repackageclasses ” -allowaccessmodification -optimizations !code/simplification/arithmetic -keepattributes *Annotation* -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 […]

如何在我的应用程序中使用-assumenosideeffects类android.util.Log

我在我的应用程序中写了-assumenosideeffects class android.util.Log 。 但是如何使用这个。 -assumenosideeffects class android.util.Log { public static int d(…); public static int v(…); public static int i(…); public static int e(…); } 在proguard.cfg文件中。 但没有工作。