@KotlinLangRu

Страница 58 из 90
Andrew
04.04.2018
09:13:48
Согласен, похоже на недоработку JetBrains!

Костя
04.04.2018
09:14:43
а во что превращаются файлы kt после компиляции ?

если .java -> .class

Oleg
04.04.2018
09:15:08
Аналогично

Google
Костя
04.04.2018
09:15:19
kt -> .class ?

тоже

Oleg
04.04.2018
09:15:27
Да

Костя
04.04.2018
09:16:00
тогда действительно странно, ведь у собранной либы на котлин и на джава отличий получается нет для компилятора

Andrew
04.04.2018
09:18:09
не странно, отличий нет, есть только зависимость на библиотеку
Как сделать так, чтобы Java-разработчикам нужно было подключить только мою библиотеку, не подключая Kotlin?

Quantum Harmonizer
04.04.2018
09:19:30
Как сделать так, чтобы Java-разработчикам нужно было подключить только мою библиотеку, не подключая Kotlin?
Правильный способ — Maven-репозиторий. Ещё можно сунуть kotlin-stdlib прямо в твою библиотеку, но если в проект попадёт ещё одна стдлиба, он не соберётся

Andrew
04.04.2018
09:20:54
Alexander
04.04.2018
09:21:30
так проверь )

Andrew
04.04.2018
09:22:11
Как это сделать?

Alexander
04.04.2018
09:22:22
тут андройд

Google
Andrew
04.04.2018
09:23:07
Как добавить kotlin-stdlib в библиотеку?

Oleg
04.04.2018
09:23:32
так скомпили её с этой опцией, или чо?

Andrew
04.04.2018
09:24:20
У меня в библиотеке есть зависимость compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version". Это не то?

Quantum Harmonizer
04.04.2018
09:27:21
Oleg
04.04.2018
09:27:46
библиотека твоя привязана исключительно к андроиду? Или это буде jar, который можно будет подключать везде?

Andrew
04.04.2018
09:28:00
Это AAR

Alexander
04.04.2018
09:29:11
да покажи на пасту куда нить gradle файл )

Quantum Harmonizer
04.04.2018
09:29:56
да покажи на пасту куда нить gradle файл )
и ничего там интересного не увидим

Alexander
04.04.2018
09:31:00
и ничего там интересного не увидим
ну как знаешь, телепат из меня никудышный.

Oleg
04.04.2018
09:31:17
слушай так по дефолту у тебя все должно рабоать, ты пробовал свою либу в другом проекте?

Quantum Harmonizer
04.04.2018
09:31:35
это же не fat aar со всеми зависимостями

Andrew
04.04.2018
09:38:47
Так как подключить kotlin-stdlib?

Oleg
04.04.2018
09:38:58
тогда по идее надо что-то типа такого https://github.com/BenWoodworth/CrossPlatformGreeter/blob/bd1da79f36e70e3d88ed871bc35502ecc3a852fb/build.gradle#L35-L43

но это неточно

Alexander
04.04.2018
09:40:41
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' по логике тоже самое делают ) если судить по описанию

Quantum Harmonizer
04.04.2018
09:41:18
Oleg
04.04.2018
09:43:18
клевые кавычки!

Google
Andrew
04.04.2018
09:44:43
Так че делать?!

Oleg
04.04.2018
09:45:04
гуглить, потом раскажешь нам ;)

Alexander
04.04.2018
09:45:22
а я боялся такое писать )

Oleg
04.04.2018
09:48:39
лично я плохо понимаю что будет если мы вкомпилируем kotlin runtime в aar/jar а потом кто-то подключит его еще отдельно. Напирмер в слючае если есть другая либа, в которой runtime не встроен. Какой будет использоваться?

Quantum Harmonizer
04.04.2018
09:49:29
Когда в другие либы рантайм не встроен, всё ок. А вот когда будет >1 либы со встроенным рантаймом... ?

Andrew
04.04.2018
09:51:39
Когда в другие либы рантайм не встроен, всё ок. А вот когда будет >1 либы со встроенным рантаймом... ?
Ну вот ребята из JetBrains всех разработчиков либ к этому подводят.)) Я все равно не понимаю, если Kotlin и Java компилируются в байт-код, зачем эти зависимости????

Значит нет пресловутой 100% совместимости!

Oleg
04.04.2018
09:52:33
ну как, у котлина же всякие расширения для того же стринга, для коллекций. Где то же их надо брать

Quantum Harmonizer
04.04.2018
09:52:38
Значит нет пресловутой 100% совместимости!
Ну, эм, ты знаешь, что такое «библиотека»?

Andrew
04.04.2018
09:52:57
В общих чертах

Quantum Harmonizer
04.04.2018
09:53:39
В общих чертах
Ну это какая-то пачка кода, который можно использовать из другого кода. Вот рантайм котлина — это библиотека.

Значит нет пресловутой 100% совместимости!
Есть. Формат классов один, из Java-кода можно вызывать Kotlin-код.

Alexander
04.04.2018
09:54:57
но ему нужна либка чтоб знать как

Andrew
04.04.2018
09:55:13
Oleg
04.04.2018
09:56:27
так погоди, через мавен, это наверно просто зависимость нужно прописывать при сборке, правильно так и надо. Или через Gradle

Quantum Harmonizer
04.04.2018
09:57:04
так погоди, через мавен, это наверно просто зависимость нужно прописывать при сборке, правильно так и надо. Или через Gradle
не, я имел в виду, что при размещении в maven-репе есть pom, в котором и прописана зависимость на рантайм

Короче, если распространяешь библиотеку файлом, у неё не должно быть зависимостей, иначе рванёт :)

Alexander
04.04.2018
09:57:48
и stdlib так же нужен

Quantum Harmonizer
04.04.2018
09:57:57
и stdlib так же нужен
рантайм == стдлиб

Andrew
04.04.2018
09:59:20
рантайм == стдлиб
Т.е. стдлиб котлина занимается конфертацией котлин кода в джава-код?

Google
Alexander
04.04.2018
09:59:47
Quantum Harmonizer
04.04.2018
09:59:47
Т.е. стдлиб котлина занимается конфертацией котлин кода в джава-код?
Нет никакой конвертации котлина в джава-код. Стдлиб — это библиотека, обязательная для котлина.

Oleg
04.04.2018
09:59:48
ох, да нет же. Там просто набор функций, которых нет в java

Andrew
04.04.2018
10:00:43
Oleg
04.04.2018
10:00:50
например в java по дефолту нет возможности склеить список строк через list.joinToString("...")

Quantum Harmonizer
04.04.2018
10:01:18
Oleg
04.04.2018
10:01:19
а в котлине эти расширения есть, и они находятся в stdlib он же рантайм

Andrew
04.04.2018
10:01:55
JDK встроен везде, где есть JVM, поэтому нет.
А почему нельзя было встроить котлин стдлиб?

Quantum Harmonizer
04.04.2018
10:02:06
А почему нельзя было встроить котлин стдлиб?
потому что котлин появился позже, чем JVM

Oleg
04.04.2018
10:03:28
на самом деле проблема высасона из пальца. В реальной библиотеке зависимостей много, и +1 зависимость погоды не делает

Alexander
04.04.2018
10:06:25
ну можно взять jar запихнуть в fat aar и спать спокойно пока такойже житроопый не появится который не захочет ещё 1 runtime ) либо смириться в зависимостях с ещё 1 cтрокой )

Oleg
04.04.2018
10:09:16
ну или две версии, простая и bundled

Alexander
04.04.2018
10:15:27
что «то же самое»? Включают рантайм в аарник?!
https://github.com/JetBrains/kotlin/blob/master/plugins/android-extensions/android-extensions-runtime/build.gradle.kts не ? вот kotlin-android просто не нашёл

Andrew
04.04.2018
10:16:36
Проблема в том, что подавляющее большинство проектов разработаны на Java и предлагать сторонним разработчикам кроме зависимости на мою библиотеку делать еще зависимость на Kotlin (который они не используют) по меньшей мере не корректно. А есть у них старый gradle? Смогую они добавить зависимость на Kotlin stdlib?

Andrew
04.04.2018
10:21:01
Ну если у них gradle версии ниже 3.0, они смогут прописать зависимость на котлин стдлиб?

Alexander
04.04.2018
10:24:25
не то кинул (

попробуй не смогут можешь fat aar в любой момент собрать ) через gradle extension просто достаточно apply

Quantum Harmonizer
04.04.2018
10:31:33
Andrew
04.04.2018
11:26:10
Понятно, спасибо. А еще вопрос п, если я подключаю свою библиотеку через compile files, то по логике моя библиотека и котлин стдлиб будут включатся в APK?

Google
Andrew
04.04.2018
11:26:59
Почему тогда компилятор не ругается, а ошибка при выполнении?

Quantum Harmonizer
04.04.2018
11:27:44
Потому что сборкой библиотек занимается не компилятор, а сборочная система.

Andrew
04.04.2018
11:32:12
Ок, значит буду предлагать сторонним разработчикам устанавливать 2 зависимости:

compile files('extlib/myapi.aar') compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

iTEYE
04.04.2018
17:08:58
Нифига не понимаю. https://pastebin.com/qCLWJLxb вот код. Авторизую пользователя, потом в консоли firebase отключаю пользователя чтобы получать ошибку USER_DISABLED, перегружаю приложение и всегда попадаю в ветку else "exception is NOT FirebaseAuth...Exception" Что я делаю не так? Как получить код ошибки?

Grushin
04.04.2018
17:50:46
Привет) Мучаюсь часто над вопросом. Допустим есть вот такое doSomething(button) button - nullable. Мне если не надо вообше метод вызывать если button = null что делать? прост поставить вопрос?

Oleg
04.04.2018
17:53:22
if(button!=null)doSomething(button)

Grushin
04.04.2018
17:54:08
if(button!=null)doSomething(button)
неужели проверки на нулл в котлине это адекват?

я зачем с джавы ушел)

Grushin
04.04.2018
17:54:52
не, ну должен быть лайфхак с ?:

ok thx)

Alexey
04.04.2018
17:55:32
button?.let { doSomething(it) }

Grushin
04.04.2018
17:56:38
button?.let { doSomething(it) }
вау. прям супер. можно даж блок кода выполнять

Страница 58 из 90