Correctly propagate dependencies in multiplatform projects with Android
This commit is contained in:
@@ -14,7 +14,7 @@ dependencies {
|
||||
|
||||
compile(ideaSdkDeps("openapi", "idea"))
|
||||
compile(ideaPluginDeps("gradle-tooling-api", plugin = "gradle"))
|
||||
compile(ideaPluginDeps("android", "android-common", "sdklib", "sdk-common", "layoutlib-api", plugin = "android"))
|
||||
compile(ideaPluginDeps("android", "android-common", "sdklib", "sdk-common", "sdk-tools", "layoutlib-api", plugin = "android"))
|
||||
compile(preloadedDeps("dx", subdir = "android-5.0/lib"))
|
||||
|
||||
testCompile(projectDist(":kotlin-test:kotlin-test-jvm"))
|
||||
|
||||
+25
-1
@@ -34,8 +34,12 @@ package org.jetbrains.kotlin.android.configure
|
||||
|
||||
import com.android.tools.idea.gradle.project.sync.idea.data.service.AndroidProjectKeys
|
||||
import com.intellij.openapi.externalSystem.model.DataNode
|
||||
import com.intellij.openapi.externalSystem.model.project.ModuleData
|
||||
import com.intellij.openapi.externalSystem.model.project.ProjectData
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import org.gradle.tooling.model.idea.IdeaProject
|
||||
import org.jetbrains.kotlin.idea.inspections.gradle.KotlinGradleModelFacade
|
||||
import org.jetbrains.kotlin.idea.inspections.gradle.findModulesByNames
|
||||
|
||||
class AndroidGradleModelFacade : KotlinGradleModelFacade {
|
||||
override fun getResolvedKotlinStdlibVersionByModuleData(moduleData: DataNode<*>, libraryIds: List<String>): String? {
|
||||
@@ -51,4 +55,24 @@ class AndroidGradleModelFacade : KotlinGradleModelFacade {
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
override fun getDependencyModules(ideModule: DataNode<ModuleData>, gradleIdeaProject: IdeaProject): Collection<DataNode<ModuleData>> {
|
||||
val ideProject = ideModule.parent as DataNode<ProjectData>
|
||||
ExternalSystemApiUtil.find(ideModule, AndroidProjectKeys.JAVA_MODULE_MODEL)?.let { javaModuleModel ->
|
||||
val moduleNames = javaModuleModel.data.javaModuleDependencies.map { it.moduleName }
|
||||
return findModulesByNames(moduleNames, gradleIdeaProject, ideProject)
|
||||
}
|
||||
ExternalSystemApiUtil.find(ideModule, AndroidProjectKeys.ANDROID_MODEL)?.let { androidModel ->
|
||||
val libraries = androidModel.data.mainArtifact.dependencies.javaLibraries
|
||||
val projects = androidModel.data.mainArtifact.dependencies.projects
|
||||
val projectIds = libraries.mapNotNull { it.project } + projects
|
||||
return projectIds.mapNotNullTo(LinkedHashSet()) { projectId ->
|
||||
ExternalSystemApiUtil.findFirstRecursively(ideProject) {
|
||||
(it.data as? ModuleData)?.id == projectId
|
||||
} as DataNode<ModuleData>?
|
||||
}
|
||||
|
||||
}
|
||||
return emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user