Android Studio обеспечивает полную поддержку Kotlin , позволяя добавлять файлы Kotlin в существующий проект и конвертировать код языка Java в Kotlin. Затем вы можете использовать все существующие инструменты Android Studio со своим кодом Kotlin, включая автозаполнение, проверку на соответствие, рефакторинг, отладку и многое другое.
Если вы начинаете новый проект и хотите использовать Kotlin, см. Создание проекта .
Примеры можно найти в наших примерах кода Kotlin .
Добавьте Kotlin в существующий проект
Чтобы добавить Kotlin в свой проект, сделайте следующее:
- Нажмите «Файл» > «Новый» и выберите один из различных шаблонов Android, например новый пустой фрагмент , как показано на рисунке 1. Если вы не видите список шаблонов в этом меню, сначала откройте окно «Проект» и выберите свой модуль приложения.  - Рисунок 1. Выберите один из доступных шаблонов, например фрагмент или действие. 
- В появившемся мастере выберите Kotlin в качестве исходного языка . На рис. 2 показано диалоговое окно «Новое действие Android» , когда вы хотите создать новое действие.  - Рисунок 2. Диалоговое окно «Новое действие Android» , в котором вы можете выбрать Kotlin в качестве исходного языка . 
- Продолжайте работу с мастером. 
Альтернативно вы можете нажать «Файл» > «Создать» > «Файл/класс Kotlin», чтобы создать базовый файл Kotlin. Если вы не видите эту опцию, откройте окно проекта и выберите каталог Java . Окно «Новый файл/класс Kotlin» позволяет вам определить имя файла и предоставляет несколько вариантов выбора типа файла: File , Class , Interface , Enum Class или Object . Сделанный вами выбор определяет базовую структуру, созданную для вас в новом файле Kotlin. Если вы выберете Class , Android Studio создаст новый исходный файл Kotlin с заданным именем и соответствующим определением класса. Если вы выберете Interface , интерфейс будет объявлен в файле и так далее.
Если вы впервые добавляете новый класс или файл Kotlin в свой проект напрямую (не используя шаблоны Android), Android Studio отображает предупреждение о том, что Kotlin не настроен в проекте, как показано на рисунке 3. Настройте Kotlin с помощью нажмите «Настроить» либо в правом верхнем углу редактора, либо в предупреждении журнала событий , которое появляется в правом нижнем углу.

При появлении запроса выберите вариант настройки Kotlin для всех модулей, содержащих файлы Kotlin , как показано на рисунке 4:

 Как только вы нажмете «ОК» , Android Studio добавит Kotlin в путь к классам вашего проекта и применит плагин Kotlin Android к каждому модулю, содержащему файлы Kotlin. Ваши файлы build.gradle должны выглядеть примерно так, как показано ниже: 
классный
// Project build.gradle file. buildscript { ext.kotlin_version = '1.4.10' ... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
Котлин
// Project build.gradle.kts file. buildscript { extra["kotlin_version"] = "1.4.10" ... dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") } }
классный
// Inside each module using kotlin plugins { ... id 'kotlin-android' } ... dependencies { implementation 'androidx.core:core-ktx:1.3.2' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" }
Котлин
// Inside each module using kotlin plugins { ... kotlin("android") } ... val kotlin_version: String by rootProject.extra dependencies { implementation("androidx.core:core-ktx:1.3.2") implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") }
Исходная организация
 По умолчанию новые файлы Kotlin сохраняются в src/main/java/ , что позволяет легко просматривать файлы Kotlin и Java в одном месте. Если вы предпочитаете отделить файлы Kotlin от файлов Java, вместо этого вы можете поместить файлы Kotlin в src/main/kotlin/ . Если вы сделаете это, вам также необходимо включить этот каталог в конфигурацию sourceSets , как показано ниже: 
классный
android { sourceSets { main.java.srcDirs += 'src/main/kotlin' } }
Котлин
android { sourceSets { getByName("main") { java.srcDir("src/main/kotlin") } } }
Преобразование существующего кода Java в код Kotlin
Чтобы преобразовать код Java в Kotlin, откройте файл Java в Android Studio и выберите «Код» > «Преобразовать файл Java в файл Kotlin» . Альтернативно создайте новый файл Kotlin ( Файл > Создать > Файл/класс Kotlin ), а затем вставьте в него свой Java-код. Затем Android Studio отображает приглашение и предлагает преобразовать ваш код в Kotlin, как показано на рисунке 5. Нажмите «Да» , чтобы преобразовать. При желании вы можете установить флажок Не показывать это диалоговое окно в следующий раз , чтобы будущие преобразования выполнялись автоматически.

Преобразование кода и возможность обнуления
В процессе преобразования Android Studio создается функционально эквивалентный код Kotlin, который компилируется и запускается. Однако вполне вероятно, что вам потребуется провести дополнительную оптимизацию преобразованного кода. Например, вы можете уточнить, как преобразованный код обрабатывает типы, допускающие значение NULL.
 В Android принято откладывать инициализацию объектов View и других компонентов до тех пор, пока фрагмент или действие, к которому они прикреплены, не достигнет соответствующего состояния жизненного цикла. Например, у вас может быть ссылка на кнопку в одном из ваших фрагментов, как показано в следующем фрагменте:
public class JavaFragment extends Fragment {
    // Null until onCreateView.
    private Button button;
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_content, container,false);
        // Get a reference to the button in the view, only after the root view is inflated.
        button = root.findViewById(R.id.button);
        return root;
    }
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // Not null at this point of time when onViewCreated runs
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ...
            }
        });
    }
}
 Несмотря на то, что переменная кнопки имеет значение NULL, для всех практических целей она никогда не должна иметь значение NULL при использовании в этом примере. Однако, поскольку его значение не назначается в момент создания, сгенерированный код Kotlin обрабатывает Button как тип, допускающий значение NULL, и использует непустой оператор утверждения для развертывания кнопки при добавлении прослушивателя кликов, как показано ниже:
class JavaFragment : Fragment() {
    // Null until onCreateView.
    private var button: Button? = null
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
            savedInstanceState: Bundle?): View? {
        ...
        // Get a reference to the button in the view, only after the root view is inflated.
        button = root.findViewById(R.id.button)
        ...
    }
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // Not null at the point of time when onViewCreated fires 
        // but force unwrapped nonetheless
        button!!.setOnClickListener { }
    }
}
 Это преобразование менее идеально, чем использование lateinit в этом случае, поскольку вы вынуждены разворачивать ссылку на кнопку с помощью ненулевого утверждения или оператора безопасного вызова в каждом месте, где к ней обращаются.
 В других случаях, когда null является допустимым присвоением переменной в зависимости от варианта использования вашего приложения, использование оператора безопасного вызова (?.) с завершающим оператором элвиса (?:) может быть более подходящим способом безопасного развертывания объекта, допускающего значение NULL. или принудить к разумному значению по умолчанию, отличному от нуля. Android Studio не располагает достаточной информацией для принятия такого решения в процессе преобразования. Хотя по умолчанию используется ненулевое утверждение, вам следует следить за этим и корректировать преобразованный код по мере необходимости.
Дополнительная информация
Дополнительные сведения об использовании кода Kotlin и Java в вашем проекте см. в разделе Вызов кода Java из Kotlin .
Дополнительные сведения об использовании Kotlin в корпоративных сценариях см. в разделе «Принятие Kotlin для больших команд» .
Информацию об идиоматических оболочках Kotlin для существующих API Android см. в разделе Android KTX .
