淺談Kotlin(一):簡介及Android Studio中配置

来源:http://www.cnblogs.com/xqxacm/archive/2017/05/18/6872794.html
-Advertisement-
Play Games

前言: 今日新聞:谷歌宣佈,將Kotlin語言作為安卓開發的一級編程語言。 Kotlin由JetBrains公司開發,與Java 100%互通,並具備諸多Java尚不支持的新特性。 谷歌稱還將與JetBrains公司合作,為Kotlin設立一個非盈利基金會。 一、簡介: Kotlin 是一個基於 J ...


前言:

  今日新聞:谷歌宣佈,將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(二):基本類型、基本語法、代碼風格

 

 

 

 

 

 

 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在4.4之前狀態欄一直是黑色的,在4.4中帶來了 windowTranslucentStatus 這一特性,因此可以實現給狀態欄設置顏色,如下圖所示,狀態欄顏色不再是黑色,而是可以定製的顏色。 國內將狀態欄變色叫做沉浸式狀態欄,時間久了,叫的人多了,大家就不再深究,預設了這種叫法。 ...
  • 1.自定義VideoView 實現全屏播放 2.welcome_layout 3.WelcomeActivity 運行截圖: 運行截圖: ...
  • 什麼是Handler? Handler可以發送和處理消息對象或Runnable對象,這些消息對象和Runnable對象與一個線程相關聯。每個Handler的實例都關聯了一個線程和線程的消息隊列。當創建了一個Handler對象時,一個線程或消息隊列同時也被創建,該Handler對象將發送和處理這些消息 ...
  • 從API level 24開始,fromHtml(String)被廢棄,使用fromHtml(String source, int flags) 代替 flags: FROM_HTML_MODE_COMPACT:html塊元素之間使用一個換行符分隔 FROM_HTML_MODE_LEGACY:htm ...
  • 今天與人聊到有關 charger battery safety 的 warning message, 認為說 warning message 真的有起到 保護 user 的作用? 譬如: battery 的 過充 warning message, 手機沒有電時,充電,人離開, 當手機過充時,顯示 w ...
  • 目錄: do-catch 斷言 Swift中方法可以使用throws來拋出程式執行過程中的異常,外部可以使用 do...catch 來捕獲使用try限定的方法拋出的異常。 使用assert([條件表達式])全局方法在程式中判斷表達式返回值是否為true來決定是否終止程式。 ...
  • 使用 PMIC_RGS_VCDT_HV_DET 判斷 charger 是否有 ovp。 LV_VTH : 4.15V ...
  •   UITableView是我們最常用的控制項了,今天我就來介紹一些關於UITableView的黑科技和一些註意的地方。 1.修改左滑刪除按鈕的高度   左滑刪除這是iOS最先發明的,之後安卓開始模仿。有時候我們需要對他進行自定義,比如添加圖片啊,修改字體和大小 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...