RikkaApps/Shizuku-API

coreLibraryDesugaring导致的问题

L-JINBIN opened this issue · 1 comments

启用coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.2'对高版本API进行脱糖后,List的removeIf方法会被替换成调用iterator遍历,然后调用remove删除。
巧的是CopyOnWriteArrayList.COWIterator不支持remove方法,这导致Shizuku类里面几个调用removeIf的方法都会报错。
修改建议是把字段类型均改成CopyOnWriteArrayListCompat而不是List:

private static final CopyOnWriteArrayListCompat<ListenerHolder<OnBinderReceivedListener>> RECEIVED_LISTENERS = new CopyOnWriteArrayListCompat<>();
private static final CopyOnWriteArrayListCompat<ListenerHolder<OnBinderDeadListener>> DEAD_LISTENERS = new CopyOnWriteArrayListCompat<>();
private static final CopyOnWriteArrayListCompat<ListenerHolder<OnRequestPermissionResultListener>> PERMISSION_LISTENERS = new CopyOnWriteArrayListCompat<>();

打扰了,刚发现已经修复了