Actually include tracking version files in jars.

In r.android.com/1000371 I changed VersionFileWriterTask to
check for version early (before afterEvaluate) which at that point is
not yet set resulting in disabling of all version tracking for every
jar.

Bug: 139489699
Test: Manual verification

Change-Id: I646b098bac428617dac78ddf8ce2a9f8fbc834fb
(cherry picked from commit a3b34e760b913aaf27b25e76cc171bdd86ec3d3b)
diff --git a/buildSrc/src/main/kotlin/androidx/build/BuildOnServer.kt b/buildSrc/src/main/kotlin/androidx/build/BuildOnServer.kt
index 3681c4d3..a6f40e2 100644
--- a/buildSrc/src/main/kotlin/androidx/build/BuildOnServer.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/BuildOnServer.kt
@@ -20,7 +20,10 @@
 import org.gradle.api.tasks.InputFiles
 import org.gradle.api.tasks.TaskAction
 import java.io.File
+import java.io.FileInputStream
 import java.io.FileNotFoundException
+import java.util.zip.ZipEntry
+import java.util.zip.ZipInputStream
 
 /**
  * Task for building all of Androidx libraries and documentation
@@ -73,5 +76,39 @@
             val missingFileString = missingFiles.reduce { acc, s -> "$acc, $s" }
             throw FileNotFoundException("buildOnServer required output missing: $missingFileString")
         }
+
+        verifyVersionFilesPresent()
     }
-}
+
+    private fun verifyVersionFilesPresent() {
+        project.getRepositoryDirectory().walk().forEach { file ->
+            if (file.extension == "aar") {
+                val inputStream = FileInputStream(file)
+                val aarFileInputStream = ZipInputStream(inputStream)
+                var entry: ZipEntry? = aarFileInputStream.nextEntry
+                while (entry != null) {
+                    if (entry.name == "classes.jar") {
+                        var foundVersionFile = false
+                        val classesJarInputStream = ZipInputStream(aarFileInputStream)
+                        var jarEntry = classesJarInputStream.nextEntry
+                        while (jarEntry != null) {
+                            if (jarEntry.name.startsWith("META-INF/androidx.") &&
+                                jarEntry.name.endsWith(".version")) {
+                                foundVersionFile = true
+                                break
+                            }
+                            jarEntry = classesJarInputStream.nextEntry
+                        }
+                        if (!foundVersionFile) {
+                            throw Exception(
+                                "Missing META-INF/ version file in ${file.absolutePath}"
+                            )
+                        }
+                        break
+                    }
+                    entry = aarFileInputStream.nextEntry
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/buildSrc/src/main/kotlin/androidx/build/VersionFileWriterTask.kt b/buildSrc/src/main/kotlin/androidx/build/VersionFileWriterTask.kt
index 6ca5240..476a564 100644
--- a/buildSrc/src/main/kotlin/androidx/build/VersionFileWriterTask.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/VersionFileWriterTask.kt
@@ -45,52 +45,57 @@
     }
 }
 
-private val RESOURCE_DIRECTORY = "generatedResources"
-private val VERSION_FILE_PATH = "$RESOURCE_DIRECTORY/META-INF/%s_%s.version"
+private const val RESOURCE_DIRECTORY = "generatedResources"
+private const val VERSION_FILE_PATH = "$RESOURCE_DIRECTORY/META-INF/%s_%s.version"
 
 /**
  * Sets up Android Library project to have a task that generates a version file.
  * It must be called after [LibraryExtension] has been resolved.
  *
- * @param project an Android Library project.
+ * @receiver an Android Library project.
  */
 fun Project.configureVersionFileWriter(
     library: LibraryExtension,
     androidXExtension: AndroidXExtension
 ) {
-    // We only add version file if is a library that is publishing.
-    if (!androidXExtension.publish.shouldPublish()) return
-
-    val writeVersionFile = tasks.register("writeVersionFile",
-            VersionFileWriterTask::class.java)
+    val writeVersionFile = tasks.register(
+        "writeVersionFile",
+        VersionFileWriterTask::class.java
+    )
 
     afterEvaluate {
         writeVersionFile.configure {
             val group = properties["group"] as String
             val artifactId = properties["name"] as String
-            val version = version().toString()
+            val version = if (androidXExtension.publish.shouldPublish()) {
+                version().toString()
+            } else {
+                "0.0.0"
+            }
 
             // Add a java resource file to the library jar for version tracking purposes.
             val artifactName = File(
                 buildDir,
-                String.format(VERSION_FILE_PATH, group, artifactId))
+                String.format(VERSION_FILE_PATH, group, artifactId)
+            )
 
             it.version = version
             it.outputFile = artifactName
+
+            // We only add version file if is a library that is publishing.
+            it.enabled = androidXExtension.publish.shouldPublish()
         }
     }
 
-    library.libraryVariants.all {
-        it.processJavaResourcesProvider.configure {
+    library.libraryVariants.all { variant ->
+        variant.processJavaResourcesProvider.configure {
             it.dependsOn(writeVersionFile)
         }
     }
 
     val resources = library.sourceSets.getByName("main").resources
-    resources.srcDir(File(buildDir, RESOURCE_DIRECTORY))
-    if (!resources.includes.isEmpty()) {
-        val includes = resources.includes
-        includes.add("META-INF/*.version")
-        resources.setIncludes(includes)
-    }
+    resources.srcDirs(setOf(resources.srcDirs, File(buildDir, RESOURCE_DIRECTORY)))
+    val includes = resources.includes
+    includes.add("META-INF/*.version")
+    resources.setIncludes(includes)
 }
diff --git a/emoji/core/build.gradle b/emoji/core/build.gradle
index e10a67c..56295e0 100644
--- a/emoji/core/build.gradle
+++ b/emoji/core/build.gradle
@@ -42,8 +42,8 @@
             manifest.srcFile 'AndroidManifest.xml'
             res.srcDirs += 'src/main/res-public'
             resources {
-                srcDirs = [fontDir.getAbsolutePath()]
-                includes = ["LICENSE_UNICODE", "LICENSE_OFL"]
+                srcDirs += [fontDir.getAbsolutePath()]
+                includes += ["LICENSE_UNICODE", "LICENSE_OFL"]
             }
         }
 
diff --git a/jetifier/jetifier/migration.config b/jetifier/jetifier/migration.config
index 16ac67b..e4c36bc 100644
--- a/jetifier/jetifier/migration.config
+++ b/jetifier/jetifier/migration.config
@@ -1615,6 +1615,18 @@
     },
     {
       "from": {
+        "groupId": "android.work",
+        "artifactId": "work-gcm",
+        "version": "{newWorkManagerVersion}"
+      },
+      "to": {
+        "groupId": "androidx.work",
+        "artifactId": "work-gcm",
+        "version": "{newWorkManagerVersion}"
+      }
+    },
+    {
+      "from": {
         "groupId": "com.android.support",
         "artifactId": "design",
         "version": "{oldMaterialVersion}"
diff --git a/wear/build.gradle b/wear/build.gradle
index d606c44..3c71809 100644
--- a/wear/build.gradle
+++ b/wear/build.gradle
@@ -33,9 +33,6 @@
 
     sourceSets {
         main.res.srcDirs 'res', 'res-public'
-        main.resources {
-            includes = ["wear_stubs/LICENSE"]
-        }
     }
 }