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

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

【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的路劲未指定,毕竟每个同事电脑环境不同

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 路径

sdk.dir=D\:\\soft\\Android\\sdk
flutter.sdk=D\:\\soft\\flutter
ndk.dir=D\:\\soft\\Android\\sdk\\ndk\\28.0.13004108

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

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 版本一致 这个版本此前不对应,因此改了下如下

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"
    }
}

再次运行

打开终端

执行

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.

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

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 插件的引用,通常是类似以下内容:

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 任务

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篇 接着上面的报错。

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

目录
相关文章
|
27天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
74 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
20天前
|
JavaScript 编译器 开发工具
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
58 2
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
1月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
65 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
1月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
54 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
18天前
|
人工智能 Java 程序员
HarmonyOS 模拟器报未开启 Hyper-V解决方法
今日在开发Harmony NEXT版本元服务时,遇到模拟器无法启动的问题,报错为未开启Hyper-V。通过进入Windows设置,启用Hyper-V和虚拟机平台功能,并使用PowerShell命令`Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All`成功解决问题,重启后模拟器恢复正常。
39 0
|
22小时前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
37 16
|
1月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
179 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
1月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
56 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
2月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
111 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
25天前
|
安全 Android开发 iOS开发
escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
escrcpy 是一款基于 Scrcpy 的开源项目,使用 Electron 构建,提供图形化界面来显示和控制 Android 设备。它支持 USB 和 Wi-Fi 连接,帧率可达 30-120fps,延迟低至 35-70ms,启动迅速且画质清晰。escrcpy 拥有丰富的功能,包括自动化任务、多设备管理、反向网络共享、批量操作等,无需注册账号或广告干扰。适用于游戏直播、办公协作和教育演示等多种场景,是一款轻量级、高性能的 Android 控制工具。

热门文章

最新文章

推荐镜像

更多