Kotlin - Android 开发入门
2017-08-10 本文已影响601人
fish_leong
- 谷歌已经宣布 Kotlin 是 Android 开发一级语言 - 北京时间 2017年5月18日 在 谷歌I/O开发者大会上宣布
- 在eclipse和Android Studio中,虽然都可以用Kotlin语言开发Android,但Kotlin是JetBrains亲儿子,自家的IDE对自家的语言,支持相对更完美,所以推荐使用Android Studio,Android Studio也是大势所趋
- Android Studio可将已有的Java(.java)转换成Kotlin(.kt),成功率虽然不是100%,但不成功的,只要少加修改即可
- Android Studio可以新建Kotlin Activity,而eclipse目前尚不支持
- Android Studio可以使用Java与Kotlin语言进行混合开发(eclipse目前我还没试过,有兴趣的童鞋可以尝试)
- 若你坚持要以 eclipse 入门,请点此查看Kotlin语言中文网的教程
- 建议先初步了解下Kotlin语言基础:Kotlin - 入门基础 请点此查看
下面说一下在Android Studio中配置并使用Kotlin语言开发Android项目
- Android Studio 、JDK和SDK的下载与配置安装就不介绍了
- Android Studio 下载直达 - 来自Android Studio 中文社区
- Android SDK 下载直达 - 来自Android Studio 中文社区
- JDK8 下载直达 - 来自Oracle官网
- Android Studio目前还不支持直接建立Kotlin的Android项目,所以要稍加配置
1.首先,打开Android Studio并新建项目
![](https://img.haomeiwen.com/i1425277/cbdf82fc390dea78.png)
![](https://img.haomeiwen.com/i1425277/41f9f4fe3089f429.png)
![](https://img.haomeiwen.com/i1425277/c758e13d82232673.png)
![](https://img.haomeiwen.com/i1425277/f84c8ac6c7e22ae2.png)
![](https://img.haomeiwen.com/i1425277/fd8aa12c57cb3213.png)
2.安装Kotlin插件
- 新版Android Studio或IDEA默认已经集成了Kotlin插件
-
进入Setting - Plugins - 搜索Kotlin,如下图一样的话,说明已经集成了Kotlin插件
- 如果你没有集成Kotlin插件,点击上图中的“Install JetBrains plugin”按钮,在弹出的界面中搜索“Kotlin”并Install它即可
3.让你的项目支持Kotlin
- Android Studio使用Gradle构建项目,所以我们要配置Gradle的配置文件,需要修改两个gradle配置:
- 配置Project的build.gradle
- 配置app的build.gradle
3.1.首先切换到project视图
![](https://img.haomeiwen.com/i1425277/7c58810b481e0fc6.png)
3.2.配置Project的build.gradle文件
- 打开Project下的build.gradle文件
- 需要添加两行代码,如图3.2所示
- 在buildscript代码块中定义Kotlin版本号,
- 下面的Kotlin版本号1.1.3是我在写此文章时的最新版本,也许当你看到此篇文章时,Kotlin已经不知道更新到什么版本了...可以从Kotlin官网了解最新版本
ext.kotlin_version = '1.1.3'
- 下面的Kotlin版本号1.1.3是我在写此文章时的最新版本,也许当你看到此篇文章时,Kotlin已经不知道更新到什么版本了...可以从Kotlin官网了解最新版本
- 在dependencies代码块中添加Kotlin的Gradle插件
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- 在buildscript代码块中定义Kotlin版本号,
-
然后保存,点击右上角的Sync Now,进行同步
图3.2
3.3.配置app的build.gralde文件
- 打开app的build.gradle文件
- 在首行的"apply plugin: 'com.android.application'"下加入下面的代码
apply plugin: 'kotlin-android'
- 在dependencies(依赖)代码块中加入下面的代码
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
- 然后保存,点击右上角的Sync Now,进行同步
![](https://img.haomeiwen.com/i1425277/57ffbc7cb4e27511.png)
3.4.新建一个Kotlin Activity
![](https://img.haomeiwen.com/i1425277/576415535cc3d545.png)
![](https://img.haomeiwen.com/i1425277/67ba04cb30e94462.png)
![](https://img.haomeiwen.com/i1425277/01d7a7b544334cd4.png)
![](https://img.haomeiwen.com/i1425277/4449ca605e79ec1f.png)
3.5.启动KotlinActivity
- Kotlin可与Java进行混合开发
- 下面通过Java语言编写的MainActivity启动Kotlin语言编写的KotlinActivity
![](https://img.haomeiwen.com/i1425277/c10f2d922879579f.png)
![](https://img.haomeiwen.com/i1425277/2a0b9b59bfbdbc2d.png)
3.6.将Java代码转换成Kotlin代码
-
Kotlin插件可以将Java代码转换成Kotlin代码,如果转换完报错,一般稍加调整即可(前提你要先了解Kotlin的语法,否则改起来会有点懵逼,如图3.6)
图3.6
-
下面将MainActivity.java转换成Kotlin.kt,操作如下图
![](https://img.haomeiwen.com/i1425277/2c2c65393c1315e3.png)
![](https://img.haomeiwen.com/i1425277/86d48ecc4b8029e1.png)
![](https://img.haomeiwen.com/i1425277/de18c61c40f70d8f.jpg)
-
图3.6-1中的onCreate函数需要注意一下:
- 如果你转换的Activity继承于android.app.Activity,转换后onCreate的参数Bundle类型后不会自动加?,编辑器的语法检查也没检查出来,运行会出现类似下面的错误(java.lang.IllegalArgumentException):
E/AndroidRuntime: FATAL EXCEPTION: main Process: leong.fish.kt.kotlinandroid, PID: 5192 java.lang.RuntimeException: Unable to start activity ComponentInfo{leong.fish.kt.kotlinandroid/leong.fish.kt.kotlinandroid.MainActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal
为毛???
- 因为这个Activity onCreate时,savedInstanceState是null,而不带?的Bundle,代表它不接受null,所以出现异常崩溃,这涉及到Kotlin空安全,点此了解下吧~
- 如果你要转换的Activity继承于android.support.v7.app.AppCompatActivity,则不会出现上面的错误,因为Bundle后面会自动加?,如果你删掉,语法检查将会报错提示你的。
- 还有些类转换时会出现这种问题,遇到的童鞋到时可以试试上面的方法。
- 如果你转换的Activity继承于android.app.Activity,转换后onCreate的参数Bundle类型后不会自动加?,编辑器的语法检查也没检查出来,运行会出现类似下面的错误(java.lang.IllegalArgumentException):