@@ -2,15 +2,14 @@ package me.xx2bab.polyfill.agp.provider
22
33import com.android.build.api.variant.AndroidComponentsExtension
44import com.android.build.api.variant.Variant
5- import com.android.build.gradle.internal.plugins.AppPlugin
6- import com.android.build.gradle.internal.scope.GlobalScope
75import com.android.sdklib.BuildToolInfo
6+ import me.xx2bab.polyfill.agp.tool.toGlobalScope
87import me.xx2bab.polyfill.matrix.annotation.InitStage
98import me.xx2bab.polyfill.matrix.annotation.ProviderConfig
109import me.xx2bab.polyfill.matrix.base.ApplicationSelfManageableProvider
1110import me.xx2bab.polyfill.matrix.base.LibrarySelfManageableProvider
12- import me.xx2bab.polyfill.matrix.tool.ReflectionKit
1311import org.gradle.api.Project
12+ import org.gradle.api.provider.Provider
1413
1514/* *
1615 * To get the BuildTool obj, which is located at sdk dir like:
@@ -25,21 +24,18 @@ import org.gradle.api.Project
2524 * @see BuildToolInfo
2625 */
2726@ProviderConfig(InitStage .PRE_BUILD )
28- class BuildToolProvider : ApplicationSelfManageableProvider <BuildToolInfo >,
29- LibrarySelfManageableProvider <BuildToolInfo > {
27+ class BuildToolInfoProvider : ApplicationSelfManageableProvider <Provider < BuildToolInfo > >,
28+ LibrarySelfManageableProvider <Provider < BuildToolInfo > > {
3029
31- private lateinit var bti: BuildToolInfo
30+ private lateinit var bti: Provider < BuildToolInfo >
3231
3332 override fun initialize (project : Project ,
3433 androidExtension : AndroidComponentsExtension <* , * , * >,
3534 variant : Variant ) {
36- val basePlugin = project.plugins.findPlugin(AppPlugin ::class .java)
37- val scope = ReflectionKit .getField(AppPlugin ::class .java, basePlugin!! ,
38- " globalScope" ) as GlobalScope
39- bti = scope.versionedSdkLoader.get().buildToolInfoProvider.get()
35+ bti = variant.toGlobalScope().versionedSdkLoader.flatMap { it.buildToolInfoProvider }
4036 }
4137
42- override fun obtain (defaultValue : BuildToolInfo ? ): BuildToolInfo {
38+ override fun obtain (defaultValue : Provider < BuildToolInfo > ? ): Provider < BuildToolInfo > {
4339 return bti
4440 }
4541
0 commit comments