From cd77fa5f918f03fcdcdcf026b7fefaac1b370bcd Mon Sep 17 00:00:00 2001 From: Andy Dennie Date: Tue, 19 Jul 2016 18:42:02 -0400 Subject: [PATCH] fix compile and proguard issues added @SuppressWarnings("ResourceType") to DrawingView.InitView to resolve release build compile error Cleared out the previous proguard-rules-pro file, since it was largely redundant with proguard-android.txt and the Affdex SDK's consumer-proguard-rules.pro. Added back some rules specific to this app. --- app/proguard-rules.pro | 93 ++----------------- .../com/affectiva/affdexme/DrawingView.java | 1 + 2 files changed, 7 insertions(+), 87 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 2a7d58d..4b0b2d2 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,90 +1,9 @@ # 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 ; -} - -# 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 ; -} - -# 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.* *; - (); -} --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 - --keep class com.amazonaws.** { *; } --keepnames class com.amazonaws.** { *; } --dontwarn com.amazonaws.** --dontwarn com.fasterxml.** +# MainActivity accesses the following methods through reflection, so make sure they +# are kept +-keep class com.affectiva.android.affdex.sdk.detector.Face$Expressions { float get*(); } +-keep class com.affectiva.android.affdex.sdk.detector.Face$Emotions { float get*(); } +-keep class com.affectiva.android.affdex.sdk.detector.Face$Emojis { float get*(); } +-keep class com.affectiva.android.affdex.sdk.detector.Detector { void setDetect*(boolean); } diff --git a/app/src/main/java/com/affectiva/affdexme/DrawingView.java b/app/src/main/java/com/affectiva/affdexme/DrawingView.java index f49387e..6049741 100644 --- a/app/src/main/java/com/affectiva/affdexme/DrawingView.java +++ b/app/src/main/java/com/affectiva/affdexme/DrawingView.java @@ -100,6 +100,7 @@ public class DrawingView extends SurfaceView implements SurfaceHolder.Callback { drawingThread.requestCaptureBitmap = true; } + @SuppressWarnings("ResourceType") void initView() { surfaceHolder = getHolder(); //The SurfaceHolder object will be used by the thread to request canvas to draw on SurfaceView surfaceHolder.setFormat(PixelFormat.TRANSPARENT); //set to Transparent so this surfaceView does not obscure the one it is overlaying (the one displaying the camera).