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配置删除掉再试下,项目也能正常运行了

相关文章
|
8天前
|
开发框架 搜索推荐 开发工具
打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第51天】本文是一篇面向初学者的Flutter入门教程,旨在通过简单易懂的语言和实际代码示例,引导读者步入跨平台移动应用开发的世界。文章首先介绍了Flutter的基本概念和优势,然后逐步展示了如何搭建开发环境、创建第一个Flutter应用,并实现了一个简单的待办事项列表。最后,文章探讨了Flutter在实现高性能和美观界面方面的潜力,鼓励读者发挥创意,探索更多可能。
53 15
|
1天前
|
Dart 开发工具 Android开发
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
在 Android 系统上搭建 Flutter 环境的具体步骤是什么?
|
11天前
|
开发框架 Dart 前端开发
Android 跨平台方案对比之Flutter 和 React Native
本文对比了 Flutter 和 React Native 这两个跨平台移动应用开发框架。Flutter 使用 Dart 语言,提供接近原生的性能和丰富的组件库;React Native 则基于 JavaScript,具备庞大的社区支持和灵活性。两者各有优势,选择时需考虑团队技能和项目需求。
71 8
|
8天前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
35 1
|
18天前
|
安全 Android开发 开发者
探索安卓开发的未来:Kotlin的崛起与Flutter的挑战
在移动开发的广阔天地中,安卓平台始终占据着举足轻重的地位。随着技术的不断进步和开发者需求的多样化,Kotlin和Flutter成为了改变游戏规则的新玩家。本文将深入探讨Kotlin如何以其现代化的特性赢得开发者的青睐,以及Flutter凭借跨平台的能力如何挑战传统的安卓开发模式。通过实际案例分析,我们将揭示这两种技术如何塑造未来的安卓应用开发。
46 6
|
27天前
|
搜索推荐 IDE 开发工具
打造个性化安卓应用:从零开始的Flutter之旅
在数字时代的浪潮中,拥有一款个性化且高效的移动应用已成为许多创业者和企业的梦想。本文将引导你使用Flutter框架,从零基础开始构建一个安卓应用,不仅涉及界面设计、功能实现,还包括性能优化的关键技巧。通过简洁易懂的语言和实用的代码示例,我们将一起探索如何让你的应用在众多竞争者中脱颖而出。 【8月更文挑战第31天】
|
27天前
|
存储 开发工具 Android开发
打造你的专属安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】在数字时代的浪潮中,拥有一款属于自己的应用不仅是梦想的启航,也是技术实力的展现。本文将引导你使用Flutter框架,轻松步入安卓应用的开发世界。无论你是编程新手还是希望拓展技能边界的开发者,跟随这篇指南,你将学会如何搭建开发环境、设计用户界面,并实现基本功能。让我们一起探索代码的力量,开启一段创造之旅吧!
|
28天前
|
移动开发 搜索推荐 开发工具
打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】探索Flutter,一个革命性的UI工具包,它让开发者能够使用一套代码库构建美观、快速的原生应用。本篇文章将带你领略Flutter的魅力,通过实际示例揭示如何快速搭建一个安卓应用。无论你是新手还是有经验的开发者,这篇文章都将为你提供价值。
|
30天前
|
搜索推荐 开发工具 Android开发
打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第29天】在这个数字时代,个性化的应用成为了展示自我风格的一种方式。本文将引导你通过Flutter框架,一步步构建属于你的首个安卓应用。我们将探索Flutter的核心概念,界面设计,以及如何将你的创意转化为现实。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供价值。让我们一起踏上这段创造性的旅程吧!
|
1月前
|
Java 调度 Android开发
Android经典实战之Kotlin的delay函数和Java中的Thread.sleep有什么不同?
本文介绍了 Kotlin 中的 `delay` 函数与 Java 中 `Thread.sleep` 方法的区别。两者均可暂停代码执行,但 `delay` 适用于协程,非阻塞且高效;`Thread.sleep` 则阻塞当前线程。理解这些差异有助于提高程序效率与可读性。
46 1