使用Google Component构建现代化Android架构(in kotlin)【第一篇:安装所需组件】

前言

本文受众为2018年的Android开发者,假如你还没有尝试过「观察者模式」的话,本文应该是一个最佳实践的机会。

全文依赖于Google在2017年推出的Google Component组件,它们包括了:
1.ViewModel
2.LiveData
3.Room(本文中使用更强大的ObjectBox替代)
4.Paging(本文中未涉及)
5.LifecycleObserver & LifecycleOwner

(发表于developer.android.com的文章《Guide to App Architecture》 无疑是学习它们的最佳途径。)

本文还涉及到了一些其它的框架组件,它们包括了:
1.Dagger2
2.ObjectBox
3.LeanCloud SDK
4.Glide
旨在解决「依赖注入」、「持久化存储」、「构建服务器并访问」、「图片加载」这四个问题

启发

几天前在学习Dagger2的时候,看到了一篇来自Elye的文章: 《Dagger 2 for Dummies in Kotlin》。
这篇文章让我看到了关注点分离准则(SoC)在技术博客上得到实现。

如果一篇博客希望自己做太多的事情,就会过于冗长,以至于让人失去看下去的勇气,而大多数人看技术博客的目的是仅仅是快速上手。
所以,本文也会试着在使用极少的代码的情况下来阐述如何「使用Google Component构建现代化Android架构」。

安装所需组件

首先,我们要使用Android Studio建立一个包含Kotlin模块的Project,关于如何使用Android Studio建立Kotlin项目请参考互联网中其他文献,此处不再赘述。

第一步:安装kapt编译器插件

kapt编译器插件是Kotlin的注释处理器,我们安装kapt编译器插件后就可以在Kotlin项目中使用Dagger2或Data Binding等依赖于注释的library。
我们在build.gradle中进行配置(后同,不再赘述),配置命令如下:

build.gradle(app)

apply plugin: 'kotlin-kapt'

使用kapt代替annotationProcessor

在安装完kapt编译器插件后,我们需要将build.gradle(app)中dependencies代码块下面的所有"annotationProcessor"使用"kapt"替代,这表示了以后注解这块没有annotationProcessor的事儿了,将全权由kapt代理......

第二步:安装Google Components到项目中

build.gradle(project)

allprojects { 
    repositories {
        jcenter()
        google()
    }
}

build.gradle(app)

dependencies { 
    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:1.1.1"
    kapt "android.arch.lifecycle:compiler:1.1.1"
    // Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:1.1.1"
}

第三步:安装Dagger2依赖注入框架

build.gradle(app)

dependencies {
    // ... other dependencies ...
    implementation 'com.google.dagger:dagger:2.15'
    kapt 'com.google.dagger:dagger-compiler:2.15'
}

第四步:安装ObjectBox数据库

build.gradle(project)

buildscript {
    dependencies {
        // ... other classpath ...
        classpath "io.objectbox:objectbox-gradle-plugin:1.5.0" 
    }
}

build.gradle(app)

apply plugin: 'io.objectbox'

第五步:安装Glide

build.gradle(app)

dependencies {
    // ... other dependencies ...
    implementation 'com.github.bumptech.glide:glide:4.7.1'
    kapt 'com.github.bumptech.glide:compiler:4.7.1'
}

第六步:安装LeanCloud SDK

builde.gradle(project)

别看下面写了一大堆,但是只是添加了两行maven。

buildscript { 
    repositories {
        // ... other repositories ...
        maven {
            url "http://mvn.leancloud.cn/nexus/content/repositories/public"
        }
    }
    dependencies{
        //......
    }
}

allprojects {
    repositories {
        // ... other repositories ...
        maven {
            url "http://mvn.leancloud.cn/nexus/content/repositories/public"
        }
    }
}

build.gradle(app)

android { 
    // ... other android ...
    //为了解决部分第三方库重复打包了META-INF的问题
    packagingOptions{
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        abortOnError false
    }
}
dependencies {
    // ... other dependencies ...
    // LeanCloud 基础包
    implementation ('cn.leancloud.android:avoscloud-sdk:v4.6.4')
    // 推送与实时聊天需要的包
    implementation ('cn.leancloud.android:avoscloud-push:v4.6.4@aar'){transitive = true}
    // LeanCloud 统计包
    implementation ('cn.leancloud.android:avoscloud-statistics:v4.6.4')
    // LeanCloud 用户反馈包
    implementation ('cn.leancloud.android:avoscloud-feedback:v4.6.4@aar')
    // avoscloud-sns:LeanCloud 第三方登录包
    implementation ('cn.leancloud.android:avoscloud-sns:v4.6.4@aar')
    implementation ('cn.leancloud.android:qq-sdk:1.6.1-leancloud')
    // LeanCloud 应用内搜索包
    implementation ('cn.leancloud.android:avoscloud-search:v4.6.4@aar')
}

第七步:解决LeanCloud引入后带来的错误

LeanCloud正在使用版本为"18.0.0"的支持包,而我们正在使用版本为"27.1.1"的支持包,所以我们需要在gradle.build(app)中将其统一起来。

android {
    // ... other android ...
    configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == 'com.android.support') {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion '27.1.1'
                }
            }
        }
    }
}

本篇结束

本篇结束后,我们把该安装的都安装上了。在下一节中,我们将会学习如何使用LeanCloud构建我们的网络数据库,并使用本节安装的组件从LeanCloud中获取数据并展示在UI中。

你可能感兴趣的:(使用Google Component构建现代化Android架构(in kotlin)【第一篇:安装所需组件】)