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"]
- }
}
}