Support Libraryを27.1.0に更新した際に行った事のメモ

Support Library 27.1.0が公開されていたので更新しました。その際に行った作業のメモ。

developer.android.com

RecyclerView.Adapterの抽象メソッドが取る引数の型を変更

onCreateViewHolder、onBindViewHolderでそれぞれViewGroup、RecyclerView.ViewHolderがnon-null型に変更されていたので対応。

com.android.build.api.transform.TransformExceptionの対応

--stacktraceを付けてビルドすると以下のようなExceptionが発生してたので対応。ListAdapterが重複しているのが原因らしい。

Dex: Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v7/recyclerview/extensions/ListAdapter;
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Landroid/support/v7/recyclerview/extensions/ListAdapter;

com.android.dex.DexException: Multiple dex files define Landroid/support/v7/recyclerview/extensions/ListAdapter;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
        at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
        at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
        at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Paging Library 1.0.0-alpha6でSupport Library 27.1.0にListAdapterが移ったとのこと。そのためPaging Library 1.0.0-alpha6未満とSupport Library 27.1.0を同時に使用するとListAdapterが重複する。

https://developer.android.com/topic/libraries/architecture/release-notes.html#february_27_2018

解決策として、Paging Libraryを1.0.0-alpha6に更新したところExceptionは発生しなくなった。

Multidex Support Libraryのバージョンを更新

27.1.0対応とは関係無いが、1.0.3がリリースされているのに気づいたのでまとめて更新した。