Skip to content

Commit 60ddc9a

Browse files
authored
Merge pull request deepmedia#25 from FlatSpike/fix-agp-8.8.0
Fix NotSuchMethodError with agp 8.8.0
2 parents 2a049f6 + 413b0f2 commit 60ddc9a

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

grease/src/main/kotlin/io/deepmedia/tools/grease/GreasePlugin.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
3232
import org.gradle.api.Plugin
3333
import org.gradle.api.Project
3434
import org.gradle.api.artifacts.Configuration
35+
import org.gradle.api.file.FileCollection
3536
import org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication
3637
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
3738
import org.gradle.kotlin.dsl.support.unzipTo
3839
import org.gradle.kotlin.dsl.support.zipTo
3940
import java.io.File
41+
import kotlin.reflect.full.functions
4042

4143
/**
4244
* Adds grease configurations for bundling dependencies in AAR files.
@@ -239,7 +241,15 @@ open class GreasePlugin : Plugin<Project> {
239241
}
240242
}
241243

242-
val files = projectNativeLibs.get().files().files + localJarsNativeLibs?.files.orEmpty()
244+
// In agp 8.8.0 return type of `localJarsNativeLibs` property was changed
245+
// So its starts to throw `NoSuchMethodError` when we applied older version of agp
246+
// To prevent that we simply find this function by reflection, call it
247+
// and casting result to proper type
248+
fun LibraryJniLibsTask.localJarsNativeLibs() = this::class.functions
249+
.find { it.name == "localJarsNativeLibs" }
250+
?.let { it.call() as? FileCollection }
251+
252+
val files = projectNativeLibs.get().files().files + localJarsNativeLibs()?.files.orEmpty()
243253
if (files.isNotEmpty()) {
244254
doLast { injectJniLibs() }
245255
} else {

0 commit comments

Comments
 (0)