我已经为Kotlin Multiplatform
和Andrid
(移动共享库)创建了一个新的iOS
项目。该项目运行正常,但是每次我运行Gradle
同步时,每次都要花费 5分钟以上。总是卡在同一行:
Gradle:为根项目“ MyProject”构建模型“ org.jetbrains.kotlin.gradle.KotlinMPPGradleModel”
为什么要花这么长时间?
我正在使用Gradle
5.1版。
这是我的build.gradle
文件:
buildscript {
ext.kotlin_version = '1.3.11'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.8.1"
}
}
plugins {
id 'kotlin-multiplatform' version '1.3.11'
}
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://jitpack.io' }
}
repositories {
mavenCentral()
}
group 'com.example'
version '0.0.1'
apply plugin: "com.android.library"
apply plugin: "com.jfrog.artifactory"
apply plugin: 'maven-publish'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName version
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions.incremental = false
}
kotlin {
targets {
fromPreset(presets.android, 'android')
// This preset is for iPhone emulator
// Switch here to presets.iosArm64 to build library for iPhone device
fromPreset(presets.iosX64, 'ios') {
compilations.main.outputKinds('FRAMEWORK')
}
}
sourceSets {
commonMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-common'
}
}
commonTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test-common'
implementation 'org.jetbrains.kotlin:kotlin-test-annotations-common'
}
}
androidMain {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib'
}
}
androidTest {
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-test'
implementation 'org.jetbrains.kotlin:kotlin-test-junit'
}
}
iosMain {
}
iosTest {
}
}
}
configurations {
compileClasspath
}
问题的屏幕截图:
答案 0 :(得分:3)
存在一个已知的问题,即每次同步时都会重新获取Kotlin / Native依赖项,这可能是您所看到的。您可以查看详细信息并按照here进行操作。
发布到该问题后,您可以尝试一种解决方法,该解决方法实际上是将{ content { excludeGroup("Kotlin/Native" } }
添加到repositories
块中的每个项目中。
答案 1 :(得分:1)
正如@Brucelet指出的那样,这是known issue。为了补充他的答案,这是Groovy
中解决方法的完整实现:
repositories {
mavenCentral().content() {
excludeGroup "Kotlin/Native"
}
google().content() {
excludeGroup "Kotlin/Native"
}
jcenter() {
content {
excludeGroup("Kotlin/Native")
}
}
maven {
url 'https://jitpack.io'
content {
excludeGroup("Kotlin/Native")
}
}
}
和Kotlin DSL
中的
repositories {
mavenLocal().apply {
content {
excludeGroup("Kotlin/Native")
}
}
maven {
url = uri("https://dl.bintray.com/soywiz/soywiz")
content {
includeGroup("com.soywiz")
excludeGroup("Kotlin/Native")
}
}
jcenter() {
content {
excludeGroup("Kotlin/Native")
}
}
google().apply {
content {
excludeGroup("Kotlin/Native")
}
}
}
答案 2 :(得分:0)
尝试使用--parallel选项从命令行运行Gradle任务。
否则,请参考本指南以介绍Gradle执行https://guides.gradle.org/performance/