|
@@ -2,15 +2,21 @@ package io.nexilis
|
|
|
|
|
|
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
|
import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
|
|
import com.android.build.gradle.internal.dsl.DynamicFeatureExtension
|
|
import com.android.build.gradle.internal.dsl.DynamicFeatureExtension
|
|
|
|
+import org.gradle.BuildListener
|
|
|
|
+import org.gradle.BuildResult
|
|
import org.gradle.api.Plugin
|
|
import org.gradle.api.Plugin
|
|
import org.gradle.api.Project
|
|
import org.gradle.api.Project
|
|
import org.gradle.api.ProjectEvaluationListener
|
|
import org.gradle.api.ProjectEvaluationListener
|
|
import org.gradle.api.ProjectState
|
|
import org.gradle.api.ProjectState
|
|
|
|
+import org.gradle.api.initialization.Settings
|
|
|
|
+import org.gradle.api.invocation.Gradle
|
|
|
|
+import java.io.File
|
|
|
|
|
|
const val libNameSpace = "com.example.dm"
|
|
const val libNameSpace = "com.example.dm"
|
|
|
|
|
|
class DynamicModulePlugin : Plugin<Project> {
|
|
class DynamicModulePlugin : Plugin<Project> {
|
|
var mainProjectName: String = ""
|
|
var mainProjectName: String = ""
|
|
|
|
+ var oldJavaSrcDirs:Set<File> = emptySet()
|
|
override fun apply(target: Project) {
|
|
override fun apply(target: Project) {
|
|
target.gradle.addProjectEvaluationListener(object : ProjectEvaluationListener {
|
|
target.gradle.addProjectEvaluationListener(object : ProjectEvaluationListener {
|
|
override fun beforeEvaluate(project: Project) {
|
|
override fun beforeEvaluate(project: Project) {
|
|
@@ -20,17 +26,17 @@ class DynamicModulePlugin : Plugin<Project> {
|
|
override fun afterEvaluate(project: Project, state: ProjectState) {
|
|
override fun afterEvaluate(project: Project, state: ProjectState) {
|
|
println(">>>>>>>>>>> afterEvaluate:${project.name}")
|
|
println(">>>>>>>>>>> afterEvaluate:${project.name}")
|
|
project.plugins.withId("com.android.application") {
|
|
project.plugins.withId("com.android.application") {
|
|
|
|
+ mainProjectName = project.name
|
|
val android = project.extensions.getByType(BaseAppModuleExtension::class.java)
|
|
val android = project.extensions.getByType(BaseAppModuleExtension::class.java)
|
|
android.sourceSets.maybeCreate("main")
|
|
android.sourceSets.maybeCreate("main")
|
|
android.sourceSets.getByName("main") { sourceSet ->
|
|
android.sourceSets.getByName("main") { sourceSet ->
|
|
|
|
+ println(">>>>>>>>>>> java:srcDirs:${sourceSet.java.srcDirs}")
|
|
|
|
+ oldJavaSrcDirs = sourceSet.java.srcDirs
|
|
sourceSet.java.setSrcDirs(listOf("src/custom/java"))
|
|
sourceSet.java.setSrcDirs(listOf("src/custom/java"))
|
|
println(">>>>>>>>>>> java:setSrcDirs:${project.projectDir}")
|
|
println(">>>>>>>>>>> java:setSrcDirs:${project.projectDir}")
|
|
}
|
|
}
|
|
android.dynamicFeatures.add(":dynamic_core")
|
|
android.dynamicFeatures.add(":dynamic_core")
|
|
println(">>>>>>>>>>> dynamicFeature:add:dynamic_core")
|
|
println(">>>>>>>>>>> dynamicFeature:add:dynamic_core")
|
|
- }
|
|
|
|
- project.plugins.withId("com.android.application") {
|
|
|
|
- mainProjectName = project.name
|
|
|
|
project.dependencies.add("implementation", "io.nexilis:ui-api-dm:5.0.12")
|
|
project.dependencies.add("implementation", "io.nexilis:ui-api-dm:5.0.12")
|
|
println(">>>>>>>>>>> implementation:io.nexilis:ui-api-dm")
|
|
println(">>>>>>>>>>> implementation:io.nexilis:ui-api-dm")
|
|
project.dependencies.add("implementation", "io.nexilis:ss:5.0.12")
|
|
project.dependencies.add("implementation", "io.nexilis:ss:5.0.12")
|
|
@@ -56,6 +62,36 @@ class DynamicModulePlugin : Plugin<Project> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
+
|
|
|
|
+ target.gradle.addBuildListener(object: BuildListener {
|
|
|
|
+ override fun settingsEvaluated(settings: Settings) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ override fun projectsLoaded(gradle: Gradle) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ override fun projectsEvaluated(gradle: Gradle) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ override fun buildFinished(result: BuildResult) {
|
|
|
|
+ target.project(":$mainProjectName") {
|
|
|
|
+ println(">>>>>>>>>>> project:${it.name}")
|
|
|
|
+ val android = it.extensions.getByType(BaseAppModuleExtension::class.java)
|
|
|
|
+ android.sourceSets.getByName("main") { sourceSet ->
|
|
|
|
+ sourceSet.java.setSrcDirs(oldJavaSrcDirs)
|
|
|
|
+ println(">>>>>>>>>>> java:setSrcDirs:${sourceSet.java.srcDirs}")
|
|
|
|
+ }
|
|
|
|
+ val tmpBaseDir = File(it.projectDir, "src/custom")
|
|
|
|
+ println(">>>>>>>>>>> delete:dir:${tmpBaseDir.toPath()}")
|
|
|
|
+ if (tmpBaseDir.exists()) {
|
|
|
|
+ tmpBaseDir.deleteRecursively()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|