在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Android 項(xiàng)目是如何使用 Kotlin 語(yǔ)言生成的 1/2
101 種讓你的網(wǎng)頁(yè)看起來更酷的方法
Android 項(xiàng)目是如何使用 Kotlin 語(yǔ)言生成的 1/2
Nimbledroid 版本更新
使用TypeScript提高開發(fā)能力
利用 TensorFlow Serving 系統(tǒng)在生產(chǎn)環(huán)境中運(yùn)行模型
Google Play 榜單APP冷啟動(dòng)速度分析報(bào)告
使用微信控制電腦(Python 版)
jQuery 3 中的新變動(dòng)
RxAndroid 基礎(chǔ):第一部分
Swift in 2016
UI自動(dòng)化測(cè)試基于Activity的封裝模式
2016年,有哪些適合你學(xué)習(xí)的編程語(yǔ)言?
Swift 響應(yīng)式編程
如何組合使用 VIM 編輯器與 IPYthon
如何使你的app更加流暢
介紹用來選擇輪廓圖像的一個(gè)類——Will J Miller
關(guān)于Android N 開發(fā)者預(yù)覽版的一些隨想

Android 項(xiàng)目是如何使用 Kotlin 語(yǔ)言生成的 1/2

譯者:楊海祥

原文:Building a Kotlin project 1/2

本文為極客學(xué)院Wiki組織翻譯,轉(zhuǎn)載請(qǐng)注明出處。

時(shí)間:2016.3.16

第一部分

學(xué)習(xí)一門新語(yǔ)言最好的方式就是在真實(shí)的開發(fā)中使用它。這篇博客就秉承這一原則使用 Kotlin 生成一個(gè) Android 項(xiàng)目。

場(chǎng)景

為了在這個(gè)項(xiàng)目中盡可能多的覆蓋更多的場(chǎng)景,完成這個(gè)項(xiàng)目會(huì)完成以下幾任務(wù):

  • 訪問網(wǎng)絡(luò)
  • 通過 Rest API 獲取數(shù)據(jù)
  • 數(shù)據(jù)的反序列化
  • 在列表中顯示圖片

為了這些目標(biāo),為什么不做一個(gè)顯示小貓的應(yīng)用呢?

使用 http://thecatapi.com/ 網(wǎng)站的 API,我們可以獲取很多小貓的圖片。 http://wiki.jikexueyuan.com/project/geekdigest/images/kitten_app.png" alt="" />

依賴

看上去這是一個(gè)嘗試一些非??岬墓ぞ邘?kù)的好機(jī)會(huì)

  • Retofit2 用于訪問網(wǎng)絡(luò)、進(jìn)行 Rest API 的調(diào)用以及數(shù)據(jù)的反序列化。
  • Glide 是用于顯示圖片的庫(kù)。
  • RxJava 可以綁定數(shù)據(jù)。
  • RecyclerView CardView 可以用作 UI。
  • 所有的東西都都包裝在 MVP 模式中。

新建項(xiàng)目

使用 Android Studio 非常方便地就可以新建一個(gè) Android 項(xiàng)目。

開始新的 Android 項(xiàng)目

http://wiki.jikexueyuan.com/project/geekdigest/images/start_new_android_project.png" alt="" />

創(chuàng)建新的項(xiàng)目

http://wiki.jikexueyuan.com/project/geekdigest/images/create_new_project.png" alt="" />

選擇目標(biāo) Android 設(shè)備

http://wiki.jikexueyuan.com/project/geekdigest/images/select_target_device.png" alt="" />

添加 Activity

http://wiki.jikexueyuan.com/project/geekdigest/images/add_activity.png" alt="" />

配置 Activity

http://wiki.jikexueyuan.com/project/geekdigest/images/customize_activity.png" alt="" />

點(diǎn)擊完成后就會(huì)根據(jù)選擇的模板生成一個(gè)新的項(xiàng)目。

http://wiki.jikexueyuan.com/project/geekdigest/images/press_finish_then_new_project.png" alt="" />

現(xiàn)在就可以開始我們的 Kitten 應(yīng)用了。 不過,現(xiàn)在的代碼依舊是 Java 編寫的,隨后我們會(huì)看到如何轉(zhuǎn)換。

定義 Gradle 生成工具

下一步就是配置生成工具以便于指定我們?cè)谶@個(gè)項(xiàng)目中會(huì)使用到的庫(kù)。

在開始下面這一步驟之前,請(qǐng)先在這篇博客中看一下在使用 Android Kotlin 之前需要做哪些配置工作。

打開 Module:App build.gradle ( 在下圖中已由紅色的框標(biāo)出)。

http://wiki.jikexueyuan.com/project/geekdigest/images/build_gradle.png" alt="" />

在單獨(dú)的腳本中存儲(chǔ)所有庫(kù)的版本然后通過 Gradle 提供的 ext 屬性對(duì)象進(jìn)行訪問是一個(gè)非常不錯(cuò)的方法。

最簡(jiǎn)單的方法就是在 build.gradle 文件開始增加下面這段代碼。

buildscript {
  ext.compileSdkVersion_ver = 23
  ext.buildToolsVersion_ver = '23.0.2'

  ext.minSdkVersion_ver = 21
  ext.targetSdkVersion_ver = 23
  ext.versionCode_ver = 1
  ext.versionName_ver = '1.0'

  ext.support_ver = '23.1.1'

  ext.kotlin_ver = '1.0.0'
  ext.anko_ver = '0.8.2'

  ext.glide_ver = '3.7.0'
  ext.retrofit_ver = '2.0.0-beta4'
  ext.rxjava_ver = '1.1.1'
  ext.rxandroid_ver = '1.1.0'

  ext.junit_ver = '4.12'

  repositories {
      mavenCentral()
  }

  dependencies {
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_ver"
  }
}

然后按如下添加 Kotlin 插件

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

在為我們所需要的庫(kù)添加依賴之前,先使用文件開始處的 ext 屬性值修改版本號(hào)。

android {
  compileSdkVersion "$compileSdkVersion_ver".toInteger()
  buildToolsVersion "$buildToolsVersion_ver"

  defaultConfig {
    applicationId "com.github.cirorizzo.kshows"
    minSdkVersion "$minSdkVersion_ver".toInteger()
    targetSdkVersion "$targetSdkVersion_ver".toInteger()
    versionCode "$versionCode_ver".toInteger()
    versionName "$versionName_ver"
}
...

再對(duì) buildTypes 節(jié)進(jìn)行修改

buildTypes {
    debug {
        buildConfigField("int", "MAX_IMAGES_PER_REQUEST", "10")
        debuggable true
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

    release {
        buildConfigField("int", "MAX_IMAGES_PER_REQUEST", "500")
        debuggable false
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}

接下來就是聲明在本項(xiàng)目中所用到的庫(kù)。

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  testCompile "junit:junit:$junit_ver"

  compile "com.android.support:appcompat-v7:$support_ver"
  compile "com.android.support:cardview-v7:$support_ver"
  compile "com.android.support:recyclerview-v7:$support_ver"
  compile "com.github.bumptech.glide:glide:$glide_ver"

  compile "com.squareup.retrofit2:retrofit:$retrofit_ver"
  compile ("com.squareup.retrofit2:converter-simplexml:$retrofit_ver") {
    exclude module: 'xpp3'
    exclude group: 'stax'
}

  compile "io.reactivex:rxjava:$rxjava_ver"
  compile "io.reactivex:rxandroid:$rxandroid_ver"
  compile "com.squareup.retrofit2:adapter-rxjava:$retrofit_ver"

  compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_ver"
  compile "org.jetbrains.anko:anko-common:$anko_ver"
}

最后,項(xiàng)目的 build.gradle 就可以工作了。

此外需要注意的一點(diǎn)是,我們需要為 uses-permission 增加互聯(lián)網(wǎng)訪問權(quán)限,因此在 AndroidManifest.xml 文件增加如下行:

<uses-permission android:name="android.permission.INTERNET" />

那么,現(xiàn)在我們就可以進(jìn)行下一步了。

設(shè)計(jì)項(xiàng)目結(jié)構(gòu)

一般情況下,我們將組成我們項(xiàng)目的不同的類放置在不同的文件或者包中。所以我們可以按如下結(jié)構(gòu)組織我們的項(xiàng)目:

http://wiki.jikexueyuan.com/project/geekdigest/images/project_structure.png" alt="image here" />

點(diǎn)擊根包 com.github.cirorizzo.kshows 然后點(diǎn)擊新建再選擇 Package。

編碼

下一篇博客包括如何編碼生成 Kitten 應(yīng)用中的各個(gè)元素。