Кт342 параметры. Параметры и характеристики транзистора КТ342: полное описание

Какие основные параметры имеет транзистор КТ342. Каковы его электрические характеристики. Чем отличаются разные варианты КТ342. Где применяется этот транзистор.

Основные параметры и характеристики транзистора КТ342

Транзистор КТ342 — это универсальный кремниевый n-p-n транзистор, предназначенный для применения в импульсных и высокочастотных схемах. Он выпускается в нескольких модификациях, отличающихся характеристиками. Рассмотрим основные параметры этого транзистора:

  • Структура: n-p-n
  • Максимальное напряжение коллектор-эмиттер: от 10 В до 60 В (зависит от модификации)
  • Максимальный ток коллектора: 50 мА (300 мА в импульсном режиме)
  • Максимальная рассеиваемая мощность коллектора: 250 мВт
  • Статический коэффициент передачи тока: от 50 до 1000 (зависит от модификации)
  • Граничная частота коэффициента передачи тока: от 150 МГц до 300 МГц
  • Емкость коллекторного перехода: не более 8 пФ

Как видим, КТ342 обладает хорошим сочетанием частотных и усилительных свойств, что делает его универсальным транзистором для различных применений.


Модификации транзистора КТ342 и их особенности

Транзистор КТ342 выпускается в нескольких модификациях, отличающихся характеристиками:

  • КТ342А — базовая модель
  • КТ342Б — повышенный коэффициент усиления
  • КТ342В — максимальный коэффициент усиления
  • КТ342Г — повышенное напряжение коллектор-эмиттер
  • КТ342АМ, КТ342БМ, КТ342ВМ — модификации в пластмассовом корпусе

Чем отличаются эти модификации? Давайте сравним их ключевые параметры:

Модификация Коэффициент усиления h21э Макс. напряжение коллектор-эмиттер
КТ342А 100-250 30 В
КТ342Б 200-500 25 В
КТ342В 400-1000 10 В
КТ342Г 50-120 60 В

Как видим, модификации позволяют выбрать оптимальное сочетание коэффициента усиления и максимального напряжения для конкретной схемы.

Область применения транзистора КТ342

Благодаря своим характеристикам, транзистор КТ342 находит широкое применение в различных электронных устройствах:

  • Усилители высокой и промежуточной частоты
  • Генераторы и преобразователи частоты
  • Импульсные схемы
  • Переключающие устройства
  • Маломощные стабилизаторы напряжения
  • Схемы управления в автоматике

Универсальность КТ342 позволяет использовать его как в аналоговых, так и в цифровых схемах, что делает его популярным выбором для разработчиков электроники.


Конструкция и корпус транзистора КТ342

Транзистор КТ342 выпускается в двух вариантах корпуса:

  • Металлостеклянный корпус (КТ342А, КТ342Б, КТ342В, КТ342Г)
  • Пластмассовый корпус (КТ342АМ, КТ342БМ, КТ342ВМ)

Вес транзистора в металлостеклянном корпусе не превышает 0.5 г, в пластмассовом — 0.3 г. Какие преимущества дает каждый тип корпуса?

  • Металлостеклянный корпус обеспечивает лучший теплоотвод и экранирование
  • Пластмассовый корпус дешевле в производстве и легче

Выбор типа корпуса зависит от конкретного применения транзистора и требований к устройству.

Маркировка транзистора КТ342

Для идентификации транзисторов КТ342 используется несколько способов маркировки:

  1. Буквенно-цифровое обозначение на корпусе (например, КТ342А)
  2. Цветовая маркировка (для пластмассовых корпусов):
    • КТ342АМ: синяя метка на боковой части, тёмно-красная на торце
    • КТ342БМ: синяя метка на боковой части, жёлтая на торце
    • КТ342ВМ: синяя метка на боковой части, тёмно-зелёная на торце
  3. Условные обозначения (для пластмассовых корпусов):
    • КТ342АМ: буква А и треугольник
    • КТ342БМ: буква Б и треугольник
    • КТ342ВМ: буква В и треугольник

Правильная идентификация транзистора важна для обеспечения корректной работы схемы и предотвращения ошибок при замене компонентов.


Аналоги транзистора КТ342

При необходимости замены КТ342 можно использовать ряд аналогов. Вот некоторые из них:

  • КТ342А: BC107A, 2N929, 2SC3879S
  • КТ342Б: 2SC454B, 2SC55, 2SC4618Q
  • КТ342В: BC107B, 2SC4998, 2SC4997
  • КТ342Г: BC239B, KTN5019, KTC383

При выборе аналога нужно учитывать не только основные параметры, но и особенности конкретной схемы. Как правильно подобрать аналог?

  1. Сравнить ключевые параметры (напряжение, ток, коэффициент усиления)
  2. Проверить частотные характеристики
  3. Убедиться в совместимости корпуса и выводов
  4. Протестировать работу схемы с выбранным аналогом

Правильный выбор аналога позволит сохранить работоспособность устройства при отсутствии оригинального компонента.

Особенности применения транзистора КТ342 в схемах

При использовании КТ342 в электронных схемах следует учитывать некоторые особенности:

  • Чувствительность к статическому электричеству
  • Зависимость параметров от температуры
  • Необходимость обеспечения правильного теплоотвода
  • Влияние паразитных емкостей на высоких частотах

Как обеспечить оптимальную работу КТ342 в схеме? Вот несколько рекомендаций:


  1. Использовать антистатические меры предосторожности при монтаже
  2. Обеспечить температурную стабилизацию схемы
  3. При необходимости применять радиаторы для отвода тепла
  4. Минимизировать длину проводников в высокочастотных цепях
  5. Учитывать разброс параметров и при необходимости производить отбор транзисторов

Соблюдение этих рекомендаций поможет создать надежное и эффективно работающее устройство на базе транзистора КТ342.


Транзистор КТ342: КТ342А, КТ342Б, КТ342В, КТ342Г

Поиск по сайту

Новости


DC/DC с током потребления 7 мкА

ГЛАВНАЯ » ТРАНЗИСТОРЫ » КТ342

Транзистор КТ342 — универсальный, структуры n-p-n, эпитаксиально-планарный, кремниевый. Основное применение — импульсные устройства.
КТ342А, КТ342Б, КТ342В, КТ342Г выпускаются в металлостеклянном корпусе. Выводы гибкие. Тип прибора указывается на корпусе.
КТ342АМ, КТ342БМ, КТ342ВМ выпускаются в пластмассовом корпусе, также с гибкими выводами. Маркируются условными обозначениями:

КТ342АМ буква А и треугольник
КТ342БМ буква Б и треугольник
КТ342ВМ буква В и треугольник

Существует также маркировка цветными метками.

Тип На плоской боковой части На торце
КТ342АМ Синяя Тёмно-красная
КТ342БМ Синяя Жёлтая
КТ342ВМ Синяя Тёмно-зелёная

Металлостеклянные транзисторы весят не более 0.5 г, пластмассовые не более 0.3 г.

КТ342 цоколевка

Цоколевка КТ342 показана на рисунке.

Электрические параметры КТ342

• Коэффициент передачи тока (статический). Схема с общим эмиттером
при Uкб = 5 В, Iэ = 1 мА для КТ342А, КТ342Б, КТ342В, КТ342Г
и Iэ = 2 мА для КТ342АМ, КТ342БМ, КТ342ВМ:
  Т = +25°C:
КТ342А, КТ342АМ 100÷250
КТ342Б, КТ342БМ 200÷500
КТ342В, КТ342ВМ 400÷1000
КТ342Г 50 ÷ 125
  Т = −60°C:
КТ342А, КТ342АМ 25 ÷ 250
КТ342Б, КТ342БМ 50 ÷ 500
КТ342В, КТ342ВМ 100÷1000
  Т = +125°C:
КТ342А, КТ342АМ 100
КТ342Б, КТ342БМ
200
КТ342В, КТ342ВМ 400
• Граничная частота коэффициента передачи тока
при Uкб = 10 В, Iэ = 5 мА, не менее:
КТ342А, КТ342АМ 250 МГц
КТ342Б, КТ342В, КТ342Г, КТ342БМ, КТ342ВМ 300 МГц
• Граничное напряжение при Iэ = 5 мА, не менее:
Т ≤ +100°C:
КТ342А, КТ342АМ, КТ342Г 25 В
КТ342Б, КТ342БМ 20 В
КТ342В, КТ342ВМ 10 В
Т = +125°C:
КТ342А, КТ342АМ, КТ342Г 20 В
КТ342Б, КТ342БМ 15 В
КТ342В, КТ342ВМ 10 В
• Напряжение насыщения К-Э при Iк = 10 мА, Iб = 1 мА, не более   
0. 1 В
• Напряжение насыщения Б-Э при Iк = 10 мА, Iб = 1 мА, не более 0.9 В
• Ток коллектора (обратный) при Uкб = Uкб,макс, не более:
Т ≤ +25°C 0.05 мкА
Т ≤ +125°C КТ342А, КТ342Б, КТ342В, КТ342Г 10 мкА
• Ток К-Э (обратный) Rб = 10 кОм, Uкэ = Uкэ,макс, не более:
КТ342А, КТ342Б, КТ342В 30 мкА
КТ342Г 100 мкА
• Ток Э (обратный) при Uэб = 5 В, не более 30 мкА
• Ёмкость коллекторного перехода при Uкб = 5 В, не более 8 пФ

Предельные эксплуатационные показатели КТ342

• Напряжение К-Э (постоянное) при Rбэ = 10 кОм:
  Т ≤ +100°C
КТ342А, КТ342АМ 30 В
КТ342Б, КТ342БМ 25 В
КТ342В, КТ342ВМ 10 В
КТ342Г 60 В
  Т = +125°C
КТ342А, КТ342АМ 25 В
КТ342Б, КТ342БМ 20 В
КТ342В, КТ342ВМ 10 В
КТ342Г 45 В
• Напряжение Э-Б (постоянное) 5 В
• Ток коллектора (постоянный) 50 мА
• Ток коллектора (импульсный) при tи ≤ 40 мкс, Q ≥ 500   
300 мА
• Рассеиваемая мощность коллектора (постоянная):
  Т ≤ +25°C 250 мВт
  Т = +125°C 50 мВт
• Температура перехода (p-n) +150°C
• Рабочая температура (окружающей среды) −60 . .. +125°C

Транзистор КТ342 — DataSheet

Перейти к содержимому

Цоколевка транзистора КТ342

 

Параметры транзистора КТ342
Параметр Обозначение Маркировка Условия Значение Ед. изм.
Аналог КТ342А BC107A, 2N929, 2SC3879S *3, 2SC3193 *3, 2SC123 *3, 2N3291 *2, 2N3292 *2, 2SC33, BF185 *2, 2SC2839D *3, 2SC2839E *3, 2SC2839F *3, 2SC4399-3 *3, 2N4435 *2, 2N3293 *2, 2N3294 *2, 2SC105 *2, BF184 *2
КТ342Б 2SC454B, 2SC55 *2, 2SC4618Q *1, 2SC4618P *1, NTE319 *2, 2SC929 *3
КТ342В ВС107В, 2SC4998U *3, 2SC4998 *3, 2SC4997U *3, 2SC4997 *3
КТ342Г ВС239В, KTN5019 *2, KTC383 *2, EN916 *3, 2SC4098N *1, 2SC2413KN *1, 2SC4618N *1
КТ342АМ ВС109С, 2N3710 *2, 2N3707 *2, KTC9016 *2, СХ917 *2, BF594, KSC184 *2, SK3356 *2, 2SC710 *2, BF495 *2, BF494, BF255, 

2SC3000E, 2SC3000 *3, 2SC3000D *3, KF125 *2, BF254B, 2SC1032 *2, 2SC380A-R, 2SC380TM-R *2, 2SC2076 *2

КТ342БМ ВС239С, 2SC388A-TM, КТC388AY *2, KTN5020Y *2, 2SC3314, 2SC3544K *2, BF494A, 2SC3000F *2, КС239В *2
КТ342ВМ ВС108С, PN5134 *2
КТ342ГМ 2N4124, 2N3707, 2N3710, 

2SC3192 *2, KSC184 *2

КТ342ДМ 2N4123, 2SC644, KSC900 *2, 2SC870 *2, КС239В
Структура  — n-p-n
Максимально допустимая постоянная рассеиваемая мощность коллектора PK max,P*K, τ max,P**K, и max КТ342А 250 мВт
КТ342Б 250
КТ342В 250
КТ342Г 250
КТ342АМ 250
КТ342БМ 250
КТ342ВМ 250
КТ342ГМ 250
КТ342ДМ 250
Граничная частота коэффициента передачи тока транзистора для схемы с общим эмиттером fгр, f*h31б, f**h31э, f***max КТ342А ≥250 МГц
КТ342Б ≥300
КТ342В ≥300
КТ342Г ≥300
КТ342АМ ≥250
КТ342БМ ≥300
КТ342ВМ ≥300
КТ342ГМ ≥150
КТ342ДМ ≥150
Пробивное напряжение коллектор-база при заданном обратном токе коллектора и разомкнутой цепи эмиттера UКБО проб.U*КЭR проб., U**КЭО проб. КТ342А 35 В
КТ342Б 30
КТ342В 25
КТ342Г 10к 60*
КТ342АМ 35
КТ342БМ 30
КТ342ВМ 10к 25
КТ342ГМ 10к 30*
КТ342ДМ 25*
Пробивное напряжение эмиттер-база при заданном обратном токе эмиттера и разомкнутой цепи коллектора UЭБО проб. КТ342А 5 В
КТ342Б 5
КТ342В 5
КТ342Г 5
КТ342АМ 5
КТ342БМ 5
КТ342ВМ 5
КТ342ГМ 5
КТ342ДМ 5
Максимально допустимый постоянный ток коллектора IK max, I*К , и max КТ342А 50(300*) мА
КТ342Б 50(300*)
КТ342В 50(300*)
КТ342Г 50(300*)
КТ342АМ 50(300*)
КТ342БМ 50(300*)
КТ342ВМ 50(300*)
КТ342ГМ 50(300*)
КТ342ДМ 50(300*)
Обратный ток коллектора — ток через коллекторный переход при заданном обратном напряжении коллектор-база и разомкнутом выводе эмиттера IКБО, I*КЭR, I**КЭO КТ342А 25 В ≤0. 05 мкА
КТ342Б 20 В ≤0.05
КТ342В 10 В ≤0.05
КТ342Г 60 В ≤0.05
КТ342АМ 25 В ≤0.05
КТ342БМ 20 В ≤0.05
КТ342ВМ 10 В ≤0.05
КТ342ГМ 30 В ≤0.05
КТ342ДМ 25 В ≤0.05
Статический коэффициент передачи тока транзистора в режиме малого сигнала для схем с общим эмиттером h21э,  h*21Э КТ342А 5 В; 1 мА 100…250*
КТ342Б 5 В; 1 мА 200…500*
КТ342В 5 В; 1 мА 400…1000*
КТ342Г 5 В; 1 мА 50…120*
КТ342АМ 5 В; 2 мА 100…250*
КТ342БМ 5 В; 2 мА 200…500*
КТ342ВМ 5 В; 2 мА 400…1000*
КТ342ГМ 5 В; 2 мА 100…250*
КТ342ДМ 5 В; 2 мА 200…500*
Емкость коллекторного перехода cк,  с*12э КТ342А 5 В ≤8
пФ
КТ342Б 5 В ≤8
КТ342В 5 В ≤8
КТ342Г 5 В ≤8
КТ342АМ 5 В ≤8
КТ342БМ 5 В ≤8
КТ342ВМ 5 В ≤8
КТ342ГМ 5 В ≤8
КТ342ДМ 5 В ≤8
Сопротивление насыщения между коллектором и эмиттером  rКЭ нас,  r*БЭ нас, К**у. р. КТ342А ≤10 Ом, дБ
КТ342Б ≤10
КТ342В ≤10
КТ342Г ≤10
КТ342АМ ≤10
КТ342БМ ≤10
КТ342ВМ ≤10
КТ342ГМ ≤10
КТ342ДМ ≤10
Коэффициент шума транзистора Кш, r*b, P**вых КТ342А Дб, Ом, Вт
КТ342Б
КТ342В
КТ342Г
КТ342АМ
КТ342БМ
КТ342ВМ
КТ342ГМ
КТ342ДМ
Постоянная времени цепи обратной связи на высокой частоте τк, t*рас,  t**выкл,  t***пк(нс) КТ342А ≤200 пс
КТ342Б ≤300
КТ342В ≤700
КТ342Г
КТ342АМ ≤200
КТ342БМ ≤300
КТ342ВМ ≤700
КТ342ГМ
КТ342ДМ

Описание значений со звездочками(*,**,***) смотрите в таблице параметров биполярных транзисторов.

*1 — аналог по электрическим параметрам, тип корпуса отличается.

*2 — функциональная замена, тип корпуса аналогичен.

*3 —  функциональная замена, тип корпуса отличается.

 

Цветовая и кодовая маркировка транзисторов

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

kotlin — Невозможно подтвердить значение потока состояния в модели представления

Вы не можете вызвать toList на SharedFlow следующим образом:

Общий поток никогда не завершается. Вызов Flow.collect в общем потоке никогда не завершается нормально, как и сопрограмма, запущенная функцией Flow.launchIn .

Таким образом, вызов toList будет зависать навсегда, потому что поток никогда не достигает конечной точки, где он говорит «хорошо, это все элементы», и toList должен вернуть окончательное значение. Поскольку StateFlow в любом случае содержит только один элемент за раз, и вы не собираете данные за определенный период времени, вы, вероятно, просто хотите take(1).toList() .

Или используйте first() , если вам не нужен обтекающий список, который, похоже, вам не нужен — каждый элемент в StateFlow представляет собой List , что и clickRowRepository.fetchClickRows () тоже возвращается. Так expectValue — это List , тогда как factValue — это List> — так что они все равно не будут совпадать!


изменить ваше обновление (используя first() ) имеет несколько проблем.

Прежде всего, clickRowsFlow StateFlow в вашей ViewModel только обновляется, когда вы вызываете fetchAndInitialiseClickRows() , потому что это то, что извлекает значение и устанавливает его на StateFlow . Вы не вызываете это во втором примере, поэтому он не будет обновляться.

Во-вторых, этот StateFlow будет проходить через два значения состояния, верно? Первый — это исходный пустой список, второй — содержимое строки, которое вы получаете из репозитория. Поэтому, когда вы получаете доступ к этому StateFlow , он либо должен быть после того, как произошло обновление, либо (лучше) вам нужно игнорировать первое состояние и возвращать только второе один:

 val factValue = clickRowViewModel.clickRowsFlow
    .drop(1) // игнорировать начальное состояние
    .first() // затем берем первый результат после этого
// запускаем обновление -после- настройки потоковой коллекции,
// так что не стоит беспокоиться о состоянии гонки
clickRowsViewModel.fetchAndInitialiseClickRows()
 

Таким образом, вы подписываетесь на StateFlow и немедленно получаете (и сбрасываете) начальное состояние. Затем, когда происходит обновление, оно должно отправить подписчику другое значение, которое принимает эти первое новое значение в качестве конечного результата.


Но есть еще одна сложность — поскольку fetchAndInitialiseClickRows() запускает свою собственную сопрограмму и немедленно возвращает результат, это означает, что задача выборки и обновления выполняется асинхронно. Вам нужно дать ему время, чтобы закончить, прежде чем вы начнете утверждать какие-либо результаты от него.

Один из вариантов — запустить сопрограмму, а затем заблокировать ожидание появления результата:

 // запустить обновление
clickRowsViewModel.fetchAndInitialiseClickRows()
// запустить сбор как блокирующую операцию, которая завершится, когда вы получите
// этот второй результат
val factValue = clickRowViewModel.clickRowsFlow
    .дроп(1)
    .первый()
 

Это работает до тех пор, пока fetchAndInitialiseClickRows не завершится немедленно . Эта потребительская цепочка требует , чтобы было произведено по крайней мере два элемента , пока она подписана — если она никогда не увидит начальное состояние, она зависнет в ожидании этого второго (на самом деле третьего) значения, которое никогда не придет. Это вводит состояние гонки, и даже если оно «вероятно, хорошо на практике», это все равно делает тест хрупким.

Другой вариант — сначала подписаться, используя сопрограмму, чтобы выполнение могло продолжаться, и , затем запустить обновление — таким образом подписчик может увидеть начальное состояние, а затем обновление, которое приходит позже:

 // асинхронный запуск похож на запуск, но он возвращает `Deferred`, который выдает результат позже
вал фактическое значение = асинхронный {
    clickRowViewModel.clickRowsFlow
        .дроп(1)
        .первый()
}
// теперь можно начинать обновление
clickRowsViewModel.fetchAndInitialiseClickRows()
// затем используйте `await` для блокировки, пока результат не будет доступен
assertEquals (ожидаемое, фактическое значение. ожидание ())
 

Вы всегда должны убедиться, что вы справляетесь с ожиданием своих сопрограмм, иначе тест может закончиться раньше (т.е. вы делаете утверждение до того, как будут получены результаты). Как и в первом примере, вы запускаете сопрограмму для заполнения своего списка, но не гарантируете, что у нее есть время для завершения, прежде чем вы проверите содержимое списка.

В этом случае вам нужно будет сделать что-то вроде advanceUntilIdle() — взгляните на этот раздел о тестировании сопрограмм, там показаны некоторые способы их ожидания. Это также может работать для того, который вы запускаете с fetchAndInitialiseClickRows (поскольку он говорит, что ожидает других сопрограмм в планировщике, а не той же области), но я не совсем знаком с этим, вы можете изучить его, если хотите!

android — Внутренняя ошибка компилятора после обновления версии Kotlin до 1.5.30

Мне трудно обновить свой Android-проект, чтобы подготовить его для компоновки Jetpack …

Я начал с обновления всех своих реализации библиотек, поэтому я использую современные библиотеки, и все прошло хорошо. После этого я обновил свою версию Kotlin с 1.4.10 до 1. 5.31 в настройках сборки проекта

 скрипт сборки {
    доб.котлин_версия = '1.5.31'
...}
 

и проблемы побежали.

После обновления Kotlin проект больше не может собираться, процесс сборки выдает:

 Не удалось выполнить задачу ':app:compileDebugKotlin'.
> Внутренняя ошибка компилятора. Смотрите журнал для более подробной информации
* Пытаться:
Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше выходных данных журнала. Запустите с параметром --scan, чтобы получить полную информацию.
 

При работе с трассировкой стека я получаю журнал ошибок, который совсем не понимаю:

 org.gradle.api.tasks.TaskExecutionException: не удалось выполнить задачу ':app:compileDebugKotlin'.
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:187)
    в org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try. java:268)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
    в org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
    в org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    в org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    в org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    в org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    в org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    в org.gradle.api.internal. tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner. java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
    в org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
    в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    в org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction. execute(DefaultTaskExecutionGraph.java:388)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
    в org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    в org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    в org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Вызвано: org.gradle.api.GradleException: внутренняя ошибка компилятора. Смотрите журнал для более подробной информации
    в org. jetbrains.kotlin.gradle.tasks.TasksUtilsKt.throwGradleExceptionIfError(tasksUtils.kt:18)
    в org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:135)
    в org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runCompilerAsync(GradleKotlinCompilerRunner.kt:200)
    в org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runCompilerAsync(GradleKotlinCompilerRunner.kt:195)
    в org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runJvmCompilerAsync(GradleKotlinCompilerRunner.kt:96)
    в org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompilerAsync$kotlin_gradle_plugin(Tasks.kt:578)
    в org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompilerAsync$kotlin_gradle_plugin(Tasks.kt:429)
    в org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.executeImpl(Tasks.kt:374)
    в org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.execute(Tasks.kt:342)
    в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
    в java. base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    в org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
    в org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)
    в org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
    в org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
    в org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:498)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    в org.gradle.internal.operations. DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
    в org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
    в org.gradle. api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:483)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:466)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:105)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:270)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:248)
    в org.gradle.internal.execution.steps.ExecuteStep.executeInternal (ExecuteStep.java: 83)
    в org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:37)
    в org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
    в org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
    в org.gradle.internal. operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
    в org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper. java:54)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
    в org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:47)
    в org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:37)
    в org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
    в org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
    в org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:50)
    в org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
    в org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
    в org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
    в org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
    в org. gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
    в org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
    в org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:54)
    в org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:35)
    в org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
    в org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
    в org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:174)
    в org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:74)
    в org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:45)
    в org.gradle.internal.execution.steps.StoreExecutionStateStep. execute(StoreExecutionStateStep.java:40)
    в org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:29)
    в org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
    в org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
    в org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:99)
    в org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:92)
    в org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
    в org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
    в org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:84)
    в org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:41)
    в org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep. execute(MarkSnapshottingInputsFinishedStep.java:37)
    в org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
    в org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:91)
    в org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
    в org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:78)
    в org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:49)
    в org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:105)
    в org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:50)
    в org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:86)
    в org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep. java:86)
    в org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:32)
    в org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    в org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:43)
    в org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:31)
    в org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$2.withWorkspace(ExecuteActionsTaskExecuter.java:283)
    в org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
    в org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
    в org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
    в org.gradle. internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
    в org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:49)
    в org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35)
    в org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:184)
    в org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
    в org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
    в org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    в org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    в org.gradle.api.internal. tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    в org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    в org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3. execute(DefaultBuildOperationRunner.java:75)
    в org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    в org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
    в org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
    в org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
    в org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    в org.gradle.execution.plan.LocalTaskNodeExecutor. execute(LocalTaskNodeExecutor.java:74)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
    в org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
    в org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor. java:124)
    в org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    в org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    в org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
 

Вот содержимое файла сборки проекта:

 buildscript {
    доб.котлин_версия = '1.5.30'
    репозитории {
        Google()
        jcenter()
    }
    зависимости {
        путь к классам 'com.android.tools.build: gradle: 7.0.2'
        путь к классам 'com.google.gms:google-services:4.3.10'
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
        // ПРИМЕЧАНИЕ. Не размещайте здесь зависимости вашего приложения; они принадлежат
        // в отдельных файлах модуля build.gradle
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
все проекты {
    репозитории {
        Google()
        jcenter()
        знаток {
            URL "https://maven. google.com"
        }
        maven { URL 'https://jitpack.io' }
    }
}
задача очистить (тип: Удалить) {
    удалить rootProject.buildDir
}
 

И файл сборки приложения:

 применить плагин: 'com.android.application'
применить плагин: 'com.google.gms.google-services'
применить плагин: "androidx.navigation.safeargs"
применить плагин: «котлин-андроид»
применить плагин: 'kotlin-kapt'
применить плагин: 'com.google.gms.google-services'
применить плагин: «котлин-андроид»
применить плагин: «kotlin-android-extensions»
применить плагин: 'kotlinx-сериализация'
андроид {
   
    compileSdkVersion 31
    defaultConfig {
        идентификатор приложения "xx.xx.xx"
        minSdkВерсия 28
        targetSdkВерсия 31
        код версии 10
        имя версии "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = истина
        мультидексенаблед правда
    }
    типы сборки {
        релиз {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android. txt'), 'proguard-rules.pro'
            отлаживаемый = ложь
            signingConfig signingConfigs.debug
        }
        отлаживать {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        отключить «Нуллсафемутаблелайвдата»
    }
    compileOptions {
        исходная совместимость JavaVersion.VERSION_1_8
        целевая совместимость JavaVersion.VERSION_1_8
    }
    // Для проектов Котлин
    котлиноптионс {
        jvmTarget = "1.8"
    }
}
зависимости {
    // ----- AndroidX
    //Фрагмент и активность
    деф активность_версия = "1.3.1"
    def фрагмент_версия = "1.3.6"
    реализация "androidx.activity:activity-ktx:$activity_version"
    реализация "androidx.fragment:fragment-ktx:$fragment_version"
    //Навигация
    защита nav_version = "2.3.5"
    реализация "androidx.navigation:navigation-fragment-ktx:$nav_version"
    реализация "androidx.navigation:navigation-ui-ktx:$nav_version"
    реализация "androidx. constraintlayout:constraintlayout:2.1.0"
    testImplementation 'junit: junit: 4.12'
    androidTestImplementation 'androidx.test:бегун:1.4.0'
    androidTestImplementation 'androidx.test.espresso: espresso-core: 3.4.0'
    //Материальный дизайн
    реализация 'com.google.android.material:material:1.4.0'
    // Компоненты жизненного цикла
    деф жизненный цикл_версия = "2.3.1"
    реализация "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    реализация "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
    //Картинки
    реализация 'com.github.bumptech.glide:glide:4.8.0'
    реализация 'com.miguelcatalan:materialsearchview:1.4.0'
    реализация 'de.hdodenhof:circleimageview:3.1.0'
    //Рейтинг бар
    реализация 'com.iarcuschin:simpliratingbar:0.1.5'
    //Карты Гугл
    реализация 'com.google.android.gms:play-services-maps:17.0.1'
    реализация 'com.google.maps.android:android-maps-utils:2.2.0'
    //Биллинг Google
    реализация 'com.android.billingclient:billing:4. 0.0'
    //Сервисы Google Play для определения местоположения
    реализация 'com.google.android.gms:play-services-location:18.0.0'
    //Ядро Google Play для отзывов пользователей
    реализация 'com.google.android.play:core-ktx:1.8.1'
    //Модернизация
    реализация 'com.squareup.retrofit2:retrofit:2.9.0'
    реализация 'com.squareup.retrofit2: конвертер-скаляры: 2.9.0'
    реализация 'com.google.code.gson:gson:2.8.6'
    реализация "com.squareup.retrofit2:converter-moshi:2.9.0"
    реализация("com.squareup.moshi:moshi:1.9.3")
    реализация ("com.squareup.moshi: moshi-адаптеры: 1.8.0")
    kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.6.0'
    реализация "org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1"
    //HTTP-ПЕРЕХОДЧИК:
    реализация 'com.squareup.okhttp3: logging-interceptor: 4.2.1'
    //OSMap
    реализация 'org.osmdroid:osmdroid-android:6.1.1'
    //Подключение
    реализация 'com.github.AppIntro:AppIntro:4.2.3'
    реализация 'agency.tango.android:material-intro-screen:0. 0.5'
    //Планировщик фоновой работы
    реализация "androidx.work:work-runtime-ktx:2.6.0"
    // Сегментированный контроль
    реализация 'info.hoang8f: android-segmented: 1.0.6'
    //ГИФ
    реализация 'pl.droidsonroids.gif: android-gif-drawable: 1.2.16'
    //Подтверждение дат ISO8601 для API < 26
    реализация 'joda-time:joda-time:2.10.4'
    // Установка струн для акцентов
    группа реализации: «org.apache.commons», имя: «commons-lang3», версия: «3.0»
    // Компоненты помещения
    def room_version = "2.3.0"
    реализация "androidx.room:room-ktx:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
    androidTestImplementation "androidx.room:room-testing:$room_version"
    // ВЫБОР ДАТЫ И ВРЕМЕНИ:
    реализация 'com.github.florent37: singledateandtimepicker: 2.2.6'
    //Расширенный календарь
    реализация 'com.applandeo:material-calendar-view:1.7.0'
    //Загрузчики
    реализация 'com.agrawalsuneet.androidlibs:dotsloader:1.4'
    //Масштабируемое изображение
    реализация 'com.					

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *