diff --git a/Android.mk b/Android.mk
index e2ed18b..06ac9e6 100644
--- a/Android.mk
+++ b/Android.mk
@@ -64,11 +64,11 @@
     LOCAL_REQUIRED_MODULES:= libframesequence libgiftranscode
 endif
 
-LOCAL_PROGUARD_FLAGS := -ignorewarnings -include build/core/proguard_basic_keeps.flags
+LOCAL_PROGUARD_FLAGS := -ignorewarnings
 
 LOCAL_PROGUARD_ENABLED := nosystem
 
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+LOCAL_PROGUARD_FLAG_FILES := ../../../build/core/proguard_basic_keeps.flags proguard.flags
 ifeq (eng,$(TARGET_BUILD_VARIANT))
     LOCAL_PROGUARD_FLAG_FILES += proguard-test.flags
 else
diff --git a/jni/Android.mk b/jni/Android.mk
index cd89b8f..dbc0674 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -29,7 +29,7 @@
 
 LOCAL_CFLAGS += -Wall -Wno-unused-parameter -Wno-switch
 
-LOCAL_SDK_VERSION := 8
+LOCAL_SDK_VERSION := 19
 LOCAL_NDK_STL_VARIANT := c++_static # LLVM libc++
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/jni/GifTranscoder.cpp b/jni/GifTranscoder.cpp
index 112feca..9169f1b 100644
--- a/jni/GifTranscoder.cpp
+++ b/jni/GifTranscoder.cpp
@@ -24,7 +24,7 @@
 
 #include "GifTranscoder.h"
 
-#define SQUARE(a) (a)*(a)
+#define SQUARE(a) ((a)*(a))
 
 // GIF does not support partial transparency, so our alpha channels are always 0x0 or 0xff.
 static const ColorARGB TRANSPARENT = 0x0;
@@ -37,7 +37,7 @@
 #define MAKE_COLOR_ARGB(a, r, g, b) \
     ((a) << 24 | (r) << 16 | (g) << 8 | (b))
 
-#define MAX_COLOR_DISTANCE 255 * 255 * 255
+#define MAX_COLOR_DISTANCE (255 * 255 * 255)
 
 #define TAG "GifTranscoder.cpp"
 #define LOGD_ENABLED 0
diff --git a/proguard.flags b/proguard.flags
index 76b033c..759f2d4 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -23,7 +23,7 @@
 }
 
 # Keep methods that have the @VisibleForAnimation annotation
--keep interface com.android.messaging.annotation.VisibleForAnimation
+-keep @interface com.android.messaging.annotation.VisibleForAnimation
 -keepclassmembers class * {
   @com.android.messaging.annotation.VisibleForAnimation *;
 }
diff --git a/src/com/android/messaging/datamodel/data/ConversationParticipantsData.java b/src/com/android/messaging/datamodel/data/ConversationParticipantsData.java
index 0b5ef51..2ab1793 100644
--- a/src/com/android/messaging/datamodel/data/ConversationParticipantsData.java
+++ b/src/com/android/messaging/datamodel/data/ConversationParticipantsData.java
@@ -19,9 +19,9 @@
 import android.database.Cursor;
 import android.support.v4.util.SimpleArrayMap;
 
-import com.google.common.annotations.VisibleForTesting;
+import com.android.messaging.util.Assert;
 
-import junit.framework.Assert;
+import com.google.common.annotations.VisibleForTesting;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -84,7 +84,7 @@
                     return participant;
                 }
             }
-            Assert.fail();
+            Assert.fail("Could not find other participant");
         }
         return null;
     }
diff --git a/tests/Android.mk b/tests/Android.mk
index 3bfdb9a..a8c13cd 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -30,7 +30,8 @@
 LOCAL_CERTIFICATE := platform
 
 LOCAL_STATIC_JAVA_LIBRARIES := \
-    mockito-target
+    mockito-target \
+    legacy-android-test
 
 include $(BUILD_PACKAGE)
 
diff --git a/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java b/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java
index 30c711b..5ec5ab5 100644
--- a/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java
+++ b/tests/src/com/android/messaging/ui/attachmentchooser/AttachmentChooserFragmentTest.java
@@ -36,10 +36,10 @@
 import com.android.messaging.ui.attachmentchooser.AttachmentChooserFragment.AttachmentChooserFragmentHost;
 import com.android.messaging.ui.conversationlist.ConversationListFragment;
 
-import org.mockito.ArgumentMatcher;
 import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
+import org.mockito.compat.ArgumentMatcher;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -69,7 +69,7 @@
         }
 
         @Override
-        public boolean matches(final Object set) {
+        public boolean matchesObject(final Object set) {
             @SuppressWarnings("unchecked")
             final Set<MessagePartData> actualSet = (Set<MessagePartData>) set;
             if (actualSet.size() != mGivenParts.size()) {
diff --git a/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java b/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
index 2dd2a89..8c372f2 100644
--- a/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
+++ b/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
@@ -39,10 +39,10 @@
 import com.android.messaging.util.FakeMediaUtil;
 import com.android.messaging.util.ImeUtil;
 
-import org.mockito.ArgumentMatcher;
 import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.Mockito;
+import org.mockito.compat.ArgumentMatcher;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
@@ -138,7 +138,7 @@
         Mockito.verify(mockIComposeMessageViewHost).sendMessage(
                 Mockito.argThat(new ArgumentMatcher<MessageData>() {
                     @Override
-                    public boolean matches(final Object o) {
+                    public boolean matchesObject(final Object o) {
                         assertEquals(message.getMessageText(), ((MessageData) o).getMessageText());
                         return true;
                     }
diff --git a/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java b/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java
index be054a8..1fbba1f 100644
--- a/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java
+++ b/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java
@@ -35,9 +35,9 @@
 import com.android.messaging.ui.conversationlist.ConversationListItemView;
 import com.android.messaging.util.Dates;
 
-import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
 import org.mockito.Mockito;
+import org.mockito.compat.ArgumentMatcher;
 
 @MediumTest
 public class ConversationListItemViewTest extends ViewTest<ConversationListItemView> {
@@ -62,7 +62,7 @@
         final ArgumentMatcher<ConversationListItemData> itemDataIdMatcher =
                 new ArgumentMatcher<ConversationListItemData>() {
             @Override
-            public boolean matches(final Object arg) {
+            public boolean matchesObject(final Object arg) {
                 return TextUtils.equals(id, ((ConversationListItemData) arg).getConversationId());
             }
         };
