Add the latest version of Gmail

The following changes was made to the Proguard configuration for R8
processing to succeed:

1. Added the line -dontwarn sun.net.spi.nameservice.NameServiceDescriptor
2. Removed Signature from -keepattributes
3. Uncommented -verbose
4. Uncommented all -checkdiscard rules

Change-Id: Ie28fe241b7d378b74254cf22b705d0e264d9ed8c
diff --git a/.gitignore b/.gitignore
index edf1d96..bc26830 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,40 +22,24 @@
 third_party/android_jar/lib.tar.gz
 third_party/android_jar/lib-v[0-9][0-9]
 third_party/android_jar/lib-v[0-9][0-9].tar.gz
-third_party/gmscore/v4
-third_party/gmscore/v4.tar.gz
-third_party/gmscore/v5
-third_party/gmscore/v5.tar.gz
-third_party/gmscore/v6
-third_party/gmscore/v6.tar.gz
-third_party/gmscore/v7
-third_party/gmscore/v7.tar.gz
-third_party/gmscore/v8
-third_party/gmscore/v8.tar.gz
-third_party/gmscore/gmscore_v9
-third_party/gmscore/gmscore_v9.tar.gz
-third_party/gmscore/gmscore_v10
-third_party/gmscore/gmscore_v10.tar.gz
-third_party/gmscore/latest
-third_party/gmscore/latest.tar.gz
+third_party/gmail/*
+!third_party/gmail/*.sha1
+third_party/gmscore/*
+!third_party/gmscore/*.sha1
 third_party/gradle/gradle.tar.gz
 third_party/gradle/gradle
 third_party/jasmin.tar.gz
 third_party/jasmin
 third_party/jdwp-tests.tar.gz
 third_party/jdwp-tests
-third_party/photos/2017-06-06.tar.gz
-third_party/photos/2017-06-06/
+third_party/photos/*
+!third_party/photos/*.sha1
 third_party/proguard/proguard5.2.1.tar.gz
 third_party/proguard/proguard5.2.1
 third_party/proguardsettings.tar.gz
 third_party/proguardsettings/
-third_party/youtube/youtube.android_12.10
-third_party/youtube/youtube.android_12.10.tar.gz
-third_party/youtube/youtube.android_12.17/
-third_party/youtube/youtube.android_12.17.tar.gz
-third_party/youtube/youtube.android_12.22/
-third_party/youtube/youtube.android_12.22.tar.gz
+third_party/youtube/*
+!third_party/youtube/*sha1
 third_party/jctf
 third_party/jctf.tar.gz
 third_party/android_cts_baseline
diff --git a/build.gradle b/build.gradle
index 40a9ef2..c81d94d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -145,6 +145,7 @@
 
 def x20Dependencies = [
     "third_party": [
+        "gmail/gmail_android_170604.16.tar.gz",
         "gmscore/v4.tar.gz",
         "gmscore/v5.tar.gz",
         "gmscore/v6.tar.gz",
diff --git a/third_party/gmail/gmail_android_170604.16.tar.gz.sha1 b/third_party/gmail/gmail_android_170604.16.tar.gz.sha1
new file mode 100644
index 0000000..f57ba90
--- /dev/null
+++ b/third_party/gmail/gmail_android_170604.16.tar.gz.sha1
@@ -0,0 +1 @@
+161c569821a5c9b4cb8e99de764f3449191af084
\ No newline at end of file
diff --git a/tools/gmail_data.py b/tools/gmail_data.py
new file mode 100644
index 0000000..ab1e6b4
--- /dev/null
+++ b/tools/gmail_data.py
@@ -0,0 +1,37 @@
+# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+import glob
+import os
+import utils
+
+THIRD_PARTY = os.path.join(utils.REPO_ROOT, 'third_party')
+BASE = os.path.join(THIRD_PARTY, 'gmail')
+
+V170604_16_BASE = os.path.join(BASE, 'gmail_android_170604.16')
+V170604_16_PREFIX = os.path.join(V170604_16_BASE, 'Gmail_release_unstripped')
+
+# NOTE: we always use android.jar for SDK v25, later we might want to revise it
+#       to use proper android.jar version for each of youtube version separately.
+ANDROID_JAR = os.path.join(THIRD_PARTY, 'android_jar', 'lib-v25', 'android.jar')
+
+VERSIONS = {
+  '170604.16': {
+    'dex' : {
+      'inputs': [os.path.join(V170604_16_BASE, 'Gmail_release_unsigned.apk')],
+      'pgmap': '%s_proguard.map' % V170604_16_PREFIX,
+      'libraries' : [ANDROID_JAR, '/usr/local/buildtools/java/jdk-64/jre/lib/rt.jar'],
+      'r8-flags': '--ignore-missing-classes',
+    },
+    'deploy' : {
+      'inputs': ['%s_deploy.jar' % V170604_16_PREFIX],
+      'pgconf': ['%s_proguard.config' % V170604_16_PREFIX,
+                 '%s/proguardsettings/YouTubeRelease_proguard.config' % THIRD_PARTY],
+    },
+    'proguarded' : {
+      'inputs': ['%s_proguard.jar' % V170604_16_PREFIX],
+      'pgmap': '%s_proguard.map' % V170604_16_PREFIX,
+    }
+  },
+}
diff --git a/tools/run_r8_on_app.py b/tools/run_r8_on_app.py
index 804a27e..19696bb 100755
--- a/tools/run_r8_on_app.py
+++ b/tools/run_r8_on_app.py
@@ -10,9 +10,10 @@
 
 import gmscore_data
 import youtube_data
+import gmail_data
 
 TYPES = ['dex', 'deploy', 'proguarded']
-APPS = ['gmscore', 'youtube']
+APPS = ['gmscore', 'youtube', 'gmail']
 
 def ParseOptions():
   result = optparse.OptionParser()
@@ -69,6 +70,9 @@
   elif options.app == 'youtube':
     options.version = options.version or '12.22'
     data = youtube_data
+  elif options.app == 'gmail':
+    options.version = options.version or '170604.16'
+    data = gmail_data
   else:
     raise 'Unexpected'