Skip to content

Commit 514ae8c

Browse files
committed
Fix NotSuchMethodError with agp 8.8.0
1 parent 2a049f6 commit 514ae8c

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[versions]
2-
agp = "8.1.4"
2+
agp = "8.8.1"
33
apache-ant = "1.10.14"
44
asm-commons = "9.6"
55
android-tools = "31.1.4"

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

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)