使用Kotlin开发Android应用(II):创建新工程
在基本了解什么是Kotlin以及Kotlin可以做什么之后,接下来就到了配置Android Studio并使用Kotlin开发Android apps的时候了。首次配置Android Studio需要几个步骤,而有些Gradle配置是每个新建工程都要重新配置的。
在本系列文章中,我将创建一个精简版的Bandhook,这是我以前写的一个app,它的基本功能是连接一个音乐rest API,并返回关于某个乐队的信息。可以到Github上面的Bandhook-Kotlin查看源代码。
创建新工程并下载Kotlin插件
使用Android Studio创建一个具有一个activity的基本的Android工程,就跟你为普通工程创建的方式一样:
创建好了之后,你首先要做的就是下载Kotlin插件。打开Android Studio的首选项的搜索插件面板,使用搜索功能查询Kotlin插件,安装完成并重启IDE即可。

在应用的build.gradle文件中添加Kotlin插件依赖
由于我们的主Module要使用Kotlin,因此需要在工程的根build.gradle文件中新增Kotlin插件的依赖:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.3'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.11.91'
}
}
配置module的build.gradle文件
首先,应用Kotlin插件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
然后,添加Kotlin函数库到工程的依赖中:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'org.jetbrains.kotlin:kotlin-stdlib:0.11.91'
}
最后,你需要在sources目录中添加下一个步骤我们要创建的Kotlin文件夹:
android {
compileSdkVersion 22
buildToolsVersion "22.0.0"
...
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
或者你可以跳过这一步骤,并在完成下一个步骤之后,像下面这样操作Android Studio:

我更倾向于手动配置以便更好的组织Gradle文件,但第二种选择会简单一点。
创建Kotlin目录
首先将你的工程可视化界面从‘Android’切换到‘Project’,找到'app->src->main'目录,单击右键创建一个命名为‘kotlin’的目录。

将Java activity转换为kotlin文件
Kotlin插件能够将java类转换成kotlin类。通过选择'Code'菜单里面的‘Convert Java File to Kotlin File’选项,我们可以把当前的activity转换成Kotlin类:

IDE会建议将新的文件移动到Kotlin目录中。单击'Move File'按钮(如果你没有看到这个选项,那么也可以手动移动它)。
转换完成之后,你将会看到一个翻译成Kotlin语言的类似的代码片段。我建议你仔细研读直到看出这两者的区别:
public class MainActivity : ActionBarActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
val id = item.getItemId()
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true
}
return super.onOptionsItemSelected(item)
}
}
主要的区别
通过前面的代码,我们可以看出有一些明显的区别,我们将在下一篇文章中进一步讨论:
- 继承的时候使用冒号(:)而不是使用extends关键字
- 显式的使用‘override’关键字:在Java中我们使用@override注解使得代码更简洁,但Kotlin并不强制我们使用。
- 使用‘fun’来声明函数:Kotlin是一种面向对象的函数式语言,因此类似Scala等语言,Java方法将会使用函数来代表。
- 函数参数使用不同的命名法:参数类型和名字顺序是反过来的,中间以冒号(:)分隔。
- 分号(;)是可选的:我们不需要以分号结束当前行,当然如果想要的话也可以。但如果我们不用加分号的话,将节省很多时间,并使代码更简洁。
- 其他细节:在第一篇文章中,我提到了‘?’符号。这表示被修饰的参数可以为空,判空的处理相比Java是不一样的。
总结
虽然我们能够预期到使用一门新语言将会有很大不同,但Kotlin是JetBrains团队创建的用于弥补Java语言缺失的特性,它容易学习并与Java可互操作。由于Android Studip也是基于JetBrains的产品,因此很容易在这个IDE里面集成并使用Kotlin语言。
下一篇文章将介绍使用Kotlin语言开发Android应用时的一些贴士和技巧。
使用Kotlin开发Android应用(II):创建新工程的更多相关文章
- 用Kotlin开发Android应用(II):创建新项目
这是关于Kotlin的第二篇.各位高手发现问题,请继续“拍砖”. 原文标题:Kotlin for Android(II): Create a new project 原文链接:http://anton ...
- 用Kotlin开发Android应用(I):介绍
关于Kotlin,网上已有一些介绍的文章,包括Antonio Leiva的这组blog翻译稿.不过,我还是想跟进它们.翻译它们,以锻炼自己的英文翻译.各位高手发现问题,请及时“拍砖”. 原文题目:Ko ...
- 使用Kotlin开发Android应用(I):简单介绍
使用Kotlin开发Android应用(I):简单介绍 @author ASCE1885的 Github 简书 微博 CSDN 原文链接 Kotlin是一门基于JVM的编程语言.它正成长为Androi ...
- 让你的代码量减少3倍!使用kotlin开发Android(一)
让你的代码量减少3倍!使用kotlin开发Android(一) 创建Kotlin工程 本文同步自博主的私人博客:wing的地方酒馆 写在前面 使用kotlin开发android已经两周多了.得到的好处 ...
- 让你的代码量减少3倍!使用kotlin开发Android(二) --秘笈!扩展函数
本文承接上一篇文章:让你的代码量减少3倍!使用kotlin开发Android(一) 创建Kotlin工程 本文同步自博主的私人博客wing的地方酒馆 上一节说到,kotlin可以省去getter,se ...
- 使用Kotlin开发Android应用 - 环境搭建 (1)
一. 在Android Studio上安装Kotlin插件 按快捷键Command+, -> 在Preferences界面找到Plugins -> 点击Browse repositorie ...
- 使用Kotlin开发Android
查看我的所有开源项目[开源实验室] 欢迎增加我的QQ群:[201055521],本博客client源代码下载[请点击] 摘要 我首先声明我并没有使用Kotlin非常长时间,我差点儿是在学习的同一时候写 ...
- 使用git在github上创建新工程
这段时间进经常会忘记如何在github上同步工程,于是又得查资料,查参考书,浪费了很长时间,因此有了感触,写几篇有关此类问题的篇章! 这是老手新手都十分容易犯的错误,就是在创建一个新github项目或 ...
- 用Kotlin开发Android应用(IV):定制视图和Android扩展
原文标题:Kotlin for Android (IV): Custom Views and Android Extensions 原文链接:http://antonioleiva.com/kotli ...
随机推荐
- c++ 类内部 使用 new delete
低级错误: /** * @clusterNums 默认为5 分类数目 * @xyVector 处理后点云数据 x y顺序存储 */ int GMM::runGMM(int clusterNums, c ...
- Git/GitHub仓库管理常用的3条命令
$ git add <filename.*> $ git commit -m "<write down the modification>" $ git p ...
- robot.txt 文件 作用和语法
seo工作者应该不陌生,robots.txt文件是每一个搜索引擎蜘蛛到你的网站之后要寻找和访问的第一个文件,robots.txt是你对搜索引擎制定的一个如何索引你的网站的规则.通过该文件,搜索引擎就可 ...
- c++ 逗号操作符重载
Overload Operator Comma 首先看看think in c++ 给出的一个重载的样例 #include <iostream> using namespace std; c ...
- nginx反向代理批量实现https协议访问
我们进入大多数HTTPS网站ie浏览器都会给出相关提醒了,但我配置了一台HTTPS代理机器发现css与js都加载不了,这个有朋友说是https页面,如果加载http协议的内容,会被认为页面不安全,所以 ...
- BZOJ 1260 CQOI2007 涂色paint 动态规划
题目大意:给定一块木板,上面每一个位置有一个颜色,问最少刷几次能达到这个颜色序列 动态规划,能够先去重处理(事实上不是必需),令f[i][j]代表将i開始的j个位置刷成对应颜色序列的最小次数.然后状态 ...
- 计算 24 点是一种扑克牌益智游戏,随机抽出 4 张扑克牌,通过加 (+) ,减 (-) ,乘 ( * ), 除 (/) 四种运算法则计算得到整数 24 ,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写 joker 表示小王,大写 JOKER 表示大王:
include "stdafx.h" #include <iostream> #include <fstream> #include <string& ...
- mount rootfs
主要用到的命令为pivot_root,可man 8 pivot_root了解用法. 1. pivot_root - change the root filesystem pivot_root new_ ...
- configure: error: Cannot find OpenSSL's libraries
在Ubuntu 12.4.1 X64 位下编译安装PHP时提示 configure: error: Cannot find OpenSSL's libraries 确认已安装过 openssl.lib ...
- Servlet 打包部署
默认情况下,Servlet 应用程序位于路径 <Tomcat-installation-directory>/webapps/ROOT 下,且类文件放在 <Tomcat-instal ...