diff -r 000000000000 -r 6474c204b198 mobile/android/config/proguard.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobile/android/config/proguard.cfg Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,201 @@ +# Dalvik renders preverification unuseful (Would just slightly bloat the file). +-dontpreverify + +# Uncomment to have Proguard list dead code detected during the run - useful for cleaning up the codebase. +# -printusage + +-dontskipnonpubliclibraryclassmembers +-verbose +-allowaccessmodification + +# Preserve all fundamental application classes. +-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.app.backup.BackupAgentHelper +-keep public class * extends android.content.BroadcastReceiver +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.preference.Preference +-keep public class * extends org.mozilla.gecko.sync.syncadapter.SyncAdapter +-keep class org.mozilla.gecko.sync.syncadapter.SyncAdapter + +# Preserve all native method names and the names of their classes. +-keepclasseswithmembernames class * { + native ; +} + +-keepclasseswithmembers class * { + public (android.content.Context, android.util.AttributeSet, int); +} + +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# Preserve enums. (For awful reasons, the runtime accesses them using introspection...) +-keepclassmembers enum * { + *; +} + +# +# Rules from ProGuard's Android example: +# http://proguard.sourceforge.net/manual/examples.html#androidapplication +# + +# Switch off some optimizations that trip older versions of the Dalvik VM. + +-optimizations !code/simplification/arithmetic + +# Keep a fixed source file attribute and all line number tables to get line +# numbers in the stack traces. +# You can comment this out if you're not interested in stack traces. + +-renamesourcefileattribute SourceFile +-keepattributes SourceFile,LineNumberTable + +# RemoteViews might need annotations. + +-keepattributes *Annotation* + +# Preserve all View implementations, their special context constructors, and +# their setters. + +-keep public class * extends android.view.View { + public (android.content.Context); + public (android.content.Context, android.util.AttributeSet); + public (android.content.Context, android.util.AttributeSet, int); + public void set*(...); +} + +# Preserve all classes that have special context constructors, and the +# constructors themselves. + +-keepclasseswithmembers class * { + public (android.content.Context, android.util.AttributeSet); +} + +# Preserve the special fields of all Parcelable implementations. + +-keepclassmembers class * implements android.os.Parcelable { + static android.os.Parcelable$Creator CREATOR; +} + +# Preserve static fields of inner classes of R classes that might be accessed +# through introspection. + +-keepclassmembers class **.R$* { + public static ; +} + +# Preserve the required interface from the License Verification Library +# (but don't nag the developer if the library is not used at all). + +-keep public interface com.android.vending.licensing.ILicensingService + +-dontnote com.android.vending.licensing.ILicensingService + +# The Android Compatibility library references some classes that may not be +# present in all versions of the API, but we know that's ok. + +-dontwarn android.support.** + +# Preserve all native method names and the names of their classes. + +-keepclasseswithmembernames class * { + native ; +} + +# +# Mozilla-specific rules +# +# Merging classes can generate dex warnings about anonymous inner classes. +-optimizations !class/merging/horizontal +-optimizations !class/merging/vertical + +# Keep miscellaneous targets. + +# Keep the annotation. +-keep @interface org.mozilla.gecko.mozglue.JNITarget + +# Keep classes tagged with the annotation. +-keep @org.mozilla.gecko.mozglue.JNITarget class * + +# Keep all members of an annotated class. +-keepclassmembers @org.mozilla.gecko.mozglue.JNITarget class * { + *; +} + +# Keep annotated members of any class. +-keepclassmembers class * { + @org.mozilla.gecko.mozglue.JNITarget *; +} + +# Keep classes which contain at least one annotated element. Split over two directives +# because, according to the developer of ProGuard, "the option -keepclasseswithmembers +# doesn't combine well with the '*' wildcard" (And, indeed, using it causes things to +# be deleted that we want to keep.) +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.JNITarget ; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.JNITarget ; +} + +# Keep Robocop targets. TODO: Can omit these from release builds. Also, Bug 916507. + +# Same formula as above... +-keep @interface org.mozilla.gecko.mozglue.RobocopTarget +-keep @org.mozilla.gecko.mozglue.RobocopTarget class * +-keepclassmembers class * { + @org.mozilla.gecko.mozglue.RobocopTarget *; +} +-keepclassmembers @org.mozilla.gecko.mozglue.RobocopTarget class * { + *; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.RobocopTarget ; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.RobocopTarget ; +} + +# Keep WebRTC targets. +-keep @interface org.mozilla.gecko.mozglue.WebRTCJNITarget +-keep @org.mozilla.gecko.mozglue.WebRTCJNITarget class * +-keepclassmembers class * { + @org.mozilla.gecko.mozglue.WebRTCJNITarget *; +} +-keepclassmembers @org.mozilla.gecko.mozglue.WebRTCJNITarget class * { + *; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.WebRTCJNITarget ; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.WebRTCJNITarget ; +} + +# Keep generator-targeted entry points. +-keep @interface org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI +-keep @org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI class * +-keepclassmembers class * { + @org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI *; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI ; +} +-keepclasseswithmembers class * { + @org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI ; +} + +-keep @interface org.mozilla.gecko.mozglue.generatorannotations.WrapEntireClassForJNI +-keep @org.mozilla.gecko.mozglue.generatorannotations.WrapEntireClassForJNI class * +-keepclassmembers @org.mozilla.gecko.mozglue.generatorannotations.WrapEntireClassForJNI class * { + *; +} + +# Disable obfuscation because it makes exception stack traces more difficult to read. +-dontobfuscate + +# Suppress warnings about missing descriptor classes. +#-dontnote **,!ch.boye.**,!org.mozilla.gecko.sync.**