我想知道是否有更好的方法阻止proguard混淆我们的依赖项。 现在我们基本上手动保留所有依赖项(如果语句可能是冗余的,则有些因为它没有正确清理)。
这是我们的proguard文件的一部分,它试图保留我们的gradle依赖项所需的一切:
-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 class org.altbeacon.** {
*;
}
# support library
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep public class * extends android.support.v4.app.ListFragment
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.DialogFragment
-keep public class * extends android.support.v4.app.FragmentActivity
# Crittercism
-keep public class com.crittercism.**
-keepclassmembers public class com.crittercism.*
{
*;
}
# keep logback-android logs
-keep class ch.qos.** { *; }
-keep class org.slf4j.** { *; }
# ZBar / QRCode-scanner
-keep class net.sourceforge.zbar.** { *; }
这是我们的gradle依赖项:
compile('de.keyboardsurfer.android.widget:crouton:1.8.4@aar')
compile files('app/libs/zbar.jar')
compile 'com.google.android.gms:play-services:9.0.1'
compile 'com.android.support:multidex:1.0.0'
compile 'org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.0'
compile 'com.google.guava:guava:14.0.1'
compile 'com.google.protobuf:protobuf-java:2.4.1'
compile 'org.slf4j:slf4j-api:1.7.0'
现在我觉得可能有一些选项可以告诉proguard只是为了模糊我的应用程序中的类。但是我找不到任何东西。
我找到了-libraryjars
,但据我所知,这不适用于此。
我现在提出的最好的是以下com.mycompany.myfirstapp
是我的应用程序包:
-keep class !com.mycompany.myfirstapp.** { *; }
这是要走的路还是有人知道一个更方便的选择? 我不需要混淆或缩小我的依赖项,我也不想指定每个(也许忘记一个)。
这不仅对我的应用程序很重要,而且我们公司也提供和SDK,所以我想给我们的客户提供一些指导,这些指导似乎有时会与proguard斗争。