Articles of android proguard

使用ProGuard混淆私有字段

我在AndroidStudio 1.2.1.1中使用ProGuard和Gradle 1.2.3。 My Gradle的发布版本配置如下: minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ shrinkResources true 我希望类的私有字段被混淆。 这是我的proguard配置文件(经过多次尝试)截至目前: -allowaccessmodification -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -repackageclasses ” -verbose […] 但在与AndroidGuard的androdd反编译后,我最终得到: private com.google.android.gms.common.api.GoogleApiClient googleApiClient; 我知道这种混淆的使用是有限的,但我希望通过ProGuard重命名googleApiClient 。 怎么办? 这是refcard 。 有没有办法与-keepclassmembernames相反?

android studio中的proguard-rules.txt在哪里?

在我的演示项目中, proguard-rules.txt在Android studio中不可用。 我一定错过了一些代码: 我在哪里可以findproguard-rules.txt文件? 我想添加proguard规则 任何帮助都是适当的 谢谢

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规则?

Android Proguard问题 – 跳过模糊处理时仍然出现“java.io.IOException:无法处理类…”错误

我正在使用Android Studio中的proguard构建一个Android应用程序,我的项目有一个库jar(na.jar),我想跳过混淆和预validation,因为来自na.jar的一些类在构建过程中给了我错误。 所以在我的proguard配置文件中,我有以下选项 -dontpreverify # com.na, org.json are packages in na.jar, don’t obfuscate the code in these packages -keep class com.na.** { *; } -keep interface com.na.** { *; } -keep class org.json.** { *; } -keep interface org.json.** { *; } 但是,在构建过程中,我仍然会收到与na.jar中的错误类相关的以下错误。 Caused by: java.io.IOException: Can’t read [C:\StudioProjects\PBActivity\pBActivity\libs\na.jar(;;;;;;!META-INF/MANIFEST.MF)] (Can’t process class [com/na/util/BinConverter.class] (256)) at […]

ConsumerProguardFiles与ProguardFiles

我试图构建一个包含带有proguard的库模块La的应用程序,我注意到该库没有被混淆。 试图理解为什么。 在这个时刻,这是我的buildType: release { minifyEnabled false useProguard true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } 经过一些搜索,我遇到了ConsumerProguardFiles函数,该函数声明: ProGuard规则文件将包含在已发布的AAR中。 然后,任何使用AAR的应用程序项目将使用这些proguard规则文件(如果启用了ProGuard)。 这允许AAR指定收缩或混淆排除规则。 这仅适用于Library项目。 这在Application项目中被忽略。 现在,我的库La的buildType如下: release { minifyEnabled false useProguard true consumerProguardFiles ‘proguard-rules.pro’ } 现在我的库La正在使用它的proguard规则,库代码被混淆了。 所以我的问题是: 1)这种不同行为的原因是什么。 为什么ProguardFiles不会混淆库的规则而是忽略它? 2)我猜测ConsumerProguardFiles所做的是将库的规则与主应用程序proguard规则合并。 这个假设是否正确? 3)简而言之:对应用程序使用proguardFiles,对库使用ConsumerProguardFiles。 正确? 感谢您抽出宝贵的时间阅读!

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

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

仅使用Proguard:无法初始化DaoConfig => ArrayIndexOutOfBoundsException

我使用以下ProGuard规则: -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {*; } -keep class ** $ Properties -keep class org.greenrobot.greendao。** -keepclassmembers class org.greenrobot.greendao。** {*; } #如果您不使用SQLCipher: -dontwarn org.greenrobot.greendao.database。** #如果你不使用RxJava: -dontwarn rx。** 启动应用程序时,我收到以下崩溃日志: java.lang.RuntimeException:无法创建应用程序my.app.package.MyApplication:org.greenrobot.greendao.DaoException:无法初始化DAOConfig 在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4569) 在android.app.ActivityThread.access $ 1500(ActivityThread.java:148) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:135) 在android.app.ActivityThread.main(ActivityThread.java:5272) at java.lang.reflect.Method.invoke(Native Method) 在java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:909) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 引起:org.greenrobot.greendao.DaoException:无法初始化DAOConfig 在org.greenrobot.greendao.internal.DaoConfig。(未知来源) 在org.greenrobot.greendao.AbstractDaoMaster.registerDaoClass(未知来源) 在my.app.package.database.model.DaoMaster。(未知来源) 在my.app.package.database.model.DaoMaster。(未知来源) at my.app.package.ZamgApplication.onCreate(Unknown Source) […]

Android设计支持库proguard规则

一直试图find一些有关新设计支持库所需规则的信息,以便通过proguard。 我找不到任何有关它的信息。 结束使用这些规则: -keep class android.support.design.widget.** { *; } -keep interface android.support.design.widget.** { *; } -dontwarn android.support.design.** 这些规则似乎有效,但我不确定是否有更好的规则或它是否适用于设计支持库中的所有类

更新Android Studio 3.1后,我会在每次构建后收到这些警告

Android发布警告 从1方法中删除无效的本地信息。 从1方法中删除无效的本地信息。 消息{kind = WARNING,text =从1方法中删除无效的本地信息。,sources = [未知源文件],工具名称= Optional.of(D8)} InnerClass注释缺少相应的EnclosingMember注释。 这样的InnerClass注释被忽略。 InnerClass注释缺少相应的EnclosingMember注释。 这样的InnerClass注释被忽略。 消息{kind = WARNING,text = InnerClass注释缺少相应的EnclosingMember注释。 这样的InnerClass注释被忽略。,sources = [未知源文件],工具名称= Optional.of(D8)} 未findtypesorg.w3c.dom.bootstrap.DOMImplementationRegistry ,默认或静态接口方法需要使用void com.fasterxml.jackson.databind.ext.DOMSerializer.() 未findtypesorg.w3c.dom.bootstrap.DOMImplementationRegistry ,默认或静态接口方法需要使用void com.fasterxml.jackson.databind.ext.DOMSerializer.()消息{kind = WARNING,text =未findtypesorg.w3c.dom.bootstrap.DOMImplementationRegistry ,默认或静态接口方法需要使用void com.fasterxml.jackson.databind.ext.DOMSerializer.() ,sources = [/ Users /deepanshusinha/git/OpenApp/OpenAppForce/app/build/intermediates/transforms/androidGradleClassShrinker/beta/debug/4/com/fasterxml/jackson/databind/ext/DOMSerializer.class],工具名称= Optional.of(D8)} Java编译器警告 规则`-keep public class * extends java.lang.annotation.Annotation { 警告:规则`-keep public class * extends java.lang.annotation.Annotation { […]

在Gradle的Android插件中,“minifyEnabled”和“useProguard”有什么区别?

我看到Gradle的Android插件有一个minifyEnabled属性以及一个useProguard属性,如下所示: android { buildTypes { debug { minifyEnabled true useProguard false } release { minifyEnabled true useProguard true } } } 这两个属性有什么区别? 或者说,每个人的意义是什么?