Flutter 插件報 Couldn't read file LocalFile: "XXX/XXXX.kt" even though it exists!

這個問題由於沒有搜到中文解釋, 英文解釋大部分也不太到位, 我就寫了這個 blog 給有需要且善用搜索引擎的朋友一個提示, csdn的排名還是很靠前的

原因

這個我曾經跟隨過flutter的源碼, 這個是由於某個版本中 flutter sdk的 flutter_tool的源碼變動導致的

sdk源碼

flutter_tools只會在java文件夾中找java, kotlin文件中找kt文件, 屬於約定式修改
但早期的插件中, kotlin的插件是在java文件夾中的, 報錯信息也是由gradle來找尋, 這個錯誤的提示並不算友好, 讓人一頭霧水

解決方案

上面找到了原因就需要對症下藥了
可以參考這裏, 這個是已經解決了的問題

詳細步驟如下:

  1. 移動XXXXPlugin.kt的主入口文件, 從java到kotlin文件夾中
  2. 修改插件的build.gradle
android {
...
    sourceSets.main {
		...
        java.srcDirs = ['src/main/java', 'src/main/kotlin'] // 添加這行
    }
}

如果三方庫暫時不更新, 你又想繼續使用, 可以使用如下步驟:

  1. fork git 源碼
  2. 修改
  3. 項目中去除pub依賴, 使用git依賴以等待作者更新

使用git依賴的方式可以看 dart 官網的介紹: https://dart.dev/tools/pub/dependencies#git-packages

結語

其實定位問題也比較簡單, 可以在sdk文件夾中文本搜報錯信息中看起來不像動態的部分, 比如這裏就是Couldn't read file LocalFile, 然後查看上下文看看爲什麼會報出錯誤, 然後按圖索驥去修改即可

以上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章