关于Okhttp3(一)源码编译

不是有位大神说过学习编码的最好途径就是:Read the fucking source
code。工欲善其事,必先利其器。今天我们先把源码弄下来吧!

一 okhttp3源码

1.1 源码版本说明

github源码地址
源码分支4.x后使用kotlin
后续文章分析使用okhttp_3.14.x分支
Okhttp是使用Maven构建

1.2 源码编译

1.2.1 编译平台

系统:ubuntu14.04
IDE:IntelliJ IDEA
JDK:openjdk version “1.8.0_222”

1.2.2 工具选择

Okhttp3 工程不是Android工程,不要用Android Studio打开,不要用Android Studio打开,不要用Android Studio打开。
查看此源码的最好工具是IntelliJ IDEA。下载、安装IntelliJ IDEA请自行研究,没有什么难的。

1.2.3 导入源码

打开IDEA(第一次需要选在是否导入已存在的配置,按需选择),点击Import Project—进入源码现在目录—点击pom.xml文件,一直next下去—finish(如需修改工程名字,在finish界面修改即可),等待IDEA导入所需的依赖包,此过程有点长,亲试编译差不多用了半小时。

导入成功后是这样的:
完整项目截图

1.2.4 项目结构

1.mockwebserver — 模拟服务器,有用
2.okhttp — 源码
3.okhttp-logging-interceptor — 日志拦截器,可以自己实现的
4.okhttp-urlconnection — 连接方式,用不上
我们主要研究的是okhttp源码,负责项目mockwebserver,其他目前没用。

二 okhttp3遇到的问题

2.1 首次编译okhttp工程报version错误

问题描述:
version错误
原因:
这是因为okhttp的版本号是自动生成的,Version.java不在src文件夹下,我们要自动添加。
解决方法:
选中okhttp工程,右键-open module settings
在这里插入图片描述

2.2 AndroidPlatform.java平台相关报错

原因:
主要是Android sdk没有引入,此处使用的是4.1.1.4的sdk,在pom.xml中可以查看。
解决方法:
引入相关的Android sdk
如果实在无能导入(原因你懂的)把AndroidPlatform.java中的

public void log(int level, String message, Throwable t) {
	// 里面的语句注释掉,此处使用了Log,没有任何影响,再次编译即可
}

2.3 Android10Platform.java相关报错

public void configureTlsExtensions(
      SSLSocket sslSocket, String hostname, List<Protocol> protocols) throws IOException {
    try {
      ......
      //需要使用java11
      //sslParameters.setApplicationProtocols(protocolsArray);
	  ......
    } catch (IllegalArgumentException iae) {
	  ......
    }
  }
public @Nullable String getSelectedProtocol(SSLSocket socket) {
    //需要使用java11
//    String alpnResult = socket.getApplicationProtocol();
//
//    if (alpnResult == null || alpnResult.isEmpty()) {
//      return null;
//    }
//
//    return alpnResult;
    return null;
  }

因为我的JDK环境是java8,需要java11,所以这编译不过去,暂时注掉了,不影响源码编译。

2.4 JDK相关报错

问题描述:
IntelliJ中无编译错误,运行测试时报错:java: javacTask: source release 8 requires target release 1.8
原因:
需要使用jdk1.8
解决方案:
将目标字节码版本设为1.8。

2.5 run的时候没有可选择的module

操作步骤:
具体操作:Edit Configurations
在左上角添加一个Application,然后设置,如图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三 项目

Okhttp3.14.x源码分析+测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值