浅谈Kotlin(一):简介及Android Studio中配置

浅谈Kotlin(一):简介及Android Studio中配置

浅谈Kotlin(二):基本类型、基本语法、代码风格

浅谈Kotlin(三):类

浅谈Kotlin(四):控制流

前言:

  今日新闻:谷歌宣布,将Kotlin语言作为安卓开发的一级编程语言。

      Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性。

      谷歌称还将与JetBrains公司合作,为Kotlin设立一个非盈利基金会。

一、简介:

     Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。JetBrains,作为目前广受欢迎的 Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。

   可以理解为类似于iOS的Swift。

二、特性:

  • 轻量级:
    • 这一点对于Android来说非常重要。项目所需要的库应该尽可能的小。Android对于方法数量有严格的限制,Kotlin只额外增加了大约6000个方法。
  • 互操作:
    • Kotlin可与Java语言无缝通信。这意味着我们可以在Kotlin代码中使用任何已有的Java库;因此,即便这门语言还很年轻,但却已经可以使用成百上千的库了。除此之外,Kotlin代码还可以为Java代码所用,这意味着我们可以使用这两种语言来构建软件。你可以使用 Kotlin开发新特性,同时使用Java实现代码基的其他部分。
  • 强类型:
    • 我们很少需要在代码中指定类型,因为编译器可以在绝大多数情况下推断出变量或是函数返回值的类型。这样就能获得两个好处:简洁与安全。
  • Null安全:
    • Java最大的一个问题就是null。如果没有对变量或是参数进行null判断,那么程序当中就有可能抛出大量的 NullPointerException,然而在编码时这些又是难以检测到的。Kotlin使用了显式的null,这会强制我们在必要时进行null检查。

三、Android Studio中的配置

  注意:

  Android Studio是Intellij IDEA的插件实现,Intellij IDEA是由JetBrains开发,Kotlin 就是JetBrains创造的。所以,要想使用Kotlin,你必须先使用起来Android Stduio。

  1、安装插件  选择这里的Kotlin相关的插件安装,有些文档中介绍有2个插件,其实目前这一个包含另一个了,所以安装一个就行,安装完之后会要求你重新打开Android Studio。

  2、重启完Android Studio之后在任意一个包下右键New , 会发现多了一个"Kotlin File/Class" 和 "Kotlin Activity"

  3、"Kotlin File/Class"即 Kotlin类或者文件

     "Kotlin Activity"即 Kotlin的Activity类

  4、试着建一个"Kotlin File/Class" 文件

     发现右上角有一个配置选项“Configure” , 默认第一次使用都需要配置一下

    选择对所有modules配置还是对指定的配置

    选择OK后,会跳到build.gradle文件下,你会发现app下的build.gradle和根目录下的build.gradle文件都会出现变化

    注意黄色背景部分,没有的自己手动添加上去。

    根目录下的build.gradle: 

buildscript {
    ext.kotlin_version = '1.1.2-4'
    ext.support_version = '23.1.1'
    ext.anko_version = '0.8.2'

    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

    app目录下的build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"

    defaultConfig {
        applicationId "com.xqx.xautoviewgroup"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    lintOptions {
        abortOnError false
    }
    buildTypes {
        debug {
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            versionNameSuffix "-debug"
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
            signingConfig signingConfigs.debug
        }

        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true

            // 移除无用的resource文件
            shrinkResources true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.github.bumptech.glide:glide:3.6.1'
    compile 'com.jph.takephoto:takephoto_library:4.0.3'
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile "org.jetbrains.anko:anko-common:$anko_version"

}
repositories {
    mavenCentral()
}

接下来就可以进行Kotlin的编码实战了。

浅谈Kotlin(一):简介及Android Studio中配置

浅谈Kotlin(二):基本类型、基本语法、代码风格

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java达人

java 处理xml的三种技术

最初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该语言的不断发展和完善,人们越来越发现它所具有的优点:例如标记语言可扩...

2085
来自专栏电光石火

基于Tcp协议的简单Socket通信实例(JAVA)

基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Sock...

2536
来自专栏老码农专栏

原 荐 一场版本升级引发的性能血案 - 之数

2103
来自专栏程序猿DD

Jenkins Pipeline插件十大最佳实践!

Jenkins Pipeline 插件对于 Jenkins 用户来说可以让用户能够改变游戏规则。基于 Groovy 中的领域特定语言(DSL),Pipeline...

46810
来自专栏我杨某人的青春满是悔恨

iOS 开发中的 ViewModel

MVVM 这个模式可能大家耳朵都听出茧了,但却没有多少人真正在项目中应用过,毕竟 Cocoa Touch 整体是基于“MVC”的,没有 Controller 根...

1538
来自专栏公有云大数据平台弹性 MapReduce

yarn公平调度详细分析(一)

FairScheduler是yarn常用的调度器,但是仅仅参考官方文档,有很多参数和概念文档里没有详细说明,但是这些参明显会影响到集群的正常运行。本文的主要目的...

1.2K17
来自专栏前端儿

<!DOCTYPE> 的理解

     今天被问道“有没有仔细了解过<!DOCTYPE>标签?”,愣了一下,因为一开始在W3cschool上看到过建议使用XHTML Transitional...

1122
来自专栏along的开发之旅

图解JSP运行原理和过程

下面代码通过注解来处理/hello的请求, 并在代码中将请求转发到上述hello.jsp.

731
来自专栏编舟记

一步步编写SonarQube Plugin

插件确实不好写,因为插件是插入庞大的系统当中工作的,那也就意味着写插件需要具备一定的领域知识,包括系统架构、扩展点、业务共性及差异、API及其业务模型对应、安装...

4082
来自专栏老码农专栏

TodoBackend展示应用以及ActFramework的实现

1175

扫码关注云+社区