Articles of proguard

ProGuard中-keep和-keepclassmembers有什么区别?

我通过http://proguard.sourceforge.net/index.html#manual/usage.html阅读,但无法得到他们的分歧。 我测试了2个不同的选项并反编译结果。 两者似乎产生相同的结果。 -keep class * implements android.os.Parcelable { *; } -keepclassmembers class * implements android.os.Parcelable { *; }

Android应用程序在proguard之后崩溃

应用程序在proguard之后崩溃(由eclipse IDE生成的proguard)。 logcat stacktrace W/SupportMenuInflater(13657): Cannot instantiate class: android.support.v7.widget.ShareActionProvider W/SupportMenuInflater(13657): java.lang.ClassNotFoundException: android.support.v7.widget.ShareActionProvider W/SupportMenuInflater(13657): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) E/AndroidRuntime(13657): FATAL EXCEPTION: main E/AndroidRuntime(13657): java.lang.NullPointerException E/AndroidRuntime(13657): at com.mypack.app.MainActivity.onCreateOptionsMenu(Unknown Source) E/AndroidRuntime(13657): at android.app.Activity.onCreatePanelMenu(Activity.java:2571)` proguard.cfg文件的默认版本 # This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose # Optimization is turned off by default. Dex does not like code run […]

dagger android支持proguard规则

我正在使用带有Proguard的 Dagger2 android-support库但由于这个错误我无法编译我的项目: Warning:dagger.android.AndroidInjector: can’t find referenced class com.google.errorprone.annotations.DoNotMock Warning:dagger.android.AndroidInjector$Builder: can’t find referenced class com.google.errorprone.annotations.DoNotMock Warning:dagger.android.AndroidInjector$Factory: can’t find referenced class com.google.errorprone.annotations.DoNotMock Warning:dagger.android.DaggerApplication: can’t find referenced class com.google.errorprone.annotations.ForOverride Warning:dagger.android.DispatchingAndroidInjector: can’t find referenced class com.google.errorprone.annotations.CanIgnoreReturnValue Warning:there were 5 unresolved references to classes or interfaces. 我正在使用的Dagger版本是2.11 。 问题是我应该为Dagger2 android-support库使用Proguard规则?

Proguard不再适用于Retrofit

我发现较旧的问题涉及同一主题,但最新版本没有可用的答案对我有用。 我在我的项目中使用Retrofit。 当我尝试组装时,我收到以下错误: 警告:retrofit.client.OkClient:找不到引用的类com.squareup.okhttp.OkHttpClient 我正在使用以下内容,但它没有任何帮助: -keepattributes Signature -keep class retrofit.** { *; } -keep class retrofit.http.** { *; } -keep class retrofit.client.** { *; } -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } -keep class com.google.gson.** { *; } -keep class com.google.inject.* { *; } -keep class org.apache.http.* { *; } […]

如何对使用ProGuard进行模糊处理的Android APK进行反向工程/反编译?

不幸的是,我丢失了我使用ProGuard混淆的一个应用程序的源代码。 我仍然有.apk文件和一些由ProGuard生成的配置文件: dump.txt mapping.txt seeds.txt usage.txt 到目前为止我做了什么? 使用apktool解码资源文件。 是的,我已经回来了! 提取.apk文件并使用dex2jar将classes.dex文件转换为.jar文件。 如果我现在使用JD-Gui查看源代码(.jar文件),我会看到我的混淆代码。 像这样的东西: class c { TextView a; TextView b; TextView c; TextView d; CheckBox e; } protected List a(Uri[] paramArrayOfUri) { … } protected void a(List paramList) { … } 还有一些循环看起来有点奇怪。 我不写无限循环: while (true) { if (!localIterator.hasNext()) return localArrayList; ProviderInfo[] arrayOfProviderInfo = ((PackageInfo)localIterator.next()).providers; if (arrayOfProviderInfo […]

Proguard和错误

我用这个proguard文件: -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* -optimizationpasses 10 -allowaccessmodification -mergeinterfacesaggressively -overloadaggressively -assumenosideeffects class android.util.Log { *; } -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.BackupAgent -keep public class * […]

未知类ILicensingService在混淆Android项目时注意到

我正在尝试使用Ant和ProGuard构建Android版本。 我在project.properties中取消注释了以下行,尽管所述文件中的注释指出你不应该修改它;): proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 混淆时,我得到以下注释: [proguard] Note: the configuration refers to the unknown class ‘com.google.vending.licensing.ILicensingService’ [proguard] Note: the configuration refers to the unknown class ‘com.android.vending.licensing.ILicensingService’ 我明白为什么会这样。 这些行可以在默认的ProGuard配置文件中find($ {sdk.dir} /tools/proguard/proguard-android.txt): -keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService 我没有使用Google许可服务,因此这些课程确实未知。 我find了一个解决方案,通过更新proguard-project.txt来摆脱这些笔记: -dontnote **ILicensingService 我的问题:这是处理这个问题的正确方法吗? 在我看来,无论如何都不应该保留这些类,因为对于android项目来说lib不是必需的。 我能想到实现这一目标的唯一方法是将默认配置文件复制到我的项目中,删除-keep行并完全忽略SDK中的默认配置文件。 这似乎也不是正确的方法。 或者我错过了什么?

如何使用ProGuard将所有方法保存在类中

我使用ProGuard来优化我的Android应用程序。 但是对于Android检测测试,我需要一些(但不是全部)类来保留所有成员。 我尝试了各种方法,最后一个是: -keepclassmembers public class com.mycompany.myclass { *; } 但令人惊讶的是我仍然得到了 java.lang.NoSuchMethodError: com.mycompany.myclass. 这里痛苦的部分是有两个构造函数,一个有很多参数。 有没有人知道正确的语法来保持类完全不变并且不受ProGuard的影响?

Proguard告诉我’请先纠正上述警告。’ 如何解决外部jar子的引用?

我该如何处理警告? 记录说 [proguard] Note: duplicate definition of library class… … [proguard] Note: there were 370 duplicate class definitions. [proguard] Initializing… [proguard] Warning: abc.cba..: can’t find superclass or interface xyz.zyx…. … [proguard] Note: the configuration refers to the unknown class ‘android.app.backup.BackupAgentHelper’… … [proguard] Warning: library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlSerializer… … proguard.cfg -optimizationpasses 5 […]

使用ProGuard值得麻烦吗?

从我所看到和阅读的内容来看,如果有人真的想要对您的软件进行逆向工程或反编译,ProGuard就不会阻止它们。 但它至少是一种适度的威慑力吗? 我不确定以后翻译我的堆栈跟踪是否值得。