diff --git a/Android.mk b/Android.mk
index 06ac9e6..c9ada0d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -20,43 +20,34 @@
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-ifeq ($(TARGET_BUILD_APPS),)
-    LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res
-    LOCAL_RESOURCE_DIR += frameworks/support/v7/recyclerview/res
-else
-    LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
-    LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/recyclerview/res
-endif
-LOCAL_RESOURCE_DIR += frameworks/opt/chips/res
-LOCAL_RESOURCE_DIR += frameworks/opt/colorpicker/res
-LOCAL_RESOURCE_DIR += frameworks/opt/photoviewer/res
-LOCAL_RESOURCE_DIR += frameworks/opt/photoviewer/activity/res
+LOCAL_USE_AAPT2 := true
 
-LOCAL_STATIC_JAVA_LIBRARIES := android-common
-LOCAL_STATIC_JAVA_LIBRARIES += android-common-framesequence
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-palette
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-recyclerview
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
-LOCAL_STATIC_JAVA_LIBRARIES += com.android.vcard
-LOCAL_STATIC_JAVA_LIBRARIES += guava
-LOCAL_STATIC_JAVA_LIBRARIES += libchips
-LOCAL_STATIC_JAVA_LIBRARIES += libphotoviewer
-LOCAL_STATIC_JAVA_LIBRARIES += libphonenumber
-LOCAL_STATIC_JAVA_LIBRARIES += colorpicker
+LOCAL_STATIC_ANDROID_LIBRARIES := \
+    android-support-compat \
+    android-support-media-compat \
+    android-support-core-utils \
+    android-support-core-ui \
+    android-support-fragment \
+    android-support-v7-appcompat \
+    android-support-v7-palette \
+    android-support-v7-recyclerview \
+    android-support-v13 \
+    colorpicker \
+    libchips \
+    libphotoviewer
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    android-support-annotations \
+    android-common \
+    android-common-framesequence \
+    com.android.vcard \
+    guava \
+    libphonenumber
 
 include $(LOCAL_PATH)/version.mk
 
-LOCAL_AAPT_FLAGS := --auto-add-overlay
 LOCAL_AAPT_FLAGS += --version-name "$(version_name_package)"
 LOCAL_AAPT_FLAGS += --version-code $(version_code_package)
-LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat
-LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.recyclerview
-LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.chips
-LOCAL_AAPT_FLAGS += --extra-packages com.android.vcard
-LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.photo
-LOCAL_AAPT_FLAGS += --extra-packages com.android.colorpicker
 
 ifdef TARGET_BUILD_APPS
     LOCAL_JNI_SHARED_LIBRARIES := libframesequence libgiftranscode
@@ -64,11 +55,9 @@
     LOCAL_REQUIRED_MODULES:= libframesequence libgiftranscode
 endif
 
-LOCAL_PROGUARD_FLAGS := -ignorewarnings
+LOCAL_PROGUARD_ENABLED := obfuscation optimization
 
-LOCAL_PROGUARD_ENABLED := nosystem
-
-LOCAL_PROGUARD_FLAG_FILES := ../../../build/core/proguard_basic_keeps.flags proguard.flags
+LOCAL_PROGUARD_FLAG_FILES := 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 dbc0674..cb9a69c 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -27,7 +27,7 @@
 LOCAL_MODULE    := libgiftranscode
 LOCAL_SRC_FILES := GifTranscoder.cpp
 
-LOCAL_CFLAGS += -Wall -Wno-unused-parameter -Wno-switch
+LOCAL_CFLAGS += -Wall -Werror -Wno-unused-parameter -Wno-switch
 
 LOCAL_SDK_VERSION := 19
 LOCAL_NDK_STL_VARIANT := c++_static # LLVM libc++
diff --git a/src/com/android/messaging/datamodel/media/GifImageResource.java b/src/com/android/messaging/datamodel/media/GifImageResource.java
index 6801165..cbea1ee 100644
--- a/src/com/android/messaging/datamodel/media/GifImageResource.java
+++ b/src/com/android/messaging/datamodel/media/GifImageResource.java
@@ -58,10 +58,10 @@
     public Drawable getDrawable(Resources resources) {
         try {
             return new FrameSequenceDrawable(mFrameSequence);
-        } catch (final Exception e) {
-            // Malicious gif images can make platform throw different kind of exceptions. Catch
-            // them all.
-            LogUtil.e(LogUtil.BUGLE_TAG, "Error getting drawable for GIF", e);
+        } catch (final Throwable t) {
+            // Malicious gif images can make the platform throw different kind of throwables, such
+            // as OutOfMemoryError and NullPointerException. Catch them all.
+            LogUtil.e(LogUtil.BUGLE_TAG, "Error getting drawable for GIF", t);
             return null;
         }
     }
diff --git a/tests/Android.mk b/tests/Android.mk
index a137a92..dc1999b 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -32,7 +32,11 @@
 LOCAL_STATIC_JAVA_LIBRARIES := \
     mockito-target
 
-LOCAL_JAVA_LIBRARIES := android.test.mock.sdk legacy-android-test
+LOCAL_JAVA_LIBRARIES := \
+    android.test.mock.stubs \
+    android.test.runner.stubs \
+    android.test.base.stubs \
+
 
 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 5ec5ab5..e81cd54 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;
@@ -62,16 +62,14 @@
     /** A custom argument matcher that checks whether the set argument passed in is a set
      * with identical attachment data as the given set.
      */
-    private class IsSetOfGivenAttachments extends ArgumentMatcher<Set<MessagePartData>> {
+    private class IsSetOfGivenAttachments implements ArgumentMatcher<Set<MessagePartData>> {
         private final Set<MessagePartData> mGivenParts;
         public IsSetOfGivenAttachments(final Set<MessagePartData> givenParts) {
             mGivenParts = givenParts;
         }
 
         @Override
-        public boolean matchesObject(final Object set) {
-            @SuppressWarnings("unchecked")
-            final Set<MessagePartData> actualSet = (Set<MessagePartData>) set;
+        public boolean matches(final Set<MessagePartData> actualSet) {
             if (actualSet.size() != mGivenParts.size()) {
                 return false;
             }
diff --git a/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java b/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
index 8c372f2..2148c71 100644
--- a/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
+++ b/tests/src/com/android/messaging/ui/conversation/ComposeMessageViewTest.java
@@ -16,6 +16,9 @@
 
 package com.android.messaging.ui.conversation;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.isNull;
+
 import android.content.Context;
 import android.media.MediaPlayer;
 import android.test.suitebuilder.annotation.MediumTest;
@@ -39,10 +42,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;
 
@@ -127,8 +130,8 @@
 
         view.requestDraftMessage(false);
 
-        Mockito.verify(mockDraftMessageData).loadFromStorage(Matchers.any(BindingBase.class),
-                Matchers.any(MessageData.class), Mockito.eq(false));
+        Mockito.verify(mockDraftMessageData).loadFromStorage(any(BindingBase.class),
+                isNull(), Mockito.eq(false));
 
         view.onDraftChanged(mockDraftMessageData, DraftMessageData.ALL_CHANGED);
 
@@ -136,12 +139,9 @@
 
         sendButton.performClick();
         Mockito.verify(mockIComposeMessageViewHost).sendMessage(
-                Mockito.argThat(new ArgumentMatcher<MessageData>() {
-                    @Override
-                    public boolean matchesObject(final Object o) {
-                        assertEquals(message.getMessageText(), ((MessageData) o).getMessageText());
-                        return true;
-                    }
+                Mockito.argThat(o -> {
+                    assertEquals(message.getMessageText(), o.getMessageText());
+                    return true;
                 }));
     }
 
@@ -170,8 +170,8 @@
 
         view.requestDraftMessage(false);
 
-        Mockito.verify(mockDraftMessageData).loadFromStorage(Matchers.any(BindingBase.class),
-                Matchers.any(MessageData.class), Mockito.eq(false));
+        Mockito.verify(mockDraftMessageData).loadFromStorage(any(BindingBase.class),
+                isNull(), Mockito.eq(false));
 
         view.onDraftChanged(mockDraftMessageData, DraftMessageData.ALL_CHANGED);
 
@@ -179,6 +179,6 @@
 
         sendButton.performClick();
         Mockito.verify(mockIComposeMessageViewHost).warnOfMissingActionConditions(
-                Matchers.any(Boolean.class), Matchers.any(Runnable.class));
+                any(Boolean.class), any(Runnable.class));
     }
 }
diff --git a/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java b/tests/src/com/android/messaging/ui/conversationlist/ConversationListItemViewTest.java
index 1fbba1f..afac0d8 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> {
@@ -60,12 +60,7 @@
             final ConversationListItemView conversationView) {
         // Must be a short click.
         final ArgumentMatcher<ConversationListItemData> itemDataIdMatcher =
-                new ArgumentMatcher<ConversationListItemData>() {
-            @Override
-            public boolean matchesObject(final Object arg) {
-                return TextUtils.equals(id, ((ConversationListItemData) arg).getConversationId());
-            }
-        };
+                arg -> TextUtils.equals(id, arg.getConversationId());
         Mockito.verify(mockHost).onConversationClicked(
                 Mockito.argThat(itemDataIdMatcher), Mockito.eq(false),
                 Mockito.eq(conversationView));
diff --git a/version.mk b/version.mk
index 6568cc8..8811741 100644
--- a/version.mk
+++ b/version.mk
@@ -55,7 +55,7 @@
 #####################################################
 #####################################################
 # Collect automatic version code parameters
-ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
+ifeq ($(strip $(HAS_BUILD_NUMBER)),false)
   # This is an eng build
   base_version_buildtype := 0
 else
@@ -106,12 +106,12 @@
 #       where nnnnnn is the build number from the build server (no zero-padding)
 # On eng builds, the BUILD_NUMBER has the user and timestamp inline
 ifdef TARGET_BUILD_APPS
-ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
+ifeq ($(strip $(HAS_BUILD_NUMBER)),false)
   git_hash := $(shell git --git-dir $(LOCAL_PATH)/.git log -n 1 --pretty=format:%h)
   date_string := $(shell date +%m%d%y_%H%M%S)
   version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) (eng.$(USER).$(git_hash).$(date_string)-$(base_version_arch)$(base_version_density))
 else
-  version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) ($(BUILD_NUMBER)-$(base_version_arch)$(base_version_density))
+  version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) ($(BUILD_NUMBER_FROM_FILE)-$(base_version_arch)$(base_version_density))
 endif
 else # !TARGET_BUILD_APPS
   version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build)
