這個問題由於沒有搜到中文解釋, 英文解釋大部分也不太到位, 我就寫了這個 blog 給有需要且善用搜索引擎的朋友一個提示, csdn的排名還是很靠前的
原因
這個我曾經跟隨過flutter的源碼, 這個是由於某個版本中 flutter sdk的 flutter_tool的源碼變動導致的
flutter_tools只會在java文件夾中找java, kotlin文件中找kt文件, 屬於約定式修改
但早期的插件中, kotlin的插件是在java文件夾中的, 報錯信息也是由gradle來找尋, 這個錯誤的提示並不算友好, 讓人一頭霧水
解決方案
上面找到了原因就需要對症下藥了
可以參考這裏, 這個是已經解決了的問題
詳細步驟如下:
- 移動XXXXPlugin.kt的主入口文件, 從java到kotlin文件夾中
- 修改插件的build.gradle
android {
...
sourceSets.main {
...
java.srcDirs = ['src/main/java', 'src/main/kotlin'] // 添加這行
}
}
如果三方庫暫時不更新, 你又想繼續使用, 可以使用如下步驟:
- fork git 源碼
- 修改
- 項目中去除pub依賴, 使用git依賴以等待作者更新
使用git依賴的方式可以看 dart 官網的介紹: https://dart.dev/tools/pub/dependencies#git-packages
結語
其實定位問題也比較簡單, 可以在sdk文件夾中文本搜報錯信息中看起來不像動態的部分, 比如這裏就是Couldn't read file LocalFile
, 然後查看上下文看看爲什麼會報出錯誤, 然後按圖索驥去修改即可
以上