kotlin-android實(shí)戰(zhàn)項(xiàng)目(App項(xiàng)目通用配置--gradle及App類(lèi))

kotlin最早是在倆年前開(kāi)始接觸,一直有關(guān)注與學(xué)習(xí),作為大哥java的一個(gè)補(bǔ)充式的語(yǔ)言,給人一種清新的感覺(jué)。廢話(huà)不多說(shuō)了
先從project的配置來(lái)說(shuō)吧

//用來(lái)給android配置統(tǒng)一管理的,project的各類(lèi)module的
ext {
    compileSdkVersion = 25
    buildToolsVersion = "25.0.2"
    minSdkVersion = 17
    targetSdkVersion = 25
    versionCode = 1
    versionName = "1.0"
}
//一些基庫(kù)的版本配置
buildscript {
    ext.espresso_core_version = '2.2.2'
    ext.gradle_plugin_version = '3.0.0-alpha1'
    ext.realm_plugin_version="2.2.1"
    ext.kotlin_version = '1.1.2-4'
    ext.basic_lib_version='25.2.0'
    ext.junit_lib_version='4.12'
    ext.realm_lib_version='1.4.0'

    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        //realm
        maven {
            url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
        }
        jcenter()
        mavenCentral()
        maven { url "https://jitpack.io" }
        maven { url 'https://maven.google.com' }
    }

    dependencies {
        classpath "com.android.tools.build:gradle:$gradle_plugin_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        classpath "io.realm:realm-gradle-plugin:$realm_plugin_version"

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

主module的配置

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "com.twp.app.crm"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode rootProject.ext.versionCode
        versionName rootProject.ext.versionName

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
 }

那叢第一個(gè)kotlin類(lèi)開(kāi)始說(shuō)吧

class App : Application() {

    //登錄驗(yàn)證
    val loginname: String? by lazy { resources.getString(R.string.login_name) }
    val loginpwd: String? by lazy { resources.getString(R.string.login_pwd) }

    companion object {
        var instance: App? = null
            get() {
                if (field == null) {
                    field =  App()
                }
                return field
            }
    }

    var realm: Realm? = null
        get() {
            if (field == null) {
                Realm.init(this)
                field = Realm.getDefaultInstance()
            }
            return field
        }
    var iconfont: Typeface? = null
        get() {
            if (field == null) {
                field = Typeface.createFromAsset(assets, "iconfont/IcoMoon.ttf")
            }
            return field
        }
    var user: User? = null
        get() {
            if (field == null) {
                //user = User_PO.getUserModel(this);
                field = realm?.where(User::class.java)?.findFirst()
            }
            try {
                if (field!!.isValid && field!!.isManaged) {
                    return field
                }
            } catch (e: NullPointerException) {
                field = null
            }
            return field
        }

    override fun onCreate() {
        super.onCreate()
        instance = this
    }
}

App需要集成Application類(lèi)病配置到manifest中去,
loginname與loginpwd是做一個(gè)靜態(tài)登錄認(rèn)證,
by lazy 是懶加載使用
companion是kotlin的靜態(tài)塊,instance是保存App的一個(gè)靜態(tài)實(shí)例,用于保存工具或者其他實(shí)例,只提供get
?是Optional可選類(lèi)型,
App采用Realm來(lái)做orm數(shù)據(jù)存儲(chǔ),為了跟ios的數(shù)據(jù)存儲(chǔ)同步
iconfont是App中使用的所以圖標(biāo)庫(kù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容