2024年安卓最新Android Studio统一依赖管理Composing builds(2),2024年最新纪检委面试真题解析

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

coreKtxVersion : “1.2.0”,

supportLibraryVersion : “28.0.0”,

androidTestVersion : “3.0.1”,

junitVersion : “4.12”,

glideVersion : “4.11.0”,

okhttpVersion : “3.11.0”,

retrofitVersion : “2.3.0”,

constraintLayoutVersion: “1.1.3”,

gsonVersion : “2.7”,

rxjavaVersion : “2.2.2”,

rxandroidVersion : “2.1.0”,

…省略…

]

dependencies = [

//base

“constraintLayout” : “androidx.constraintlayout:constraintlayout:${version[“constraintLayoutVersion”]}”,

“appcompat” : “androidx.appcompat:appcompat:${version[“appcompatVersion”]}”,

“coreKtx” : “androidx.core:core-ktx:${version[“coreKtxVersion”]}”,

“material” : “com.google.android.material:material:1.2.1”,

//multidex

“multidex” : “com.android.support:multidex:${version[“multidexVersion”]}”,

//okhttp

“okhttp” : “com.squareup.okhttp3:okhttp:${version[“okhttpVersion”]}”,

“logging-interceptor” : “com.squareup.okhttp3:logging-interceptor:${version[“okhttpVersion”]}”,

//retrofit

“retrofit” : “com.squareup.retrofit2:retrofit:${version[“retrofitVersion”]}”,

“converter-gson” : “com.squareup.retrofit2:converter-gson:${version[“retrofitVersion”]}”,

“adapter-rxjava2” : “com.squareup.retrofit2:adapter-rxjava2:${version[“retrofitVersion”]}”,

“converter-scalars” : “com.squareup.retrofit2:converter-scalars:${version[“retrofitVersion”]}”,

…省略…

]

}

依赖写完之后,在root路径下的build.gradle

添加apply from: "config.gradle"

在这里插入图片描述

然后在需要依赖的module下的build.gradle中

dependencies {

// Retrofit + okhttp 相关的依赖包

api rootProject.ext.dependencies[“retrofit”]

}

以上就是Groovy ext扩展函数的依赖管理方式,此方式可以做到版本依赖,但是最大的缺点就是无法跟踪代码,想要找到上面示例代码中的rootProject.ext.dependencies["retrofit"]这个依赖,需要手动切到config.gradle去搜索查找,可读性很差。

二、使用buildSrc+kotlin的方式


buildSrc的方式,是最近几年特别流行的版本依赖管理方式。它有以下几个优点:

  • 支持双向跟踪

  • buildSrc是Android默认插件,全局只有这一个地方可以修改

  • 支持Android Studio的代码补全,以下演示示例图来自于网络

在这里插入图片描述

使用方式可参考:Kotlin + buildSrc for Better Gradle Dependency Management

缺点:buildSrc 依赖更新将重新构建整个项目,项目越大,重新构建的时间就越长,造成不必要的时间浪费。

三、Composing builds


Composing builds:A composite build is simply a build that includes other builds. In many ways a composite build is similar to a Gradle multi-project build, except that instead of including single projects, complete builds are included.(Composing builds只是包含其他构建的构建。 在许多方面,复合构建类似于Gradle多项目构建,不同之处在于,它包括完整的构建,而不是包括单个项目。)

使用这种方式的优点有:

1.支持单向跟踪

2.自动补全

3.依赖更新时,不会重新构建整个项目

使用方式

1.新建module,名为VersionPlugin(自起)

2.在新建的module下的build.gradle文件中,添加如下代码:

buildscript {

repositories {

jcenter()

}

dependencies {

// 因为使用的 Kotlin 需要需要添加 Kotlin 插件

classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10”

}

}

apply plugin: ‘kotlin’

apply plugin: ‘java-gradle-plugin’

repositories {

// 需要添加 jcenter 否则会提示找不到 gradlePlugin

jcenter()

google()

}

dependencies {

implementation gradleApi()

implementation “org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10”

}

compileKotlin {

kotlinOptions {

jvmTarget = “1.8”

}

}

compileTestKotlin {

kotlinOptions {

jvmTarget = “1.8”

}

}

gradlePlugin {

plugins {

version {

// 在 app 模块需要通过 id 引用这个插件

id = ‘com.controler.versionplugin’

// 实现这个插件的类的路径

implementationClass = ‘com.controler.versionplugin.VersionPlugin’

}

}

}

3.在 VersionPlugin/src/main/java/包名/ 目录下新建 DependencyManager.kt 文件,添加你的依赖配置,如:

package com.controler.versionplugin

/**

  • 配置和 build相关的

*/

object BuildVersion {

const val compileSdkVersion = 29

const val buildToolsVersion = “29.0.2”

const val minSdkVersion = 17

const val targetSdkVersion = 26

const val versionCode = 102

const val versionName = “1.0.2”

}

/**

  • 项目相关配置

*/

object BuildConfig {

//AndroidX

最后说一下我的学习路线

其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:

  1. 架构师筑基必备技能
  2. Android框架体系架构(高级UI+FrameWork源码)
  3. 360°Androidapp全方位性能调优
  4. 设计思想解读开源框架
  5. NDK模块开发
  6. 移动架构师专题项目实战环节
  7. 移动架构师不可不学习微信小程序
  8. 混合开发的flutter

Android学习的资料

我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。

330页PDF Android学习核心笔记(内含上面8大板块)

Android学习的系统对应视频

总结

我希望通过我自己的学习方法来帮助大家去提升技术:

  • 1、多看书、看源码和做项目,平时多种总结

  • 2、不能停留在一些基本api的使用上,应该往更深层次的方向去研究,比如activity、view的内部运行机制,比如Android内存优化,比如aidl,比如JNI等,并不仅仅停留在会用,而要通过阅读源码,理解其实现原理

  • 3、同时对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习

  • 4、android的方向也很多,高级UI,移动架构师,数据结构与算法和音视频FFMpeg解码,如果你对其中一项比较感兴趣,就大胆的进阶吧!

希望大家多多点赞,转发,评论加关注,你们的支持就是我继续下去的动力!加油!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

式是具体的,所以一定要加强下设计模式的学习

  • 4、android的方向也很多,高级UI,移动架构师,数据结构与算法和音视频FFMpeg解码,如果你对其中一项比较感兴趣,就大胆的进阶吧!

希望大家多多点赞,转发,评论加关注,你们的支持就是我继续下去的动力!加油!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值