Код: Выделить всё
:app). Это отлично работало в Нарвале.
Когда я запускаю этот код через значок желоба:
package com.example.sample
fun main() {
println("Hello")
}
Код: Выделить всё
Initialization script '...' line: 27
A problem occurred configuring project ':app'.
> Could not create task ':app:com.example.sample.HelloKt.main()'.
> SourceSet with name 'main' not found.
Код: Выделить всё
# line 27 (the failing line)
classpath = project.sourceSets[sourceSetName].runtimeClasspath
Код: Выделить всё
def gradleProjectId = 'Sample:app'
def runAppTaskName = 'com.example.sample.HelloKt.main()'
def mainClassToRun = 'com.example.sample.HelloKt'
def javaExePath = '/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java'
def _workingDir = '/Users/XXXXX/AndroidStudioProjects/Sample'
def sourceSetName = 'main'
def isOlderThan64 = GradleVersion.current().getBaseVersion().compareTo(GradleVersion.version("6.4")) < 0
allprojects {
afterEvaluate { project ->
if (project.rootProject.name + project.path == gradleProjectId) {
def overwrite = project.tasks.findByName(runAppTaskName) != null
project.tasks.create(name: runAppTaskName, overwrite: overwrite, type: JavaExec) {
if (javaExePath) executable = javaExePath
if (project.pluginManager.hasPlugin("org.jetbrains.kotlin.multiplatform")) {
project.kotlin.targets.each { target ->
target.compilations.each { compilation ->
if (compilation.defaultSourceSetName == sourceSetName) {
classpath = compilation.output.allOutputs + compilation.runtimeDependencyFiles
}
}
}
} else {
classpath = project.sourceSets[sourceSetName].runtimeClasspath
}
if (isOlderThan64) {
main = mainClassToRun
} else {
mainClass = mainClassToRun
}
if(_workingDir) workingDir = _workingDir
standardInput = System.in
}
}
}
}
- "Бег с покрытием" работает, поэтому класс () и путь к классам верны.
Код: Выделить всё
com.example.sample.HelloKt - Похоже, что Otter генерирует временную задачу Gradle для запуска функции, и эта задача завершается сбоем, поскольку модули Android не имеют стандартного основного исходного кода JVM.
- Недействительные кеши, удалены .gradle и .idea
- Сбросить все конфигурации запуска
- Конфигурация запуска Kotlin вручную
Основной класс: com.example.sample.HelloKt - Путь к классу модуля: :app
→ Сбой с: «Класс ... не найден в модуле ...»
→ Сбой из-за плагина Android vs Конфликт плагинов Java
Вопрос
Есть ли способ (настройка IDE или обходной путь Gradle) заставить Android Studio Otter запускать эту забавную функцию main() как простое приложение Kotlin/JVM без создания сбойной временной задачи Gradle?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ceset-main
Мобильная версия