Проблема AddDependency в плагине платформы IntelliJ для Android Studio для создания нового шаблона проектаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Проблема AddDependency в плагине платформы IntelliJ для Android Studio для создания нового шаблона проекта

Сообщение Anonymous »

Я пытаюсь создать новый шаблон проекта в IntelliJ IDEA CE для Android Studio. Я запустил проект на основе этой ссылки https://github.com/JetBrains/intellij-p ... n-template. Я успешно это сделал, но мне хотелось бы добавить больше зависимостей к шаблону по умолчанию, который создает плагин, а не к самому плагину. В основном хочу добавить больше зависимостей компоновки во время создания.
Когда я использую предоставленный метод addDependency(""), не удается создать новый проект в Android Studio.
Создание плагина в Intellij IDEA проходит нормально и не вызывает ошибок. Он собирается и устанавливается без проблем.
Это версия Intellij IDEA, которую я использую.

IntelliJ IDEA 2024.3 .1 (Community Edition)
Сборка № IC-243.22562.145, построенная 9 декабря 2024 г.
Версия для выполнения: 21.0.5+8-b631.28 amd64 (JCEF 122.1.9)
ВМ: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains s.r.o.
Инструментарий: sun.awt.windows.WToolkit
Windows 10.0
GC: G1 Молодое поколение, G1 Параллельный сборщик мусора, G1 старого поколения
Память: 2048 МБ
Ядер: 12
Реестр:
ide.experimental.ui=true
i18n.locale=
llm .show.ai.promotion.window.on.start=false
Плагины, не входящие в комплект:
DevKit (243.22562.145)
org.jetbrains.android (243.22562.145)
Kotlin: 243.22562.145-IJ

Это это Android Studio

Android Studio Ladybug | 2024.2.1 Исправление 3
Сборка № AI-242.23339.11.2421.12700392, построенная 22 ноября 2024 г.
Версия времени выполнения: 21.0.3+-12282718-b509.11 amd64
ВМ: OpenJDK 64-битная серверная виртуальная машина от JetBrains s.r.o.
Инструментарий: sun.awt.windows.WToolkit
Windows 10.0
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Память: 2048M
Ядра: 12
Реестр:
ide.experimental.ui=true
i18n.locale=
Плагины, не входящие в комплект:
com.template.r2creations24.demo (2.0.2)

Это рецепт моего проекта

Код: Выделить всё

import com.android.tools.idea.wizard.template.ModuleTemplateData
import com.android.tools.idea.wizard.template.PackageName
import com.android.tools.idea.wizard.template.RecipeExecutor
import com.android.tools.idea.wizard.template.impl.activities.common.addAllKotlinDependencies
import com.android.tools.idea.wizard.template.impl.activities.common.addLifecycleDependencies
import com.android.tools.idea.wizard.template.impl.activities.common.addMaterial3Dependency
import com.android.tools.idea.wizard.template.impl.activities.common.generateManifest

private const val COMPOSE_BOM_VERSION = "2024.12.01"
private const val COMPOSE_KOTLIN_COMPILER_VERSION = "1.5.1"

fun RecipeExecutor.projectRecipe(
moduleData: ModuleTemplateData,
activityName: String,
packageName: PackageName,
defaultPreview : String,
greeting : String,
isLauncher : Boolean,
canAddComposeDependencies: Boolean
) {
addAllKotlinDependencies(moduleData)
requireJavaVersion("1.8", true)
setBuildFeature("compose", true)
// Note: kotlinCompilerVersion default is declared in TaskManager.COMPOSE_KOTLIN_COMPILER_VERSION
setComposeOptions(kotlinCompilerExtensionVersion = COMPOSE_KOTLIN_COMPILER_VERSION)
addMaterial3Dependency()
addLifecycleDependencies(true)

generateManifest(
moduleData = moduleData,
activityClass = activityName,
activityThemeName = moduleData.themesData.main.name,
packageName = packageName,
isLauncher = isLauncher,
hasNoActionBar = true,
generateActivityTitle = true
)

applyPlugin("org.jetbrains.kotlin.plugin.compose", "2.0.0")

if (canAddComposeDependencies) {

addDependency(mavenCoordinate = "androidx.lifecycle:lifecycle-runtime-ktx:+")
addDependency(mavenCoordinate = "androidx.activity:activity-compose:+")
addPlatformDependency(mavenCoordinate = "androidx.compose:compose-bom:$COMPOSE_BOM_VERSION")
addPlatformDependency(mavenCoordinate = "androidx.compose:compose-bom:$COMPOSE_BOM_VERSION", configuration = "androidTestImplementation")

val composeUiFormattedVersion = moduleData.let { ":$it"  } ?: ""
addDependency(mavenCoordinate = "androidx.compose.ui:ui$composeUiFormattedVersion")
addDependency(mavenCoordinate = "androidx.compose.ui:ui-graphics")
addDependency(mavenCoordinate = "androidx.compose.ui:ui-tooling", configuration = "debugImplementation")
addDependency(mavenCoordinate = "androidx.compose.ui:ui-tooling-preview")
addDependency(mavenCoordinate = "androidx.compose.ui:ui-test-manifest", configuration="debugImplementation")
addDependency(mavenCoordinate = "androidx.compose.ui:ui-test-junit4", configuration="androidTestImplementation")

addDependency(mavenCoordinate = "androidx.compose.material3:material3")
}

val themeName = "${moduleData.themesData.appName}Theme"

val emptyActivity = emptyActivity(packageName, activityName, defaultPreview, greeting, themeName)
val emptyActivityPath = moduleData.srcDir.resolve("$activityName.kt")
save(emptyActivity, emptyActivityPath)
open(emptyActivityPath)
}

CanAddComposeDependities — это логическое значение, которое проверяется (или нет) на экране нового приложения в Android Studio. Если не отмечено, все работает отлично. Когда я это проверяю, создание нового приложения завершается неудачно.
Просто нужно вручную добавить новые зависимости для создания нового приложения. Выполнение этого вручную противоречит цели проекта. Если я перенесу какой-либо отдельный

addDependency()

из оператора if . Тогда новый проект не может быть собран.
Оглядываясь назад, можно заметить, что

addMaterial3Dependency()

Material3 тоже не добавляет, но это не выдает ошибку и не приводит к невозможности создания нового приложения из шаблона.
Вот трассировка стека

java.lang.NoSuchMethodError: 'void com.android.tools.idea.wizard.template.RecipeExecutor.addDependency$default(com.android.tools.idea.wizard.template.RecipeExecutor, java.lang.String , java.lang.String, java.lang.String, java.io.File, логическое значение, int, java.lang.Object)'
at com.template.r2creations24.demo.emptyActivity.ProjectRecipeKt.projectRecipe(ProjectRecipe.kt:42)
at com.template.r2creations24.demo.emptyActivity.ProjectTemplateKt$projectTemplate$1$2.invoke(ProjectTemplate.kt:76)
на com.template.r2creations24.demo.emptyActivity.ProjectTemplateKt$projectTemplate$1$2.invoke(ProjectTemplate.kt :75)
в com.android.tools.idea.npw.model.NewTemplateRendererKt$doRender$1.run(NewTemplateRenderer.kt:98)
на com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java :147)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction$lambda$4(AnyThreadWriteThreadingSupport.kt:318)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:328)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:318)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:890)
на com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:145)
в com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:226)
at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:188)
at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:154)
at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$run$0(WriteCommandAction.java:125)
в com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:229)
at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread$lambda$1(AnyThreadWriteThreadingSupport.kt:184)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runIntendedWriteActionOnCurrentThread(AnyThreadWriteThreadingSupport.kt:183)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:836)
на com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:424)
в com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:101)
на com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithImplicitRead(AnyThreadWriteThreadingSupport.kt:122)
в com.intellij.openapi.application.impl.ApplicationImpl.runWithImplicitRead(ApplicationImpl.java:1162)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:78)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:119)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
at java.desktop/java.awt.event.InvocateEvent.dispatch(Неизвестно Источник)
в java.desktop/java.awt.EventQueue.dispatchEventImpl(неизвестный источник)
в java.desktop/java.awt.EventQueue$4.run(неизвестный источник)
в java. Desktop/java.awt.EventQueue$4.run(Неизвестный источник)
at java.base/java.security.AccessController.doPrivileged(неизвестный источник)
в java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(неизвестный источник)
в java.desktop/java.awt. EventQueue.dispatchEvent(Неизвестный источник)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:696)
at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$16(IdeEventQueue.kt:590)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWithoutImplicitRead(AnyThreadWriteThreadingSupport.kt:117)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:590)
at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:73)
на com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:357)
в com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1$1.compute(IdeEventQueue.kt:356)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:843)в com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:356)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.invoke(IdeEventQueue.kt:351 )
at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke$lambda$0(IdeEventQueue.kt:1035)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java :24)
в com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:84)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:910)
at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
на com.intellij.ide.IdeEventQueueKt$performActivity$runnableWithWIL$1.invoke(IdeEventQueue.kt:1035)
в com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1036)
на com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1036)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$10(IdeEventQueue.kt:351)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:397)
на java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
на java.desktop/java.awt.EventDispatchThread .pumpEventsForFilter(неизвестный источник)
в java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(неизвестный источник)
в java.desktop/java.awt.EventDispatchThread.pumpEvents(неизвестный источник)
в java.desktop/java.awt .EventDispatchThread.pumpEvents(неизвестный источник)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

Я изменил различные вещи в своем коде, чтобы быть более близким к различным шаблонам, которые я видел разные посты, но безуспешно.
Я видел этот пост https://cs.android.com/android-studio/p ... /template/ impl/activities/common/kotlinMacros.kt, который показывает

addComposeDependities()

Я пробовал этот метод выше, но его не существует. Я не могу его импортировать. Поэтому я создал свою собственную функцию расширения. Код в нем теперь просто помещается внутри оператора if canComposeDependency. Трассировка стека продолжает идти к

addDependency()

сбою.
Буду признателен за любую помощь в том, как добавить больше зависимостей в новый шаблон приложения.
***********ОБНОВЛЕНИЕ< /p>
Я только что попробовал плагин в IntelliJ IDEA CE. Он работает отлично. Точно так, как и ожидалось. У меня все еще возникают проблемы с плагином в Android Studio. Та же проблема, о которой говорилось выше. Не удается выполнить метод addDependency() с NoSuchMethodError.
У кого-нибудь есть идеи?
Интересно, есть ли проблемы с Android плагин, используемый в Android Studio. В моей Android Studio —
org.jetbrains.android:242.23339.11
, пока мой IntelliJ IDEA CE используетorg.jetbrains.android:243.22562.218

Подробнее здесь: https://stackoverflow.com/questions/792 ... create-new
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема AddDependency в плагине платформы IntelliJ для Android Studio для создания нового шаблона проекта
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Проблема AddDependency в плагине платформы IntelliJ для Android Studio для создания нового шаблона проекта
    Anonymous » » в форуме Android
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как получить доступ к структуре PSI для Java и Python в одном плагине Intellij
    Гость » » в форуме JAVA
    0 Ответы
    33 Просмотры
    Последнее сообщение Гость
  • Как мне «зарегистрировать» новый тип модуля в плагине IntelliJ?
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Использование функции рефакторинга в плагине Intellij
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»