Wizard: relocate AndroidManifest.xml for MPP module

This commit is contained in:
Ilya Kirillov
2020-07-23 22:09:27 +03:00
committed by Kirill Shmakov
parent b3d48cda8c
commit f330cd3697
7 changed files with 42 additions and 15 deletions
@@ -56,6 +56,7 @@ kotlin {
}
android {
compileSdkVersion 29
sourceSets.main.manifest.srcFile('src/androidMain/AndroidManifest.xml')
defaultConfig {
minSdkVersion 24
targetSdkVersion 29
@@ -50,6 +50,7 @@ kotlin {
}
android {
compileSdkVersion(29)
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
defaultConfig {
minSdkVersion(24)
targetSdkVersion(29)
@@ -54,6 +54,7 @@ kotlin {
}
android {
compileSdkVersion 29
sourceSets.main.manifest.srcFile('src/androidMain/AndroidManifest.xml')
defaultConfig {
minSdkVersion 24
targetSdkVersion 29
@@ -48,6 +48,7 @@ kotlin {
}
android {
compileSdkVersion(29)
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
defaultConfig {
minSdkVersion(24)
targetSdkVersion(29)
@@ -3,14 +3,26 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.FreeIR
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage
import java.nio.file.Path
interface AndroidIR : GradleIR
//TODO parematrize
data class AndroidConfigIR(val javaPackage: JavaPackage?) : AndroidIR, FreeIR {
data class AndroidConfigIR(val javaPackage: JavaPackage?, val newManifestPath: Path?) : AndroidIR, FreeIR {
override fun GradlePrinter.renderGradle() {
sectionCall("android", needIndent = true) {
call("compileSdkVersion") { +"29" }; nlIndented() // TODO dehardcode
if (newManifestPath != null) {
when (dsl) {
GradlePrinter.GradleDsl.KOTLIN -> {
+"""sourceSets["main"].manifest.srcFile("$newManifestPath")"""
}
GradlePrinter.GradleDsl.GROOVY -> {
+"""sourceSets.main.manifest.srcFile('$newManifestPath')"""
}
}
nlIndented()
}
sectionCall("defaultConfig", needIndent = true) {
if (javaPackage != null) {
assignmentOrCall("applicationId") { +javaPackage.asCodePackage().quotified }; nlIndented()
@@ -40,6 +40,21 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
ModuleConfiguratorWithModuleType,
GradleModuleConfigurator {
fun getNewAndroidManifestPath(module: Module): Path?
private fun getManifestPathOrDefault(module: Module): Path =
getNewAndroidManifestPath(module) ?: ("src" / "main" / "AndroidManifest.xml")
fun getAndroidManifestXml(module: Module) = FileTemplateDescriptor(
"android/AndroidManifest.xml.vm",
getManifestPathOrDefault(module)
)
fun getAndroidManifestForLibraryXml(module: Module) = FileTemplateDescriptor(
"android/AndroidManifestLibrary.xml.vm",
getManifestPathOrDefault(module)
)
override val moduleType: ModuleType
get() = ModuleType.android
@@ -55,10 +70,11 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
+GradleOnlyPluginByNameIR("kotlin-android-extensions", priority = 3)
+AndroidConfigIR(
when (reader.createAndroidPlugin(module)) {
javaPackage = when (reader.createAndroidPlugin(module)) {
AndroidGradlePlugin.APPLICATION -> module.javaPackage(configurationData.pomIr)
AndroidGradlePlugin.LIBRARY -> null
}
},
newManifestPath = getNewAndroidManifestPath(module)
)
+createRepositories(configurationData.kotlinVersion).map(::RepositoryIR)
}
@@ -93,16 +109,6 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
"src" / "main" / "res" / "layout" / "activity_main.xml"
)
val androidManifestXml = FileTemplateDescriptor(
"android/AndroidManifest.xml.vm",
"src" / "main" / "AndroidManifest.xml"
)
val androidManifestForLibraryXml = FileTemplateDescriptor(
"android/AndroidManifestLibrary.xml.vm",
"src" / "main" / "AndroidManifest.xml"
)
val colorsXml = FileTemplateDescriptor(
"android/colors.xml",
"src" / "main" / "res" / "values" / "colors.xml"
@@ -139,6 +145,9 @@ object AndroidTargetConfigurator : TargetConfigurator,
override val text = KotlinNewProjectWizardBundle.message("module.configurator.android")
override fun getNewAndroidManifestPath(module: Module): Path? =
Defaults.SRC_DIR / "${module.name}Main" / "AndroidManifest.xml"
override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin =
inContextOfModuleConfigurator(module) { androidPlugin.reference.settingValue }
@@ -167,7 +176,7 @@ object AndroidTargetConfigurator : TargetConfigurator,
TemplatesPlugin.addFileTemplates.execute(
listOf(
FileTemplate(AndroidModuleConfigurator.FileTemplateDescriptors.androidManifestForLibraryXml, modulePath, settings)
FileTemplate(getAndroidManifestForLibraryXml(module), modulePath, settings)
)
)
}
@@ -31,6 +31,8 @@ object AndroidSinglePlatformModuleConfigurator :
AndroidModuleConfigurator {
override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid
override fun getNewAndroidManifestPath(module: Module): Path? = null
@NonNls
override val id = "android"
@@ -99,7 +101,7 @@ object AndroidSinglePlatformModuleConfigurator :
TemplatesPlugin.addFileTemplates.execute(
listOf(
FileTemplate(AndroidModuleConfigurator.FileTemplateDescriptors.activityMainXml, modulePath, settings),
FileTemplate(AndroidModuleConfigurator.FileTemplateDescriptors.androidManifestXml, modulePath, settings),
FileTemplate(getAndroidManifestXml(module), modulePath, settings),
FileTemplate(AndroidModuleConfigurator.FileTemplateDescriptors.colorsXml, modulePath, settings),
FileTemplate(AndroidModuleConfigurator.FileTemplateDescriptors.stylesXml, modulePath, settings),
FileTemplate(AndroidModuleConfigurator.FileTemplateDescriptors.mainActivityKt(javaPackage), modulePath, settings)