Я обновил для Android Studio 3.6 сегодня (#AI-192.7142.36.36.6200805
, построено 12 февраля 2020 г.). Я использую Kotlin (моя версия - 1.3.61
- обновлена). Моя Gradle версия 5.6.4
(последняя).
Для меня происходит очень странная вещь.
Первая проблема заключается в том, что теперь мне нужно нажать значок сохранения (^s
) перед запуском. До тех пор, пока Android 3,5 не был автоматом c. Но это нормально, к этому нужно привыкнуть.
Вторая проблема хуже всего. У меня есть typealias , который был ArrayList , и мне нужно было перейти на простой Array , поэтому я изменил предыдущий код typealias Duo = ArrayList<Double>
для typealias Duo = Array<Double>
.
Это большой проект, и у меня в каком-то модуле есть небольшой фрагмент кода, который может быть показан как
var gData = ArrayList<Duo>()
gData.add(arrayOf(5.0, 1.0))
после того, как я сохраню файлы (^s
) и запустить.
Теперь появляется следующее сообщение об ошибке, указывающее на вторую строку, даже если редактор не показывает красную метку в коде:
Type inference failed. Expected type mismatch: inferred type is Array<Double>
but Duo /* = ArrayList<Double> */ was expected
Я понятия не имею, что происходит. ... Я пытался restart
и restart and invalidate caches
, но безуспешно. Одни и те же сообщения. Я использую find in path
(^+f
) для проверки дубликатов объявлений duo
. Нет.
Когда я попробовал приведенный ниже игрушечный код в Kotlin Playground , все в порядке. Нет ошибки.
typealias Duo = Array<Double>
fun main() {
var gData = ArrayList<Duo>()
gData.add(arrayOf(5.0, 1.0))
println(gData[0][0])
}
Я заблудился!
ОБНОВЛЕНИЕ
Это должно быть очень серьезной ошибкой в Android Studio 3.6. Я решил проблему, но это не имеет никакого смысла. Я просто заменил все 13 вхождений duo
на dux
, и проблема окончена! (Ctrl + Shift + R
- Replace in Path
) После этого я переключился обратно на duo
(13 случаев), и проблема не вернулась, но тайна в эфире.