Tag: kotlin

Android N Java 8function(Jack编译器)和Kotlin互操作

更新3. KOTLIN 现在正式支持 Android的发展 。 通过GOOGLE。 YAAAAAAAAS! 更新2 :它看起来像JetBrains是真的承诺从长远来看支持Android的Kotlin 。 我是一个快乐的kotlin用户:)。 更新 :JetBrains的Hadi Hariri 提到他们将发布关于这个主题的一些信息 。 一旦他们这样做,我会更新这个post。 ===弃置的东西下一个=== Google刚刚发布了即将推出的Android N预览版,其中包括一些有趣的function,其中最引人注目的是部分Java 8语言支持 。 这可能是由于Google正在开发的新Jack工具链造成的。 当前使用javac或kotlinc的工具链: javac ( .java – > .class ) – > dx ( .class – > .dex ) kotlinc ( .kt – > .class ) – > dx ( .class – > .dex […]

错误:执行任务':app:clean'失败。 无法删除文件

我试图重build我的Android Studio Gradle项目(主要包含Kotlin代码),但是在清理/重build过程中,它开始抛出UnableToDeleteFileException : Execution failed for task ':app:clean'. > Unable to delete file: C:\Users\User\KotlinGameEngine\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.0.1\jars\classes.jar 我试图改变我的项目的包结构后,开始发生。 不幸的是,我通过重命名和移动源文件夹,而不是通过Android Studio重构,这是一个坏主意。 我一直在寻找这个问题的解决办法,而这些都是我试图无效的东西: 做一个Gradle同步; 重新安装Java JRE和Java SDK; 重新安装最新版本的Android Studio(1.4); 回滚到以前的AS版本(1.3); 使AScaching无效并重新启动; 删除项目目录中的gradle和.gradle目录; 删除我的用户目录中的.gradle目录; 从ASterminal运行gradlew clean ; 手动将源代码复制到一个新项目(奇怪的是,它在某些项目中持续存在) 我已经尝试了一些成功的事情,但只能让我再次执行一次清理并重新生成错误: closuresAS,手动删除构build文件并再次打开它; 当AS正在运行时,杀死java.exe进程(这在技术上可以每次都完成,但是这很繁琐,并且会降低构build过程的速度) 所以看起来,编译Java进程可能会因为某种原因而对构build文件进行locking,但这也可能与Kotlin有关。 我有一个(更成熟的)我正在处理的Java Android项目,虽然我不能在清理时重现此错误。 这似乎只发生在我的Kotlin项目上。 有任何想法吗? 提前致谢。 更新: 我发现问题是由Kotlin Android插件引起的。 当我从模块的build.gradle文件中删除apply plugin: 'kotlin-android'时,问题就消失了,当我重新插入时,它会回来。 随时提供任何洞察到这一点。 更新2: 最后的更新不是原因。 我发现如果一个项目包含一个Kotlin文件,那么重build和清理失败。 即使所有Kotlin文件都被删除,它仍然会失败,直到后台Java进程被终止,这意味着它在构build文件上有某种locking。 我在这里提交了一个bug,更多的细节和步骤来重现错误: KT-9440

Kotlin字节码 – 如何在IntelliJ IDEA中分析?

我是Kotlin的新手,我希望能够查看编译的字节码,以便了解更多关于它如何工作的信息。 我正在使用IntelliJ IDEA 15,但找不到查看字节码的好方法。 我错过了什么?

在Kotlin中,处理可空值的惯用方式是什么,引用或转换它们

如果我有一个可空typesXyz? ,我想引用它或将其转换为不可为空的typesXyz 。 Kotlin这样做的习惯用法是什么? 例如,这个代码是错误的: val something: Xyz? = createPossiblyNullXyz() something.foo() // Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Xyz?" 但是,如果我先检查null是允许的,为什么呢? val something: Xyz? = createPossiblyNullXyz() if (something != null) { something.foo() } 假如我知道它确实从不为null ,我该如何将值更改或视为非null而不要求if检查? 例如,在这里我从地图中检索一个值,我可以保证存在,并且get()的结果不为null 。 但是我有一个错误: val map = mapOf("a" to 65,"b" to […]