使用Kotlin创建Android项目
如果你已经使用过Android Studio和Gradle,那么这一章会比较简单。我不会给出很多细节和截图,因为用户界面和细节可能会一直变化。
我们的应用是由一个简单的天气app组成,正如所使用的Google's Beginners Course in Udacity。我们可能会关注不同的事情,但是app的想法都是一样的,你会发现在一个典型的app里面会包括很多不同的东西。如果你的Android开发水平比较低,我推荐这个,这个过程是比较容易的。
1. 在Android Studio中创建一个项目
首先,打开Android Studio并选择Create new Project,然后它会让你输入一个名字,你可以任意取一个名字,比如:Weather App。然后你需要输入公司域名。如果你不会真正发布这个app,这个字段就不是特别重要了,但是如果你有的话可以使用自己的域名。然后给任意选择一个目录作为这个项目的保存地址。
下一步,它会让你选择最小的API版本。我们选择API 15,因为我们有一个库需要至少API 15才能用。无论如何你把大部分的Anroid用户作为了目标。现在不要选择任何除了手机和平板的其它平台。
最后,我们需要选择一个Activity模版来作为入口。我们可以选择Add no Activity然后从头开始(这是一个好的方式如果这是一个Kotlin项目的话),但是我将选择Blank Activity,因为我待会儿会给你展示Kotlin插件一个好玩的小特性。
暂时不用去关心Activity的名字,layout等。这些你会在下一篇中知道。如果我们需要,我待会儿会修改它。点击Finish然后让它继续创建项目。
2. 配置Gradle
Kotlin插件包括一个让我们配置Gradle的工具。但是我还是倾向于保持我对Gradle文件读写的控制权,否则它只会变得混乱而不会变得简单。不管怎么样,在使用自动工具之前知道它是怎么工作的是个不错的主意。所以这次,我们将手动去做。
首先,你需要如下修改父build.gradle:
buildscript {
    ext.support_version = '23.1.1'
    ext.kotlin_version = '1.0.0'
    ext.anko_version = '0.8.2'
    repositories {
        jcenter()
        dependencies {
            classpath 'com.android.tools.build:gradle:1.5.0'
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
正如你看到的,我们创建了一个变量来存储当前的Kotlin版本。你读到这里的时候去检测一下最新版本,因为可能会有更新的版本已经发布了。我们需要在几个不同的地方用到那个版本号,比如你需要加上新的Kotlin插件的dependency。你会在你指定的那些模块中的build.gradle中再次需要到Kotlin标准库。
我们对于support library也是如此,Anko库也是同样的做法。用这个方式可以更方便地在一个地方修改所有的版本号。并且使用相同的版本号,更新的时候也不需要每个地方都修改。
我们会增加Kotlin标准库,Anko库,以及Kotlin和Kotlin Android Extensions plugin插件到dependencies。
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
    ...
}
dependencies {
    compile "com.android.support:appcompat-v7:$support_version"
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile "org.jetbrains.anko:anko-common:$anko_version"
}
buildscript {
    repositories {
      jcenter()
    }
    dependencies {
      classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}
Anko是一个用来简化一些Android任务的很强大的Kotlin库。我们之后将会学习部分anko,但是现在来说仅仅增加anko-common就足够了。这个库被分割成了一系列小的部分以至于我们不会把没用到的部分加进来。
3. 把MainActivity转换成Kotlin代码
Kotlin plugin包含了一个有趣的特性,它能把Java代码转成Kotlin代码。正如任何自动化那样,结果不会很完美,但是在你第一天能够使用Kotlin语言开始编写代码之前,它还是提供了很多的帮助。
所以我们在MainActivity.java类中使用它。打开文件,然后选择Code -> Convert Java File to Kotlin File。对比它们的不同之处,可以让你更熟悉这门语言。
4. 测试是否一切就绪
我们想再将编写一些代码来测试Kotlin Android Extensions是否在工作。我现在还不会对这些代码做解释,但是我想要确保它们在你的环境中是正常运行的。这可能是配置中最难的一部分。
首先,打开activity_main.xml,然后设置TextView的id:
<TextView
    android:id="@+id/message"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
然后,手动在Activity中增加一个import语句(不要担心你现在对这个还不太理解)。
import kotlinx.android.synthetic.main.activity_main.*
在onCreate中,你现在可以直接得到并访问这个TextView了。
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    message.text = "Hello Kotlin!"
}
多亏Kotlin和Java之间的互操作性,我们可以在Kotlin中像操作属性一样去操作Java库中的getter/setter方法。我们之后再去讲解属性,但是我想提醒的是,我们可以使用message.text来代替message.setText。编译器将会把它转换成一般的Java代码,所以这样使用是没有任何性能开销的。
现在运行这个app,并且它是正常运行的。检查TextView是否是显示的新的内容。如果你有疑问或者想查看代码,请在Kotlin for Android Developers repository查看。每个章节只要修改了代码,我都会进行提交,所以一定要检查所有的代码变化。
使用Kotlin创建Android项目的更多相关文章
- 创建Android项目时出错——No resource found that matches the given name 'Theme.AppCompat.Light'
		
创建Android项目时出错,error: Error retrieving parent for item: No resource found that matches the given nam ...
 - eclipse创建android项目失败的问题 [ android support library ]
		
有根筋搭错了,想起来android应用开发???? 放下两年的手机应用开发,昨天有更新了android SDK, 重新搭建开发环境. 这两年android 变化真TM的大............... ...
 - 创建Android项目及常见错误解决
		
首先打开eclipse,点击右上角有一个这个小按钮,点击java然后OK 因为切换到这个视图来创建android程序更加方便,然后点击 Next Next 这个地方可以修改android应用程序的图标 ...
 - cocos2d-x升级到3.4与创建android项目
		
cocos2d-x升级到3.4与创建android项目 1 升级安装cocos2d-x windows7 64位机器, 到官网下载cocos2d-x-3.4: http://www.cocos2d-x ...
 - Android开发中遇到的问题(三)——eclipse创建android项目无法正常预览布局文件
		
一.问题描述 今天使用SDK Manager将Android SDK的版本更新到了Android 5.1的版本,eclipse创建android项目时,预览activity_main.xml文件时提示 ...
 - 使用eclipse创建android项目的时候为什么会生成两个项目
		
使用eclipse创建android项目的时候为什么会生成两个项目 问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创 ...
 - 创建 Android 项目
		
创建 Android 项目 上一页下一页 您也应该阅读 项目概览 本课向您介绍如何使用 Android Studio 创建新的 Android 项目并介绍该项目中的一些文件. 在 Android St ...
 - 新版本ADT创建Android项目无法自动生成R文件解决办法
		
本人使用的是ADT是Version 23.0.2,支持Android 6.0之后的系统环境,最高版本23,在创建Android项目的时候,每次创建项目选择“Compile With”低于6.0版本的时 ...
 - 1) 十分钟学会android--建立第一个APP,创建android项目
		
一个Android项目包含了所有构成Android应用的源代码文件. 本小节介绍如何使用Android Studio或者是SDK Tools中的命令行来创建一个新的项目. Note:在此之前,我们应该 ...
 
随机推荐
- ButterKnife不同版本配置
			
7.0.1版本 compile 'com.jakewharton:butterknife:7.0.1' 8.0.1版本 module: apply plugin: 'com.android.appli ...
 - (4) go 运算符
			
1. (1) 整数相除,结果是小数,会舍去小数部分 (2) 使用自增自减时, ++ -- 必须单独一行 (3)只有后 a++,没有前 ++a 2. 3. 4. 5 6. 7. 8.
 - 洛谷——P2095 营养膳食
			
题目描述 Mr.L正在完成自己的增肥计划. 为了增肥,Mr.L希望吃到更多的脂肪.然而也不能只吃高脂肪食品,那样的话就会导致缺少其他营养.Mr.L通过研究发现:真正的营养膳食规定某类食品不宜一次性吃超 ...
 - 【模拟】 Codeforces Round #434 (Div. 1, based on Technocup 2018 Elimination Round 1) C. Tests Renumeration
			
题意:有一堆数据,某些是样例数据(假设X个),某些是大数据(假设Y个),但这些数据文件的命名非常混乱.要你给它们一个一个地重命名,保证任意时刻没有重名文件的前提之下,使得样例数据命名为1~X,大数据命 ...
 - 【计算几何】【凸包】【极角排序】【二分】Gym - 101128J - Saint John Festival
			
平面上n个红点,m个黑点,问你多少个黑点至少在一个红三角形内. 对红点求凸包后,转化为询问有多少个黑点在凸包内. 点在凸多边形内部判定,选定一个凸包上的点作原点,对凸包三角剖分,将其他的点极角排序之后 ...
 - 【动态规划】【记忆化搜索】hdu5965 扫雷
			
f(i,j,k)表示第i行,放的雷的状态为j{0表示不放,1表示往上放,2表示往下放,3表示上下都放},剩余还有k(0<=k<=2)个要放的方案数. 先给出我这个sb写的错误代码,死都没调 ...
 - django2与1的差别和视图
			
django1与2路由的差别 在django1中的url在django2中为re_path django2中新增了path 1.from django.urls import path 2.不支持正则 ...
 - Java后台JSON数据的使用
			
1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "secon ...
 - 【redis】2.redis可视化工具安装使用
			
redis可视化工具:Redis Desktop Manager 1.redis桌面管理工具[可视化工具]下载 下载地址:https://redisdesktop.com/download 2.点击安 ...
 - 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面
			
这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...