java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy

简介: 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

这样的问题,提示文件找不到。

记住:一定要先执行一次   flutter pub get

无论是新建项目,还是老项目允许出现这个问题,先想办法让编译器找到这个文件。

我们看下配置信息:

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.parentFilemy_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所在的路径。

在网上找了一番后,总算找到了解决办法,修改配置如下:

1. if (!properties.getProperty('IS_PUBLISHED').toBoolean()) {
2.     setBinding(new Binding([gradle: this]))
3.     evaluate(new File(settingsDir,
4. 'flutter_module/.android/include_flutter.groovy'
5.     ))
6. }

再次build就能正常运行了。

PS:当项目能正常运行一段时间后,可以将settingsDir配置删除掉再试下,项目也能正常运行了

相关文章
|
27天前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
106 4
|
28天前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
45 8
|
25天前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
2月前
|
移动开发 Dart 搜索推荐
打造个性化安卓应用:从零开始的Flutter之旅
【10月更文挑战第20天】本文将引导你开启Flutter开发之旅,通过简单易懂的语言和步骤,让你了解如何从零开始构建一个安卓应用。我们将一起探索Flutter的魅力,实现快速开发,并见证代码示例如何生动地转化为用户界面。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供价值。
|
2月前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
92 7
|
3月前
|
开发框架 搜索推荐 开发工具
打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第51天】本文是一篇面向初学者的Flutter入门教程,旨在通过简单易懂的语言和实际代码示例,引导读者步入跨平台移动应用开发的世界。文章首先介绍了Flutter的基本概念和优势,然后逐步展示了如何搭建开发环境、创建第一个Flutter应用,并实现了一个简单的待办事项列表。最后,文章探讨了Flutter在实现高性能和美观界面方面的潜力,鼓励读者发挥创意,探索更多可能。
90 15
|
3月前
|
Dart 开发工具 Android开发
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
|
3月前
|
开发框架 Dart 前端开发
Android 跨平台方案对比之Flutter 和 React Native
本文对比了 Flutter 和 React Native 这两个跨平台移动应用开发框架。Flutter 使用 Dart 语言,提供接近原生的性能和丰富的组件库;React Native 则基于 JavaScript,具备庞大的社区支持和灵活性。两者各有优势,选择时需考虑团队技能和项目需求。
415 8
|
3月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
165 1
|
3月前
|
安全 Android开发 开发者
探索安卓开发的未来:Kotlin的崛起与Flutter的挑战
在移动开发的广阔天地中,安卓平台始终占据着举足轻重的地位。随着技术的不断进步和开发者需求的多样化,Kotlin和Flutter成为了改变游戏规则的新玩家。本文将深入探讨Kotlin如何以其现代化的特性赢得开发者的青睐,以及Flutter凭借跨平台的能力如何挑战传统的安卓开发模式。通过实际案例分析,我们将揭示这两种技术如何塑造未来的安卓应用开发。
84 6
下一篇
DataWorks