google()
jcenter()
}
}
})
====================================================================================
表示的是该模块是给哪个人群用的。
-
debug表示是给自己用的。
-
relase表示是给外部人用的
-
internal表示是给内部人用的
如果你在项目目录下构建 debug、release或者internal的包,那么gradle会自动的关联main和对应的包的代码,这样,代码就会形成了不同的模式。
一般项目会默认有两种type,可以根据Android Studio最左边的Build Variant查看:
表示当前有两个版本,debug和release版本,通过切换版本,或者在对应的包上编写代码,我们可以给不同的群体用不同的App。并且在编译器在安装这些版本的时候,别的版本的代码是会忽略掉的,所以这样并不会导致APK体积增大或者效率变慢。
它的作用和buildTypes差不多,但是它又多了一层维度。这层维度是我们可以定义的一个维度。
比如,我们要在App原有的 debug(自己用)、relase(发布版)的上面,再加一层 付费版和免费版。
这样多一个维度后,就变成了: debug免费版、debug付费版、relase免费版、relase付费版,看下下面代码:
android {
…
//注意在声明productFlavors前,要声明flavorDimensions
flavorDimensions ‘cost’
//其中free和paid是自己定义的维度,这个方法并不是groovy定义,而是通过闭包的特性被创建出这么一个方法出来
productFlavors {
free {
}
paid {
}
}
}
构建好后,接下来再去查看Build Variants,就可以看到在原来的 debug、release又多了一个维度:
是不是觉得已经有点帮助了呢?
flavorDimensions
声明了维度的属性,可以自己定义,上面的 free和paid属于付不付钱的属性,所以我给它起名叫cost(你也可以叫别的)。我完全还可以在这上面,再多一层维度:
//在付费版、免费版属性的基础上,再多加一个国际化的属性
flavorDimensions ‘cost’, ‘nation’
productFlavors {
free {
dimension ‘cost’
}
paid {
dimension ‘cost’
}
china {
dimension ‘nation’
}
international{
dimension ‘nation’
}
}
其中china一个版、国际一个版,并用 dimension
来声明它是声明属性的
这样子看,项目突然就复杂了起来,但是这样子确实是对一些需求很复杂、工程量很大的项目,划分的稍微清晰、维护也方便了一点。这就有点像后台服务端的正式服、测试服这么一个说法。这种做法针对当前产品做出来的,具体该怎么用,或者用还是不用,都是可以很快讨论出来的。
从闭包的角度去理解的话,implementation ‘xxxxx’ 其实就是跟下面的代码差不多
//下面是伪代码:implementation ‘xxxxx’
denpendenciesHandler.add(‘implementation’,‘xxxxx’)
compile、implementation、api的区别:
complie在2018年被弃用,使用implementation和api取代之。而为什么会有这么一个现象,在于他们有不同的作用。
注1:首先compile、implementation、api这三个依赖方法并不是针对、解决远程依赖的问题的(因为我们单项目里用的很多都是远程的开源框架),因为这些远程框架他们更新的频率很低。而用来解决本地依赖所产生的一些问题!!!!!!
下面举例的Aproject、Bproject、Cproject的三个都是本地的项目。
注2:打包和编译是两个分开的概念。
- compile
传递依赖。
假如Aproject 通过compile依赖Bproject, 并且Bproject 通过compile依赖了 Cproject,就产生了一条依赖链A->B->C
那么编译之后,Aproject能够用引用Cproject的内容。
但这样做是由劣势的,因为如果Cproject 进行了改变,那必然会导致Bproject进行一次重新的编译,而Bproject重新的编译会导致Aproject也会进行一次重新编译。
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司21年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
的形式给大家展示一小部分。
[外链图片转存中…(img-UI331Ltv-1725633391414)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0