Kotlinで書き直されたOkHttp 4.xはJavaで書かれた3.xと基本的にソース互換性・バイナリ互換性が保たれているが、バイナリ非互換でクラッシュするケースに遭遇した。https://t.co/ZE0VV1Gkwm
— Sho Ikeda (@ikesyo) 2020年2月17日
具体的には、「OkHttp 3.xのJavaNetCookieJarを使っているライブラリ」を使うアプリでOkHttp 4.xを使おうとすると、Util.delimiterOffsetというstaticメソッドがString.delimiterOffsetという拡張関数に変わっており、前者のメソッドが存在しなくて死んでしまう。
— Sho Ikeda (@ikesyo) 2020年2月17日
- 4.xの
String.delimiterOffset
: https://github.com/square/okhttp/blob/4bb66bcf5e1b11bd13f088cc78188c2bdc075c6f/okhttp/src/main/java/okhttp3/internal/Util.kt#L207-L227 - 3.xの
Util.delimiterOffset
: https://github.com/square/okhttp/blob/parent-3.14.6/okhttp/src/main/java/okhttp3/internal/Util.java#L363-L383