第一课 创建项目并设置统一第三方依赖版本

项目源码
https://github.com/liaozhoubei/NetEasyNews/tree/dev_kotlin

创建项目

新闻 app 项目开发开始啦,大家把板凳放好,耐心看一下这篇博文吧。

怎么创建项目就不说了,想必大家都不会陌生,在 Android studio 中选择创建新项目,然后选 next 就好了。

在这里插入图片描述

注意在第二步的时候:

  1. Language 语言选择kotlin
  2. Minimum API level 选则 apk 21 android 5.0

这时我们就创建了一个基于 kotlin 语言开发的Android 项目

更换支持包为 androidx

谷歌已经正式宣布 com.android.support 包将更换为 androidx 包,这是因为以前的 support 包版本太混乱,不好管理,所以更换了。

并且 support 包在 28 版本之后就不会继续更新了,所以如果还想使用support 包的话,就要将 targetversion 设置在 28 或者更低。

最近在创建项目的过程中也遇到了 ERROR: Failed to resolve: com.android.support:appcompat-v7:28.+ ,看来谷歌应该从 28.0.0 以后就没有再支持了。

当然更改为 androidx 很简单,但目前市面上大部分的第三方包都是基于support 开发的,而两者并不兼容,所有 androidx 暂时还没有扩散开来。

好了,在开始创建的项目中默认是使用 support 包的,所有我们要手动切换。

  1. 确保 android studio 版本在 3.2 及以上
  2. 在项目更目录中点击鼠标右键,Refactor -> Migrate to Androidx 就可以了,Android Studio 会自动把你项目中的依赖切换到 Androidx,并且修改项目中使用到依赖库的路径。

这里就不多做介绍了,可以自己上网搜一下怎么切换到 androidx 。

Android:你好,androidX!再见,android.support
https://www.jianshu.com/p/41de8689615d

配置项目依赖

在进行多模块的项目时,往往会出现依赖了不同版本的第三方库的情况,这里我们就要解决这个问题,对于第三方库版本进行统一管理。

我们在根目录下创建 versions.gradle 文件,在这个文件中放置我们所需要依赖的第三方库及设置第三方库的版本号。

ext.deps = [:]
def versions = [:]
versions.android_gradle_plugin = '3.4.1'
versions.kotlin = "1.3.31"
versions.glide = "4.9.0"
versions.constraint_layout = "1.1.3"
versions.retrofit = "2.6.0"
versions.support = "1.0.0"
...
ext.versions = versions

def deps = [:]

def support = [:]
support.annotations = "androidx.annotation:annotation:$versions.support"
...
deps.support = support

...

def build_versions = [:]
build_versions.min_sdk = 21
build_versions.target_sdk = 28
build_versions.build_tools = "28.0.3"
ext.build_versions = build_versions

ext.deps = deps

def addRepos(RepositoryHandler handler) {
    handler.google()
    handler.jcenter()
    handler.maven { url "https://jitpack.io" }
}
ext.addRepos = this.&addRepos

这里列出部分的依赖。

然后需要将这个文件纳入依赖管理之中,现在修改 project 的build.gradle 文件,如下:

buildscript {
	// 添加第三方依赖申明文件
    apply from: 'versions.gradle'
	// 添加仓库
    addRepos(repositories)
    dependencies {
        classpath deps.android_gradle_plugin
        classpath deps.kotlin.plugin
		dependencies here; they belong    
    }
}

allprojects {
    addRepos(repositories)
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

切记需要在 buildscript 中添加

apply from: 'versions.gradle'

否则将无法使用 versions.gradle 文件。

修改 module 中的 build.gradle 文件,如下:

android {
    compileSdkVersion build_versions.target_sdk
    buildToolsVersion build_versions.build_tools
    defaultConfig {
        applicationId "cn.bproject.neteasynews"
        minSdkVersion build_versions.min_sdk
        targetSdkVersion build_versions.target_sdk
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        // java 1.8才支持静态接口方法,否则会报以下错误
        // Error: Static interface methods are only supported starting with Android N (--min-api 24)
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation deps.kotlin.stdlib
    implementation deps.support.app_compat
    implementation deps.support.recyclerview
    implementation deps.support.cardview
    implementation deps.constraint_layout
	...
}

这样我们就修改完了,在看 build.gradle 文件,不在有具体的版本号,而是需要在 versions.gralde 中寻找。而且所有的版本都在 deps 这个域中,通过这个域调用其属性获取第三方依赖。

收工

OK,我们的第一课创建项目就已经完成了,创建项目很简单,就是配置统一的第三方库版本稍微需要花点时间。希望大家能掌握这个小技巧。

如果大家对于项目的后续感兴趣可以关注我的个人微信公众号,每次更新都会在上面进行推送,还可以加入QQ群共同进步呢

微信公众号: Android实战之旅

微信号: unidirection

扫描关注:

Android实战之旅

也可以申请加群,大家一起沟通交流

QQ 群:799054441

Android实战之旅群二维码.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值