最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
配置好之后记得同步一下Gradle,然后就可以在项目的“外部库”中看到依赖的aar了,如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/1ae7a07b53ee4cca89f52da08e4eddb8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAYW5kcm9pZF9jYWlfbmlhbw==,size_11,color_FFFFFF,t_70,g_se,x_16)
-
关联source.jar和javadoc.jar
右击依赖的aar,然后选择“Library Properties”,效果如下:
如上图,可以看到,默认是不会自动帮我们关联source.jar和javadoc.jar的。点击最左边的加号来添加,如下:
在添加javadoc的时候,会弹一个框出来让你选择它是什么类型的,如下:
提示是说不知道这个javadoc.jar是什么文件各类,所以弹框让我们选择类型,就选JavaDocs即可,而在添加source.jar的时候Android Studio是自动识别类型的,就不会弹出这个对话框。
添加了source.jar和javadoc.jar之后,在敲代码时就可以看到对应的类的文档,或者看类的源代码。
需要注意的是,一个库项目中不能使用aar,因为在把这个库项目再打包为aar时就会报错,提示错误如下:
Execution failed for task ':AppList:bundleReleaseAar'.
> Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR. Previous versions of the Android Gradle Plugin produce broken AARs in this case too (despite not throwing this error). The following direct local .aar file dependencies of the :AppList project caused this error: E:\11_Workspace\01_AndroidStudio\AppListLib\AppList\libs\agentweb-4.1.4.aar
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
如果要在库项目中依赖第三方库,而且是jcenter中的依赖库,但又不想使用jcenter了,但又不能使用本地aar,怎么呢?可以去github上把该开源项目的源码拿下来,直接放到自己的库项目中,这样就没有问题了。 还有一个更简单的,如果确定这个开源项目没有使用到Android的资源文件,只是一个纯class包的话,可以使用source.jar,把这个放到libs目录即可,后来我又发现,source.jar中的源码有些时候并不是完整的,也就是说我们在使用aar的时候,点击某些类发现看不到源码,而有些类有源码,这说明aar对应的source.jar是不完整的,所以,为了安全起见,我们直接解压aar,里面有一个classes.jar,这里面对应的就是编译好的*.class文件了。
这样,我们就有了classes.jar和sources.jar,classes.jar需要我们手动重命令一下,加上开源项目的名称和版本号,然后和sources.jar一起放到libs目录中,如下:
然后在gradle中添加依赖,注意,不能使用下面这种依赖:
implementation fileTree(dir: "libs", include: ["*.jar"])
这样的话我不知道它是否会把source.jar也编译了,会不会和classes.jar造成冲突,我没有去实验,我使用了下面的依赖方式:
implementation fileTree(dir: "libs", include: ["commons-base-0.10.8-classes.jar", "anko-sdk27-0.10.8-classes.jar"])
这样我们就单独指定了只依赖两个classes.jar,同步gradle之后,classes.jar并不会出现在外部库列表,而是直接在libs目录中可以展开,当我们点击查看一个类的源码时,也是直接跳到libs目录的,如下:
我们随便打开一个class文件,这时在窗口右上方就有“选择源(S)…”,我们点击它来关联源代码,如下:
最后
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:
- Java基础部分
- 算法与编程
- 数据库部分
- 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**