海创软件组-20200712-两周小结

补充上两周的git内容

  • 忽略文件
    已知build目录下的文件是编译项目时自动生成的,所以不应添加到git中
    .gitignore文件的内容会被排除在git以外,且 .gitignore中指定的文件或目录是可以使用 “#”通配符的
    修改 .gitignore文件中内容,添加不想添加到git中内容的路径即可
  • 查看文件修改情况
    Git status
  • 查看文件更改内容
    Git diff
  • 查看某一部分更改的内容
    Git diff 路径
  • 撤销未提交的修改
    只要代码未提交,所有修改内容都是可以撤销的
    Git checkout 路径
    对已添加的文件,应先取消添加,再撤回提交
    Git reset HEAD 路径
  • 查看提交记录
    Git log
    • 查看单条记录
      Git log 记录id -1 //减号代表删除
    • 查看单条记录修改内容
      Git log 记录id -1 -p
  • 查看所有分支
    Git branch
  • 创建分支
    Git branch 分支名
  • 将代码切换到某一分支
    Git checkout 分支名
  • 将分支上提交的内容合并到主干线上:
    Git checkout 主干线名(master)
    Git merge 分支名 //需要两句语句
  • 删除分支
    Git branch -D 分支名
  • 将远程版本库代码下载到本地:
    Git clone 远程版本库git地址
    若要在此代码基础上做出修改和提交,要将本地修改内容同步到远程版本库上:
    Git push 远程版本库的地址 指定同步到哪一个分支
  • 将远程版本库上的修改同步到本地
    Git fetch origin master
    或 git pull origin master //此命令作用等于fetch+merge
    注:同步下来的代码并不会合并到任何分支上,而是存放到一个origin/master分支上
  • 查看远程版本库上修改的东西
    Git diff origin/master
  • 将origin/master 分支上的修改合并到主支上
    Git merge origin/master
  • 将代码托管到GitHub上
  • 在https://github.com/上建立一个版本库
  • 在Android Studio建项目
  • 将远程版本库克隆到本地
  • 将项目原本内容提交到远程版本库

推荐使用的开源库:

  • JoanZapata / android-iconify //字体库
  • YoKeyword/Fragmentation //Fragment库
  • JakeWharton/butterknife
  • ReactiveX/RxJava //基于响应式编程模型地一个库。基于观察者设计模式,进行链式的操作和处理
  • saiwu-bigkoo/Android-ConvenientBanner //轮播。滑动启动其实也是广告轮播
  • com.alibaba:fastjson //json依赖
  • orhanobut:logger //改变log打印的一个工具
  • greenrobot/greenDAO //数据库依赖
  • javapoet
  • CymChad/BaseRecyclerViewAdapterHelper

http协议

HTTP:超文本传输协议,由http请求和http响应

  • HTTP请求
    请求行+请求头+请求体
    • 请求行
      请求方式:get,post
      协议版本: http 1.0 (一次一个);http1.1(一次多个web资源)
    • 请求头(告知服务器)
      客户端发送给服务器端的一些信息,用键值对表示
      常见的请求头:
      Referer:浏览器通知服务器,当前请求来自何处
      If—Modified—Since:浏览器通知服务器,本地缓存的最后变更时间
      Cookie:与会话有关技术,用于存放浏览器缓存的cookie信息
    • 请求体
      当请求方式为post时,请求体会有请求的参数
      当请求方式为get时,请求的参数会出现在url地址后面
  • Http响应
    响应行+响应头+响应体
    • 响应行
      常见状态码:
      200:请求成功
      302:请求重定向
      304:请求资源没有改变,访问本地缓存
      404:请求的资源不存在
      500:服务器内部错误
    • 响应头
      服务器将信息以键值对的方式返回给客户端
  • 常见响应头
    Location:指响应的路径,与状态码302配合使用,完成跳转
    Content—Type:响应正文的类型(MIME类型)
    Content—Disposition:通过浏览器以下载方式解析正文
    Set—Cookie:与会话有关技术,服务器向浏览器载入cookie
  • 响应体(告知浏览器)
    服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染显示页面内容

解决重复依赖

将最底层的那个module里面的依赖从implementation改成api
原因:(api和implementation的区别)
推荐文章:https://www.jianshu.com/p/8962d6ba936e
implementation可以让module在编译时隐藏自己使用的依赖,但是在运行时这个依赖对所有模块是可见的。而api与compile一样,无法隐藏自己使用的依赖。
举个例子,在使用本地依赖的情况下 App依赖 moduleA,moduleA 依赖 moduleB,当moduleA使用api依赖moduleB时,App可以使用moduleB
如果使用api依赖,一个module发生变化,这条依赖链上所有的module都需要重新编译;而使用implementation,只有直接依赖这个module需要重新编译。另外,在使用本地依赖的情况下使用implementation build会比使用api要快。
在全部远程依赖模式下,无论是api还是implemention都起不到依赖隔离的作用。

一些butterknife使用心得:

新版的bug挺多,最好别用
推荐一篇文章,各种坑讲的很详细https://www.jianshu.com/p/69e09a4b5343
用的时候除了添加依赖,还要记得在build文件开始的位置加上

apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'

并且在文件根目录的build下加上
classpath 'com.jakewharton:butterknife-gradle-plugin:10.0.0'
这个是我用的版本另外说明下我的AS版本:3.6.3,Gradle版本:5.6.4,buildToolsVersion版本:29.0.3。
两个都要加,不然你会发现你没有生成R2。一般来说正常敲代码下来是不会出现我这个问题的,我是搬别人代码又没有全搬才会有这个问题

这两周的一些报错

  • Error: Static interface methods are only supported starting with Android N (–min-api 24)
    错误原因:这是因为java8才支持静态接口方法的原因
    解决办法:可以通过在app的build.gradle文件中配置使用java8编译:
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
  • Android引包出现Duplicate class com.xxx.xxx found in modules错误
Dupliate clas rtrofi2 Bit Duplicate class retrofit2 http.Query found in modules retrofit- 2.0.2.jar (com. ppunity
.retrofit2:retrofit:2.0.2) and retrofit-2.3.0.jar (com. squareup. retrofit2:retrofit:2.3.8)
Duplicate class retrofit2.http.QueryMap found in modules retrofit-2.0.2.jar (com. appunity
.retrofit2:retrofit:2.0.2) and retrofit-2.3.0.jar (com. squareup. retrofit2:retrofit:2.3.0)
Duplicate class retrofit2.http.streaming found in modules retrofit - 2.0.2.jar (com. appunity
.retrofit2:retrofit:2.0.2) and retrofit-2.3.e.jar (com. squareup. retrofit2:retrofit:2.3.8)
Duplicate class retrofit2.http.Ur1 found in modules retrofit-2.8.2.jar (com. appunity,
. .retrofit2:retrofit:2.0.2) and retrofit-2.3.0.jar (com. squareup.retrofit2:retrofit:2.3.0)

Go to the documentation to learn how to Fix dependency resolution errors。
两个包发生了冲突,可以选择删除其中一个,或者是重新导入另一个版本
我个人的解决方法是将上面那个换成下面那个

//implementation 'com.appunity.retrofit2:converter-scalars:2.0.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'

另外有碰到个没有办法解决的报错,在这里记录一下:

Attempt to use @BindView for an already bound ID 0 on 'mEmail'. (com.example.latter.ec.sign.SignInDelegate.mPassword)
    TextInputEditText mPassword = null;
    //已尝试但结果为失败的修改方法:修改变量名、更换依赖版本

最后写给自己看的记录一些小知识点

  • 可用于判断邮箱格式是否正确
Patterns.EMAIL_ADDRESS.matcher(email).matches()  
  • 使用chrome,在网址上输入inspect/#devices就可以看到AS的project的某些信息
  • Main/Res 里面建一个raw文件,AS会自动在此文件生成vid,此id为int型

你可能感兴趣的:(海创软件组)