在做Matter集成到Flutter中付翁,編譯打包APK闲礼,都沒有問題闯冷。在運行時崩潰读宙,報錯JNI FindClass called with pending exception java.lang.AbstractMethodError chip.DeviceController.ReportCallback onDone not implemented.
經(jīng)過檢查代碼發(fā)現(xiàn)ReportCallback onDone方法使用java8 interface default 特性彻秆。應(yīng)該不可能沒有實現(xiàn)。后檢查APK,發(fā)現(xiàn)
多了一個$-CC 的類
在網(wǎng)上搜索發(fā)現(xiàn)這個類和default實現(xiàn)有關(guān)结闸,好像是default方法就是這個類實現(xiàn)的唇兑,這樣就實現(xiàn)了默認(rèn)方法的效果。
但是疑惑的是桦锄,CHIP TOOL 打包的APK卻不是這樣的扎附,
沒有$-CC 類
后來發(fā)現(xiàn)自己的APP app/build.gradle minSdkVersion和 CHIP TOOL app的有點區(qū)別。我的APP是21结耀,而CHIP TOOL 是24.
寫到最后留夜,要使用JAVA 8 default 新特性,minSdkVersion 必須>=24.
把APP?minSdkVersion 改成24后图甜,再打包后沒有$-CC 類碍粥,運行一切正常。