譯者:楊海祥
原文: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)目。
為了在這個(gè)項(xiàng)目中盡可能多的覆蓋更多的場(chǎng)景,完成這個(gè)項(xiàng)目會(huì)完成以下幾任務(wù):
為了這些目標(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ì)
使用 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)換。
下一步就是配置生成工具以便于指定我們?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)行下一步了。
一般情況下,我們將組成我們項(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è)元素。