Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置

【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置

原创
作者头像
卓伊凡
发布于 2025-02-17 15:26:30
发布于 2025-02-17 15:26:30
27100
代码可运行
举报
文章被收录于专栏:java开发java开发
运行总次数:0
代码可运行

【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了

问题背景

很多人 在这步被难倒,这个世界上根本没有那么多程序员,卓伊凡最近救火一个项目找了不下40个“专业程序员”,其中有个大学生比较上进还能写一两个页面,能思考爱学习没问题,然后另外有一位兄弟也有能力(自己说是9年经验),其他的一言难尽,遇到有些连环境都安装3天的,还有配置打包配置一周的,还有很多不一一提了,我都不知道他们是怎么去做外包的,反正大部分人对gradle agp ndkVersion 完全一窍不通,感觉是混的,包括maven和他们的关系完全是昏的,直接开始吧,记录下也为我自己好用,目前救火项目里面6个同事只有2个人环境是好的,不过没关系只要我们爱学习求上进就没问题,给大家说某宝上找人搭建处理环境一般收费都是100-200一次,就下面这个很简单的过程,但是在卓伊凡做开发的过程中发现,这个世界上菜鸟比想象中要多。

打包方法

首先用android studio 打开 flutter 项目中的android目录

这个就是flutter中的android目录

然后打开

我刚拉的代码,进入后点击sync 分析就报错

A problem occurred evaluating settings ‘android’. flutter.sdk not set in local.properties. Expression: (flutterSdkPath != null). Values: flutterSdkPath = null

这个是个简单的额问题,就是flutter sdk的路劲未指定,毕竟每个同事电脑环境不同

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flutter.sdk=D:\\soft\\flutter
sdk.dir=D\:\\soft\\Android\\sdk

修改 这个 local.properties 文件,

继续restart 运行

A problem occurred evaluating root project ‘android’.

Could not get unknown property ‘ndkVersion’ for object of type org.gradle.internal.extensibility.DefaultExtraPropertiesExtension.

报错

提示没有ndk ,

安装ndk,这里我们需要介绍下知识

ndkVersion 是 Android NDK(Native Development Kit)的版本号。以下是关于 ndkVersion 的详细解释:

  1. 什么是 NDK? NDK 是 Android 提供的一个工具集,用于开发使用 C/C++ 编写的本地代码(Native Code)。 它允许开发者将部分性能关键代码用 C/C++ 实现,并与 Java/Kotlin 代码结合使用。
  2. ndkVersion 的作用 ndkVersion 用于指定项目中使用的 NDK 版本。 在 build.gradle 文件中,通过 ndkVersion 可以明确告诉 Gradle 使用哪个版本的 NDK 进行编译。
  3. 为什么需要 ndkVersion? 如果你的项目使用了 NDK(例如,通过 Flutter 插件或直接使用 C/C++ 代码),则需要指定 NDK 版本。 如果不指定 ndkVersion,Gradle 会使用默认的 NDK 版本,但可能会导致兼容性问题。

进入 SDK Manager: 点击 File > Settings(Windows)或 Android Studio > Preferences(macOS)。 选择 Appearance & Behavior > System Settings > Android SDK。

等待下载安装

查看安装的版本

手动配置版本

在 local.properties 文件中添加 NDK 路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sdk.dir=D\:\\soft\\Android\\sdk
flutter.sdk=D\:\\soft\\flutter
ndk.dir=D\:\\soft\\Android\\sdk\\ndk\\28.0.13004108

然后在 build.gradle 中读取ndk,配置加入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
buildscript {
    def properties = new Properties()
    file("local.properties").withInputStream { properties.load(it) }
    ext {
        agp_version = '7.3.0'
        ndkVersion = properties.getProperty("ndk.dir")?.replace("ndk.dir=", "") // 确保正确获取 NDK 路径
    }
}

安装完成后 重新运行sync,正常 下载各种依赖

不过结果报错

Cannot locate tasks that match ‘:app:testClasses’ as task ‘testClasses’ not found in project ‘:app’.

根据错误信息,问题出在尝试执行 :app:testClasses 任务时,Gradle 找不到该任务。以下是解决步骤:

问题原因 testClasses 任务是 Java 或 Android 项目中用于编译测试类的任务。 如果你的项目中没有配置测试模块(例如 src/test 目录),Gradle 将无法找到该任务。

解决方法 检查项目结构: 确认项目中是否存在 src/test 目录。 如果没有测试模块,Gradle 不会生成 testClasses 任务。 添加测试模块: 如果项目需要测试模块,可以在 app 模块下创建 src/test 目录,并添加测试类。 移除对 testClasses 任务的引用: 如果项目不需要测试模块,可以移除对 testClasses 任务的调用。 检查构建脚本: 确保构建脚本中没有错误地引用 testClasses 任务。

这个明显是其他同事留下的,我们直接移除,然后解决

运行模拟器选择设备,结果这步又报错

Execution failed for task ‘:app:compileFlutterBuildDebug’.

Process ‘command ‘D:\soft\flutter\bin\flutter.bat’’ finished with non-zero exit value 1

据错误信息,flutter build 任务执行失败,通常是由于 Flutter 项目本身的问题或环境配置不正确导致的。

果然 在app 里面的gradle 配置不对, ndkVersion “28.0.13004108” // 确保与 local.properties 中的 NDK 版本一致 这个版本此前不对应,因此改了下如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android {
    namespace "com.example.ff_flutter"
    ndkVersion "28.0.13004108" // 确保与 local.properties 中的 NDK 版本一致
    compileSdkVersion 34

    defaultConfig {
        applicationId "com.example.ff_flutter"
        minSdk 31
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }
}

再次运行

打开终端

执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flutter clean
flutter pub get

清空后再次运行,sync 本次没有报错了,不过还有新的报错

这个是flutter版本的问题因此我们运行

flutter doctor

看到版本不对,3.27.3本项目开发版本 是3.19.4

还报错

检查版本设置

检查gradle 版本设置,以及jdk路径设置

然后再运行继续报错

Cause: this and base files have different roots: G:\clone\ff-flutter\build\flutter_plugin_android_lifecycle and C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_plugin_android_lifecycle-2.0.19\android.

重新清除缓存 再下载依赖,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flutter clean
 flutter pub get

继续报错

Could not find com.android.tools.build:gradle:7.6.3. Searched in the following locations: https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.6.3/gradle-7.6.3.pom https://repo.maven.apache.org/maven2/com/android/tools/build/gradle/7.6.3/gradle-7.6.3.p

其次我们改gradle版本为创建时候的版本7.6.3 ,执行

./gradlew sync

下载成功后继续运行,然后又报错 Could not find com.android.tools.build:gradle:7.6.3. Searched in the following locations: https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.6.3/gradle-7.6.3.pom https://repo.maven.apache.org/maven2/com/android/tools/build/gradle/7.6.3/gradle-7.6.3.p

卓伊凡怀疑是grdle 目录不对, 明明我在.gradle里面已经有了,这次在设置中改了grale路劲

对应了起来,时间 不够 等下再更新下。

继续报错,这次我们看grale 的 test 任务 这些 部分地方

运行后,并且执行 ./gradlew clean 来清楚gradle缓存尝试

Multiple build operations failed. Could not create task ‘:flutter_plugin_android_lifecycle:generateDebugUnitTestConfig’. Could not create task ‘:image_picker_android:generateDebugUnitTestConfig’. Could not create task ‘:path_provider_android:generateDebugUnitTestConfig’. Could not create task ‘:shared_preferences_android:generateDebugUnitTestConfig’. Could not create task ‘:url_launcher_android:generateDebugUnitTestConfig’. Could not create task ‘:video_player_android:generateDebugUnitTestConfig’. Could not create task ‘:flutter_plugin_android_lifecycle:generateDebugUnitTestConfig’. this and base files have different roots: G:\clone\ff-flutter\build\flutter_plugin_android_lifecycle and C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_plugin_android_lifecycle-2.0.19\android.

继续报错,尝试更换gradle 版本7.4 然后重新下载

distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-7.4-bin.zip

最后成功下载7.4,但是运行 继续报错

  • What went wrong: Could not determine the dependencies of task ‘:flutter_plugin_android_lifecycle:test’.

Could not create task ‘:flutter_plugin_android_lifecycle:testDebugUnitTest’. this and base files have different roots: G:\clone\ff-flutter\build\flutter_plugin_android_lifecycle and C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_plugin_android_lifecycle-2.0.19\android.

这个意思就是插件flutter_plugin_android_lifecycle 的缓存地址 和实际地址不匹配,那么我们手动修正

,可以尝试手动将 flutter_plugin_android_lifecycle 插件的文件从缓存路径复制到项目本地路径,并在 settings.gradle 中重新配置路径。

把缓存路劲 C:\Users\Administrator\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_plugin_android_lifecycle-2.0.19\android 里面的内容 我复制到,

G:\clone\ff-flutter\build\flutter_plugin_android_lifecycle 本地路劲

修改 settings.gradle 文件 打开 settings.gradle 文件(位于 G:\clone\ff-flutter\android\settings.gradle)。

找到 flutter_plugin_android_lifecycle 插件的引用,通常是类似以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rootProject.name = 'flutter_plugin_android_lifecycle'
include ':flutter_plugin_android_lifecycle'
project(':flutter_plugin_android_lifecycle').projectDir = new File('G:/clone/ff-flutter/build/flutter_plugin_android_lifecycle')

重启,继续报错

Task ‘testClasses’ not found in project ‘:app’.

  • Try:

Run gradle tasks to get a list of available tasks. Run with —stacktrace option to get the stack trace. Run with —info or —debug option to get more log output. Run with —scan to get full insights.

这个报错是提示没有测试类, 手动添加 testClasses 任务 可以在 app 模块的 build.gradle 文件中手动添加 testClasses 任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
task testClasses {
    dependsOn compileTestJava // 或 compileTestKotlin
}

继续重新运行,然后报错

  • Where: Build file ‘G:\clone\ff-flutter\android\app\build.gradle’ line: 59
  • What went wrong: A problem occurred evaluating project ‘:app’.

Could not get unknown property ‘compileTestJava’ for task ‘:app:testClasses’ of type org.gradle.api.DefaultTask.

问题原因 缺少 Java 插件: 你的 build.gradle 文件中没有应用 java 插件,因此 Gradle 不会自动生成 compileTestJava 任务。 Kotlin 项目问题: 你的项目使用了 kotlin-android 插件,但 compileTestJava 是 Java 项目的任务,而不是 Kotlin 项目的任务。 测试任务未正确配置: 如果项目中没有 src/test 目录或测试依赖,Gradle 不会生成相关的测试任务。

本文报错要处理的问题还不够多,还会继续更新再加深理解,因此本篇为【01】篇,再出一个3篇 接着上面的报错。

通过本文可以更多深层的理解,插件之间的依赖关系,运行报错的各种原因,整体提升,对安卓环境搭建会有深刻一步的理解。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用最新的 Flutter SDK 3.22.1 构建 HarmonyOS 应用
大家都知道目前鸿蒙的开源 tpc 和 sig 仓都迁移到了 gitcode 平台了,本次更新对 Flutter SDK 也有所涉及,所以我们就用最新的 Flutter SDK 来一起看一下如何构建 HarmonyOS 应用
徐建国
2025/04/11
4890
使用最新的 Flutter SDK 3.22.1 构建 HarmonyOS 应用
【Android进阶】Android使用 flutter
1.在其他目录中依赖flutter SDK [1240] plugins { id 'com.android.library' id 'kotlin-android' } // 在其他目录中依赖flutter SDK def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) {
易寒
2022/01/24
8660
使用 Flutter SDK 3.22.1构建HarmonyOS应用
1.进入项目根目录,如果项目还未创建,则使用 flutter create 命令创建项目
徐建国
2024/11/06
4680
使用 Flutter SDK 3.22.1构建HarmonyOS应用
Flutter Boost 混合开发实践与源码解析( Android )
1. 简介 Flutter Boost 是闲鱼团队开发的一个 Flutter 混合开发框架,项目背景可以看看闲鱼的这篇文章:码上用它开始Flutter混合开发——FlutterBoost。 文章中主要讲述了多引擎存在一些实际问题,所以闲鱼目前采用的混合方案是共享同一个引擎的方案。而 Flutter Boost 的 Feature 如下: 可复用通用型混合方案 支持更加复杂的混合模式,比如支持主页Tab这种情况 无侵入性方案:不再依赖修改Flutter的方案 支持通用页面生命周期 统一明确的设计概念 Flu
QQ音乐前端团队
2020/04/07
2.4K0
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )
在上一篇博客 【Flutter】Flutter 混合开发 ( 简介 | Flutter 混合开发集成步骤 | 创建 Flutter Module ) 中 , 创建了 Flutter Module 工程 ;
韩曙亮
2023/03/29
1.2K0
【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )
【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )
VirtualAppEx GitHub 地址 : https://github.com/xxxyanchenxxx/VirtualAppEx
韩曙亮
2023/03/29
1.2K0
【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )
现有 Flutter 项目支持鸿蒙
最近这关税战打的是不亦说乎,从另一方面来说,国产替代浪潮奔涌,鸿蒙适配已成为一个必答题,这里面跨端框架是破局多 OS 割裂的最优解。比如 Flutter,之前有很多 app 可能是用 Flutter 做的,那么如何支持鸿蒙呢?
徐建国
2025/04/15
8890
现有 Flutter 项目支持鸿蒙
解锁 Flutter_exit_app 库鸿蒙适配:离一键退出鸿蒙应用仅一步之遥
在数字化浪潮的推动下,跨平台开发框架如 Flutter 凭借其高效、便捷的特性,成为了开发者们的宠儿。而鸿蒙系统的崛起,更是为跨平台开发注入了新的活力。为了助力开发者在鸿蒙生态中快速实现 flutter_exit_app 退出应用程序功能,本文将深入浅出地为大家解析如何适配 flutter_exit_app 三方库至鸿蒙平台。
徐建国
2025/04/30
820
解锁 Flutter_exit_app 库鸿蒙适配:离一键退出鸿蒙应用仅一步之遥
自定义 Gradle Plugin
com.tencent.demo.PluginDemo 是实现类Plugin接口的具体类
艳龙
2021/12/16
3910
自定义 Gradle Plugin
【Flutter 实战】pubspec.yaml 配置文件详解
pubspec.yaml 是 Flutter 项目的配置文件,类似于 Android 中的 Gradle 配置文件,下面我们就看看 pubspec.yaml 中各个属性的配置。
老孟Flutter
2020/11/11
2.9K0
【Flutter 实战】pubspec.yaml 配置文件详解
【错误记录】Flutter 报错 ( Could not read script ‘xxx\flutter_tools\gradle\app_plugin_loader.gradle‘ )
问题环境描述 : 在 电脑 A 上创建了 Flutter 应用 , 上传到了 GitHub 中 , 然后在 电脑 B 上下载该源码 , 编译时报如下错误 ;
韩曙亮
2023/03/29
9570
【错误记录】Flutter 报错 ( Could not read script ‘xxx\flutter_tools\gradle\app_plugin_loader.gradle‘ )
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutte
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-卓伊凡换人优雅草Alex
卓伊凡
2025/02/02
1800
基于centos7的jenkins安卓自动打包
安装完成需要准备以下 在CentOS 7下构建安卓Android编译环境 安装jenkins 最后一步来自动or手动打包 需要在资料 1.jenkins项目名:安卓自动打包-小游戏-GameDev-A
星哥玩云
2022/05/26
8290
基于centos7的jenkins安卓自动打包
鸿蒙版 Flutter 环境配置 Windows 版本
项目地址:https://gitcode.com/openharmony-sig/flutter_flutter
徐建国
2025/04/18
1630
鸿蒙版 Flutter 环境配置 Windows 版本
Android Gradle系列-入门篇
接下来的一段时间会对Android Gradle的相关知识进行梳理,所以借此整理成一个系列。如果你是刚入行的新秀,那么这个系列将会非常适合你,因为Android基本的配置都与Gradle有关。当然如果你已经入行,但对Gradle还是停留在表面的认知上,这个系列也会对你有所帮助。
Rouse
2019/07/17
8250
Android Gradle系列-入门篇
Flutter 开发出现的那些 Bugs 和解决方案「持续更新... 」
直接引用包 flutter_screenutil 去使用,会报错使用不了 ScreenUtil().setWidth(width) 等方法。
Jimmy_is_jimmy
2022/09/16
1K0
一篇文章掌握Gradle多项目构建
在使用 Android Studio 作为 IDE 之后,Android 项目就开始使用 Gradle 作为构建脚本,Gradle 的优点就不用我多说了,使用 Groovy 作为开发语言,配合各种 Gradle 插件和 DSL 可以实现多样化的构建过程。
蜻蜓队长
2018/08/03
1.3K0
Flutter应用集成极光推送
在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手段,比如将新上架一个商品或者最新的一条新闻推送给用户。
用户6256742
2024/08/13
4570
Flutter应用集成极光推送
Android 开发必备知识:我和 Gradle 有个约会
0、讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究一下 ant 脚本吧。 那个时候连 HashMap 都不知道是啥,可想开发经验几乎为零,一个小小的 ant 脚本看得我真是深深地感受到了这个世界充满的恶意。好在后来硬着头皮搞明白了什么 target 之类的鬼东西,不然就没有然后了。 0.2 Maven,你们真的会读这个单词么 Maven /`meivn/ 接触 Maven,完全是因为读陈雄华
腾讯Bugly
2018/03/22
9320
Android 开发必备知识:我和 Gradle 有个约会
gradle构建android项目详解
1、用Gradle构建 1.1 工程结构 如图所示,这是一个不能更普通的Android的Gradle工程了。 根目录下面的settings.gradle当中主要是用来include子模块的,比如我
xiangzhihong
2018/02/01
2.4K0
gradle构建android项目详解
推荐阅读
相关推荐
使用最新的 Flutter SDK 3.22.1 构建 HarmonyOS 应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验