weknowhowyoufeel/app/proguard-rules.pro
toby cabot f542f7c519 Build system improvements
1. Sign the release apk if configured to do it

By default the build will not sign the release apk, but if you define
the right properties it will.  Create a ~/.gradle/gradle.properties file
with these properties: releaseKeystoreFile, releaseKeystorePassword,
releaseKeyAlias, and releaseKeyPassword.

For example:

releaseKeystoreFile=/Users/tcabot/release-keystore
releaseKeystorePassword=k3yst0r3
releaseKeyAlias=affdexme
releaseKeyPassword=k3y

2. Allow debug builds to coexist with releases

The debug build has a different id (com.affectiva.affdexme.debug) so
android treats it as a completely different app.  By default, though,
both apps look the same on the app launch screen so the debug version is
now called AffdexMeDbg so you can have both at the same time and be able
to tell which is which.

3. Make the apk filename more descriptive

It was just "app-debug.apk" or "app-release.apk".  This commit changes
the "app" to "AffdexMe" and adds the human-readable versionName and
integer versionCode to the filename.

I would have liked the filename to track the cosmetic name (i.e., have
the debug file be called "AffdexMeDbg-....apk") but that turned out to
be surprisingly difficult given the way the build system is set up.  I
think it should be possible but this is the best bang for the buck for
the amount of effort I'm willing to put in at this point.
2016-01-25 17:16:26 -05:00

85 lines
3 KiB
Prolog

# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
-dontskipnonpubliclibraryclasses
# Optimization is turned off by default. Dex does not like code run
# through the ProGuard optimize and preverify steps (and performs some
# of these optimizations on its own).
-dontoptimize
-dontpreverify
# Note that if you want to enable optimization, you cannot just
# include optimization flags in your own project configuration file;
# instead you will need to point to the
# "proguard-android-optimize.txt" file instead of this one from your
# project.properties file.
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
native <methods>;
}
# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontwarn android.support.**
#keep all classes (otherwise Proguard may remove classes that use reflection, injection, Gson, etc...)
-keep class sun.**
-keepclassmembers class sun.** {*;}
-keep class android.**
-keepclassmembers class android.** {*;}
-keep class dagger.**
-keepclassmembers class dagger.** {*;}
-keep class javax.**
-keepclassmembers class javax.** {*;}
#keep certain class members (otherwise Proguard would strip the members of these classes)
-keep class com.**
-keepclassmembers class !com.affectiva.affdexme.MainActivity,!com.affectiva.android.affdex.sdk.detector.Detector {*;}
-keepclassmembers class com.affectiva.android.affdex.sdk.detector.Detector {
public void setDetect**;
}
# Dagger
-dontwarn dagger.internal.codegen.**
-keepclassmembers,allowobfuscation class * {
@javax.inject.* *;
@dagger.* *;
<init>();
}
-keep class dagger.* { *; }
-keep class javax.inject.* { *; }
-keep class * extends dagger.internal.Binding
-keep class * extends dagger.internal.ModuleAdapter
-keep class * extends dagger.internal.StaticInjection