Merge "Fix the crash caused by bad minSdkVersion check." into oc-mr1-support-27.0-dev
diff --git a/buildSrc/src/main/groovy/android/support/SupportAndroidLibraryPlugin.groovy b/buildSrc/src/main/groovy/android/support/SupportAndroidLibraryPlugin.groovy
index a0e692e..b60fddc 100644
--- a/buildSrc/src/main/groovy/android/support/SupportAndroidLibraryPlugin.groovy
+++ b/buildSrc/src/main/groovy/android/support/SupportAndroidLibraryPlugin.groovy
@@ -35,6 +35,8 @@
 class SupportAndroidLibraryPlugin implements Plugin<Project> {
     private static final String INSTRUMENTATION_RUNNER =
             "android.support.test.runner.AndroidJUnitRunner";
+    private static final String VERSION_FILE_PATH =
+            "generatedResources/META-INF/%s_%s.version"
 
     @Override
     public void apply(Project project) {
@@ -62,6 +64,23 @@
                 sourceCompatibility javaVersion
                 targetCompatibility javaVersion
             }
+
+            // Add a java resource file to the library jar for version tracking purposes.
+            String artifactName = String.format(VERSION_FILE_PATH, project.group, project.name)
+
+            def writeVersionFile =
+                    project.tasks.create("writeVersionFile", VersionFileWriterTask.class) {
+                        version project.version
+                        outputFile new File(project.buildDir,  artifactName)
+                    }
+
+            library.libraryVariants.all {
+                it.processJavaResources.dependsOn(writeVersionFile)
+            }
+
+            library.sourceSets.main.resources {
+                srcDir new File(project.buildDir, "generatedResources")
+            }
         }
 
         project.apply(ImmutableMap.of("plugin", "com.android.library"));
@@ -73,8 +92,7 @@
 
         library.defaultConfig {
             // Update the version meta-data in each Manifest.
-            addManifestPlaceholders(["support-version": LibraryVersions.SUPPORT_LIBRARY.toString(),
-                                     "target-sdk-version": project.currentSdk])
+            addManifestPlaceholders(["target-sdk-version": project.currentSdk])
 
             // Set test related options.
             testInstrumentationRunner INSTRUMENTATION_RUNNER
diff --git a/buildSrc/src/main/java/android/support/VersionFileWriterTask.java b/buildSrc/src/main/java/android/support/VersionFileWriterTask.java
new file mode 100644
index 0000000..b1fdbe1
--- /dev/null
+++ b/buildSrc/src/main/java/android/support/VersionFileWriterTask.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.support;
+
+import org.gradle.api.DefaultTask;
+import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.OutputFile;
+import org.gradle.api.tasks.TaskAction;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * Task that allows to write a version to a given output file.
+ */
+public class VersionFileWriterTask extends DefaultTask {
+    private String mVersion;
+    private File mOutputFile;
+
+    @Input
+    public String getVersion() {
+        return mVersion;
+    }
+
+    public void setVersion(String version) {
+        mVersion = version;
+    }
+
+    @OutputFile
+    public File getOutputFile() {
+        return mOutputFile;
+    }
+
+    public void setOutputFile(File outputFile) {
+        mOutputFile = outputFile;
+    }
+
+    /**
+     * The main method for actually writing out the file.
+     *
+     * @throws IOException
+     */
+    @TaskAction
+    public void run() throws IOException {
+        PrintWriter writer = new PrintWriter(mOutputFile);
+        writer.println(mVersion);
+        writer.close();
+    }
+}
diff --git a/compat/AndroidManifest.xml b/compat/AndroidManifest.xml
index cba2f24..5525c41 100644
--- a/compat/AndroidManifest.xml
+++ b/compat/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.compat">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.compat.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/content/AndroidManifest.xml b/content/AndroidManifest.xml
index 8304504..8d2bc4b 100644
--- a/content/AndroidManifest.xml
+++ b/content/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="android.support.content">
     <uses-sdk android:minSdkVersion="14" />
-    <application>
-        <meta-data android:name="android.support.content.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/core-ui/AndroidManifest.xml b/core-ui/AndroidManifest.xml
index 715f92c..f498d26 100644
--- a/core-ui/AndroidManifest.xml
+++ b/core-ui/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.coreui">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.coreui.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/core-utils/AndroidManifest.xml b/core-utils/AndroidManifest.xml
index c24e023..248229b 100644
--- a/core-utils/AndroidManifest.xml
+++ b/core-utils/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.coreutils">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.coreutils.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/customtabs/AndroidManifest.xml b/customtabs/AndroidManifest.xml
index 6a25c8a..c913ad6 100644
--- a/customtabs/AndroidManifest.xml
+++ b/customtabs/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.customtabs">
     <uses-sdk android:minSdkVersion="15"/>
-    <application>
-        <meta-data android:name="android.support.customtabs.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/design/AndroidManifest.xml b/design/AndroidManifest.xml
index aa02181..0eb8b85 100644
--- a/design/AndroidManifest.xml
+++ b/design/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.design">
     <uses-sdk android:minSdkVersion="14" />
-    <application>
-        <meta-data android:name="android.support.design.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/dynamic-animation/AndroidManifest.xml b/dynamic-animation/AndroidManifest.xml
index a46ea43..bfe97cc 100644
--- a/dynamic-animation/AndroidManifest.xml
+++ b/dynamic-animation/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.dynamicanimation">
     <uses-sdk android:minSdkVersion="16"/>
-    <application>
-        <meta-data android:name="android.support.dynamicanimation.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/emoji/appcompat/AndroidManifest.xml b/emoji/appcompat/AndroidManifest.xml
index 8261137..bf83391 100644
--- a/emoji/appcompat/AndroidManifest.xml
+++ b/emoji/appcompat/AndroidManifest.xml
@@ -17,8 +17,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.text.emoji.appcompat">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.text.emoji.appcompat.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/emoji/bundled/AndroidManifest.xml b/emoji/bundled/AndroidManifest.xml
index a2b14cf..01c1713 100644
--- a/emoji/bundled/AndroidManifest.xml
+++ b/emoji/bundled/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.text.emoji.bundled">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.text.emoji.bundled.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
\ No newline at end of file
diff --git a/emoji/core/AndroidManifest.xml b/emoji/core/AndroidManifest.xml
index 1143f40..d153151 100644
--- a/emoji/core/AndroidManifest.xml
+++ b/emoji/core/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.text.emoji">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.text.emoji.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/exifinterface/AndroidManifest.xml b/exifinterface/AndroidManifest.xml
index 8c449f7..db7cabb 100644
--- a/exifinterface/AndroidManifest.xml
+++ b/exifinterface/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.exifinterface">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.exifinterface.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/fragment/AndroidManifest.xml b/fragment/AndroidManifest.xml
index 4d532bd..ec15d66 100644
--- a/fragment/AndroidManifest.xml
+++ b/fragment/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.fragment">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.fragment.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/graphics/drawable/animated/AndroidManifest.xml b/graphics/drawable/animated/AndroidManifest.xml
index ec4a4a6..166b786 100644
--- a/graphics/drawable/animated/AndroidManifest.xml
+++ b/graphics/drawable/animated/AndroidManifest.xml
@@ -16,8 +16,4 @@
   -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.graphics.drawable.animated">
-    <application>
-        <meta-data android:name="android.support.graphics.drawable.animated.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/graphics/drawable/static/AndroidManifest.xml b/graphics/drawable/static/AndroidManifest.xml
index d8427ca..97b2f72 100644
--- a/graphics/drawable/static/AndroidManifest.xml
+++ b/graphics/drawable/static/AndroidManifest.xml
@@ -16,8 +16,4 @@
   -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.support.graphics.drawable">
-    <application>
-        <meta-data android:name="android.support.graphics.drawable.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/media-compat/AndroidManifest.xml b/media-compat/AndroidManifest.xml
index 8a65eba..cd3e5e2 100644
--- a/media-compat/AndroidManifest.xml
+++ b/media-compat/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.mediacompat">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.mediacompat.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/percent/AndroidManifest.xml b/percent/AndroidManifest.xml
index db8dfa2..5d4707d 100644
--- a/percent/AndroidManifest.xml
+++ b/percent/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.percent">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.percent.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/recommendation/AndroidManifest.xml b/recommendation/AndroidManifest.xml
index 031e250..98e1ae9 100644
--- a/recommendation/AndroidManifest.xml
+++ b/recommendation/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.recommendation">
     <uses-sdk android:minSdkVersion="21"/>
-    <application>
-        <meta-data android:name="android.support.recommendation.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/transition/AndroidManifest.xml b/transition/AndroidManifest.xml
index 1b70510..40b77e2 100644
--- a/transition/AndroidManifest.xml
+++ b/transition/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.transition">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.transition.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/tv-provider/AndroidManifest.xml b/tv-provider/AndroidManifest.xml
index f7569a6..05af532 100644
--- a/tv-provider/AndroidManifest.xml
+++ b/tv-provider/AndroidManifest.xml
@@ -18,8 +18,4 @@
     <uses-sdk android:minSdkVersion="21"/>
     <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
     <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
-    <application>
-        <meta-data android:name="android.support.media.tv.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v13/AndroidManifest.xml b/v13/AndroidManifest.xml
index 6f5a696..164f757 100644
--- a/v13/AndroidManifest.xml
+++ b/v13/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v13">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.v13.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v14/preference/AndroidManifest.xml b/v14/preference/AndroidManifest.xml
index 18cc666..28dabea 100644
--- a/v14/preference/AndroidManifest.xml
+++ b/v14/preference/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.support.v14.preference">
     <uses-sdk android:minSdkVersion="14" />
-    <application>
-        <meta-data android:name="android.support.v14.preference.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v17/leanback/AndroidManifest.xml b/v17/leanback/AndroidManifest.xml
index 23c5c00..59ec5c0 100644
--- a/v17/leanback/AndroidManifest.xml
+++ b/v17/leanback/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v17.leanback">
     <uses-sdk android:minSdkVersion="17"/>
-    <application>
-        <meta-data android:name="android.support.v17.leanback.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v17/preference-leanback/AndroidManifest.xml b/v17/preference-leanback/AndroidManifest.xml
index c34c254..028f582 100644
--- a/v17/preference-leanback/AndroidManifest.xml
+++ b/v17/preference-leanback/AndroidManifest.xml
@@ -18,8 +18,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.support.v17.preference">
     <uses-sdk android:minSdkVersion="17" />
-    <application>
-        <meta-data android:name="android.support.v17.preference.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v4/AndroidManifest.xml b/v4/AndroidManifest.xml
index c179eb2..bc1ee8e 100644
--- a/v4/AndroidManifest.xml
+++ b/v4/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v4">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.v4.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v7/appcompat/AndroidManifest.xml b/v7/appcompat/AndroidManifest.xml
index 786d361..76b8a23 100644
--- a/v7/appcompat/AndroidManifest.xml
+++ b/v7/appcompat/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v7.appcompat">
     <uses-sdk android:minSdkVersion="14" />
-    <application>
-        <meta-data android:name="android.support.v7.appcompat.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v7/cardview/AndroidManifest.xml b/v7/cardview/AndroidManifest.xml
index af07bbc..3831492 100644
--- a/v7/cardview/AndroidManifest.xml
+++ b/v7/cardview/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v7.cardview">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.v7.cardview.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v7/gridlayout/AndroidManifest.xml b/v7/gridlayout/AndroidManifest.xml
index c18f5a1..288bb34 100644
--- a/v7/gridlayout/AndroidManifest.xml
+++ b/v7/gridlayout/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v7.gridlayout">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.v7.gridlayout.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v7/mediarouter/AndroidManifest.xml b/v7/mediarouter/AndroidManifest.xml
index c2c4ee3..c20a5c0 100644
--- a/v7/mediarouter/AndroidManifest.xml
+++ b/v7/mediarouter/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v7.mediarouter">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.v7.mediarouter.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v7/palette/AndroidManifest.xml b/v7/palette/AndroidManifest.xml
index 491cc8e..61bddd2 100644
--- a/v7/palette/AndroidManifest.xml
+++ b/v7/palette/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v7.palette">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.v7.palette.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v7/preference/AndroidManifest.xml b/v7/preference/AndroidManifest.xml
index c8df9a0..3195a03 100644
--- a/v7/preference/AndroidManifest.xml
+++ b/v7/preference/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.support.v7.preference">
     <uses-sdk android:minSdkVersion="14" />
-    <application>
-        <meta-data android:name="android.support.v7.preference.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/v7/recyclerview/AndroidManifest.xml b/v7/recyclerview/AndroidManifest.xml
index 04d095c..f83681e 100644
--- a/v7/recyclerview/AndroidManifest.xml
+++ b/v7/recyclerview/AndroidManifest.xml
@@ -16,8 +16,4 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.v7.recyclerview">
     <uses-sdk android:minSdkVersion="14"/>
-    <application>
-        <meta-data android:name="android.support.v7.recyclerview.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>
diff --git a/wear/AndroidManifest.xml b/wear/AndroidManifest.xml
index 0541f36..3849df5 100644
--- a/wear/AndroidManifest.xml
+++ b/wear/AndroidManifest.xml
@@ -15,8 +15,4 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.support.wear">
-    <application>
-        <meta-data android:name="android.support.wear.VERSION"
-                   android:value="${support-version}" />
-    </application>
 </manifest>