项目源码
https://github.com/liaozhoubei/NetEasyNews/tree/dev_kotlin
创建项目
新闻 app 项目开发开始啦,大家把板凳放好,耐心看一下这篇博文吧。
怎么创建项目就不说了,想必大家都不会陌生,在 Android studio 中选择创建新项目,然后选 next 就好了。
注意在第二步的时候:
- Language 语言选择kotlin
- 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 包的,所有我们要手动切换。
- 确保 android studio 版本在 3.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
扫描关注:
也可以申请加群,大家一起沟通交流
QQ 群:799054441