У меня есть большой проект Android, написанный на Java, и в настоящее время я преобразовываю его в Kotlin. Многие из моих действий и фрагментов используют привязку данных.
Первоначально, когда я преобразовал свою первую деятельность с использованием привязки данных к Kotlin, проект не смог построить для этой активности. Ошибка указала на отсутствие ссылок на библиотеку привязки данных. Я добавил:
kapt 'com.android.databinding:compiler:2.0.0-beta6'
к зависимостям в app/build.gradle
а также
kapt { generateStubs = true }
в тот же файл.
После создания активность Kotlin с привязкой данных работала, тогда как все остальные Java-привязки данных теперь сообщают, что ссылка на пакет привязки данных не существует.
Это оставляет меня в трудном положении. Я планировал преобразовать действия и фрагменты один за другим в Котлин и строить их, когда я иду, но в данный момент это кажется невыполнимым, так как я должен сделать выбор между Java или Kotlin, работающим при каждой сборке.
Я нашел Kotterknife: https://github.com/JakeWharton/kotterknife , который представляет собой библиотеку ввода-вывода для Kotlin, но я все еще не могу поверить, что нет возможности медленно преобразовывать ваши действия с Java в Kotlin, даже если они действительно используют привязки данных. Это просто не кажется мне правдоподобным.
Кто-нибудь сделал преобразованный проект таким образом в прошлом и преуспел, не делая выбор один или другой? Есть ли способ конвертировать отдельные действия по мере продвижения? Другой вариант состоит в том, чтобы просто преобразовать всю Java в Kotlin за один раз, а затем сделать одну единую сборку после ее завершения, но это кажется немного рискованным, если вы включите всю работу, а затем поймете, что упустили что-то. Есть идеи? Заранее спасибо.
Остерегайтесь сочетания Data Binding + Kotlin! Библиотека привязки данных внутренне использует Kotlin, и из этого возникают некоторые конфликты. Я бы посоветовал вам сохранить классы активности / фрагмента, которые используют привязку данных в Java, и преобразовать бизнес-логику в Kotlin. У меня было много проблем в довольно крупных проектах. Чем больше зависимостей, связанных с проектом, тем больше рисков. Продолжайте постепенно преобразовывать классы, никогда не сразу! Если вы конвертируете сразу несколько файлов, убедитесь, что ваша локальная или удаленная история не повреждена, чтобы при необходимости можно было восстановить. Несколько недель назад у меня возникла такая серьезная ошибка, из-за которой проект был невозможно построить. Некоторые действительно странные вещи можно ожидать. Также будьте осторожны с альфа-и бета-библиотеками и всегда обновляйте зависимости библиотек один за другим, чтобы как можно раньше уловить любую несовместимость. Надеюсь, это немного помогло.
EDIT : По состоянию на 20 мая 2017 года, я считаю, что большинство из вышеупомянутых проблем уже исправлены. Также Kotlin теперь является официальным языком, поэтому полная совместимость должна быть гарантирована и постоянно проверена компанией Google.