java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy
Posted 一叶飘舟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy相关的知识,希望对你有一定的参考价值。
在flutter混合开发中,有时候会遇到
java.io.FileNotFoundException: /Users/nesger/Desktop/nesger_folder/project/studio/my_flutter/.android/include_flutter.groovy
这样的问题,提示文件找不到。
无论是新建项目,还是老项目允许出现这个问题,先想办法让编译器找到这个文件。
我们看下配置信息:
include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'my_flutter/.android/include_flutter.groovy'
))
new File(settingsDir.parentFile,'my_flutter/.android/include_flutter.groovy' ) 解读下这句话的意思就是指定 include_flutter.groovy 的所在位置。这里的意思是在 settings 文件所在目录(settingsDir)的父目录有个文件(settingsDir.parentFile)my_flutter/.android/include_flutter.groovy。看下下面的文件放置位置图就清楚了:
所以官网在跟项目同级创建 flutter module 是没问题的。但是我们现在改了,应该怎样设置呢?
上下图,然后大家考虑一下答案,再往下翻,相信聪明的你一定知道,改法有多种,下面提供一下几种方案。
Tips:注意相对路径的使用,重点是找到 include_flutter.groovy
解法一:(推荐)
include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir,
'sub/my_flutter/.android/include_flutter.groovy'
))
在 settings 所在目录有 sub/my_flutter/.android/include_flutter.groovy 文件
解法二:
include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'MyApp/sub/my_flutter/.android/include_flutter.groovy'
))
在 settings 所在目录的父目录有 MyApp/sub/my_flutter/.android/include_flutter.groovy 文件
有了上面图文并茂的讲解加上一个实际的 Sample,相信不管 flutter module 放在哪里你到可以关联到了。
最后再说个老项目遇到这种问题的解决办法。
下图是项目各模块的位置(flutter_module目录就是flutter相关代码):
从上图可以看到,settings.gradle与flutter_module处在根目录同一级下。
settings.gradle配置如下:
include ':***'
include ':biz-ss'
include ':***'
include ':runtime'
include ':app'
def localPropertiesFile = new File("gradle.properties")
def properties = new Properties()
localPropertiesFile.withReader("UTF-8") reader -> properties.load(reader)
// 非发布模式,添加本地依赖
if (!properties.getProperty('IS_PUBLISHED').toBoolean())
setBinding(new Binding([gradle: this]))
evaluate(new File(
'./flutter_module/.android/include_flutter.groovy'
))
include ':flutter_module'
这个配置是没有问题且可以正常运行,当换了个电脑重新运行,有时候会出现下面的错误:
org.gradle.api.GradleScriptException: A problem occurred evaluating settings '**-android_2.5.3'.
Caused by: java.io.FileNotFoundException: /Users/lzx/.gradle/daemon/6.1.1/flutter_module/.android/include_flutter.groovy (/Users/lzx/.gradle/daemon/6.1.1/flutter_module/.android/include_flutter.groovy)
at settings_2829oyj549dc28e9vwzq8kywa.run(/Users/lzx/Documents/git/**t-android_2.5.3/settings.gradle:13)
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
... 125 more
从报错可以看出,编译器没有找到正确的include_flutter.groovy所在的路径。
在网上找了一番后,总算找到了解决办法,修改配置如下:
if (!properties.getProperty('IS_PUBLISHED').toBoolean())
setBinding(new Binding([gradle: this]))
evaluate(new File(settingsDir,
'flutter_module/.android/include_flutter.groovy'
))
再次build就能正常运行了。
以上是关于java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy的主要内容,如果未能解决你的问题,请参考以下文章