Skip to content

Commit c58523f

Browse files
authored
Fix: BuildConfig file not generated/disappearing (#57)
Apparently using `variant.sources.java.all` in AGP 7.2 causes BuildConfig files to disappear or not generate at all, this is very likely a bug in AGP 7.2 because it is working in AGP 7.3.0-beta01. For now this is a workaround that reintroduces code that utilises old non-public AGP code, but at least this code is working. Fixes #54
1 parent 6a6fa09 commit c58523f

File tree

6 files changed

+38
-6
lines changed

6 files changed

+38
-6
lines changed

plugin/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ test {
6767

6868
dependencies {
6969
compileOnly gradleApi()
70-
implementation libs.androidGradlePluginApi
70+
implementation libs.androidGradlePlugin
7171

7272
// Without depending on the full Android Gradle Plugin, the test fixture is unable to locate the Android Gradle Plugin.
7373
// Not sure why this is, but for now this is a quick fx to add it to the TestKit classpath.

plugin/src/main/kotlin/org/neotech/plugin/rootcoverage/RootCoveragePlugin.kt

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import com.android.build.api.artifact.MultipleArtifact
55
import com.android.build.api.dsl.BuildType
66
import com.android.build.api.variant.AndroidComponentsExtension
77
import com.android.build.api.variant.Variant
8+
import com.android.build.gradle.AppExtension
9+
import com.android.build.gradle.LibraryExtension
10+
import com.android.build.gradle.api.SourceKind
811
import org.gradle.api.GradleException
912
import org.gradle.api.NamedDomainObjectContainer
1013
import org.gradle.api.Plugin
@@ -172,7 +175,32 @@ class RootCoveragePlugin : Plugin<Project> {
172175
dependsOn("$path:connected${name}AndroidTest")
173176
}
174177

175-
sourceDirectories.from(variant.sources.java.all)
178+
179+
// Start temporary fix for AGP 7.2
180+
// For some reason `variant.sources.java.all` causes BuildConfig files to go missing
181+
// See: https://github.com/NeoTech-Software/Android-Root-Coverage-Plugin/issues/54
182+
val baseVariant = when(val androidExtension = subProject.extensions.findByName("android")) {
183+
is LibraryExtension -> androidExtension.libraryVariants
184+
is AppExtension -> androidExtension.applicationVariants
185+
else -> {
186+
subProject.logger.warn(
187+
"Note: Skipping code coverage for module '${subProject.name}', currently the" +
188+
" RootCoveragePlugin only supports Android Library and App Modules.")
189+
return
190+
}
191+
}
192+
baseVariant.forEach {
193+
subProject.logger.warn("Name: $name, BaseName: ${it.baseName}")
194+
if(name.contentEquals(it.baseName, ignoreCase = true)) {
195+
val sourceFiles = it.getSourceFolders(SourceKind.JAVA).map { file -> file.dir }
196+
sourceDirectories.from(subProject.files(sourceFiles))
197+
}
198+
}
199+
// End temporary fix for AGP 7.2
200+
201+
// Working code in AGP 7.3-beta01:
202+
// sourceDirectories.from(variant.sources.java?.all)
203+
176204
classDirectories.from(variant.artifacts.getAll(MultipleArtifact.ALL_CLASSES_DIRS).map {
177205
it.map { directory ->
178206
subProject.fileTree(directory.asFile, excludes = rootProjectExtension.getFileFilterPatterns())

plugin/src/test/test-fixtures/multi-module/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
alias(libs.plugins.androidApp)
2+
id "com.android.application"
33
alias(libs.plugins.kotlinAndroid)
44
}
55

plugin/src/test/test-fixtures/multi-module/app/src/main/java/org/neotech/app/AppJava.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ public static synchronized AppJava getInstance() {
1212
}
1313

1414
private AppJava() {
15-
15+
// Check if the BuildConfig file is available, this is here to prevent regression on:
16+
// https://github.com/NeoTech-Software/Android-Root-Coverage-Plugin/issues/54
17+
System.out.println(org.neotech.app.BuildConfig.DEBUG);
1618
}
1719

1820
public String touchedByJavaInstrumentedTestInApp() {

plugin/src/test/test-fixtures/multi-module/library_android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
alias(libs.plugins.androidLibrary)
2+
id "com.android.library"
33
alias(libs.plugins.kotlinAndroid)
44
}
55

plugin/src/test/test-fixtures/multi-module/library_android/src/main/java/org/neotech/library/android/LibraryAndroidJava.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ public static synchronized LibraryAndroidJava getInstance() {
1212
}
1313

1414
private LibraryAndroidJava() {
15-
15+
// Check if the BuildConfig file is available, this is here to prevent regression on:
16+
// https://github.com/NeoTech-Software/Android-Root-Coverage-Plugin/issues/54
17+
System.out.println(org.neotech.library.a.BuildConfig.DEBUG);
1618
}
1719

1820
public String touchedByJavaInstrumentedTestInAndroidLibrary() {

0 commit comments

Comments
 (0)