环境配置之flutter与Android Studio之间的爱恨情仇(上万字与数十种报错的解决方案)
Posted 小哈里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了环境配置之flutter与Android Studio之间的爱恨情仇(上万字与数十种报错的解决方案)相关的知识,希望对你有一定的参考价值。
文章目录
如题:flutter只能运行web不能运行android
-
事情的起因是这样的。。。。
大约是下周要交课设,,嗯,,
10个页面,3个功能,,
而我,我,不仅还没学dart和flutter的语法
我,我连,flutter的环境都跑不起来,, -
而且,不知道为什么,
所有的项目,都可以在web(chrome)里跑起来
但是都不能跑到Android上
围绕着进行了长达三整天(每天>8h)的环境配置
问了>10个装好的人,翻阅了数千篇文献,都没有结果()
对着报错强行Google,反正修了一个又有另一个,这几天已经调傻了
我已经不记得到底改了多少报错又报了回去
我怀疑现在去问老师环境可能会被打
以及可能这个环境老师也不一定能配的出来() -
把问题定位到Android文件夹,
我们大概整理一下一部分遇到的和解决的bug,,,
仅做记录,也许后人会用上
嗯,flutter部分应该没问题(毕竟chrome能跑),应该
预备:一些改了没用但是你可能要改的东西()
0.1 中文路径
- 虽然有乱码但是据说warning都能跑起来的,问题不是很大
- 项目路径真的是中文的
- 用户路径也是真的是中文的
- flutter路径也是中文的
讲道理路径有._-应该没事的
0.2 Android SDK版本
- 反正尽量多装吧
一般给人装就加个31,有的时候报错要29就给29。
0.3 flutter 版本
-
我flutter也装了n个了
2.5,2.10,3.0各种换
-
flutter doctor 报错大全
Android证书错误:可能需要终端执行 flutter doctor --android-licenses 然后出现JAVA_HOME错误 配置JAVA_HOME环境变量,记得是JDK的目录,不是JDK\\bin的目录!!! C:\\Development\\jdk-17_windows-x64_bin
0.4 Android设备
-
as自带的虚拟模拟器环境
-
各种安卓模拟器,真机调试都试过了
-
安卓虚拟机环境配置参考哔哩哔哩大地老师:
据说运行速度是真机>安卓模拟器>as自带虚拟机
https://www.bilibili.com/video/BV1mU4y1277U/
https://www.bilibili.com/video/BV1S4411E7LY?p=17夜神模拟器,通过adb连接 (记得不要启动各种手机助手orAS自带模拟器的) C:\\Program Files (x86)\\Nox\\bin 然后运行: nox_adb.exe connect 127.0.0.1:62001
-
垃圾MIUI真机USB调试踩坑记录
(1)MIUI打开开发者模式:设置->我的设备->MIUI版本按很多次,进入开发者模式。
(2)设置->更多选项->开发者设置->打开USB调试
(3)坑点1:需要USB应用安装与调试,需要登录MIUI账号(好的注册一个)
(4)坑点2:需要USB应用安装,需要插入SIM卡(好的插一个再拔掉)
(5)需要很多次点确认,等待很多时间。
0.5 哪里不成功
-
build.gradle运行成功吗
-
pubspec.yaml运行成功吗
pub get一下然后flutter run
1、找不到NDK:NDK did not have a source.properties file *
-
如题,该目录找不到NDK
那我们就给他加一个。
-
AS里面下载NDK
-
下载好以后在另一个地方:(我们给她拷贝一下)
-
或者去官网下载一个NDK
https://developer.android.google.cn/ndk/downloads/
然后我们给它解压
-
记得要加环境变量
-
参考资料:
https://blog.csdn.net/adojayfan/article/details/120806847
https://www.jianshu.com/p/660916020ca8
https://blog.csdn.net/Young_Time/article/details/80312073
https://blog.csdn.net/Mr_55/article/details/79773728
https://www.jianshu.com/p/22e3bb87c07e
https://developer.aliyun.com/article/5496
https://www.jianshu.com/p/22e3bb87c07e
https://developer.aliyun.com/article/5496
https://blog.csdn.net/qq_24118527/article/details/82867864 -
Execution failed for task ‘:app:stripDebugDebugSymbols’.
No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
好像出现了一种新的缺NDK的方式
首先尝试1(失败)
在local.properties中加入
ndk.dir=C:\\Users\\gwj11\\AppData\\Local\\Android\\Sdk\\ndk-bundle
然后尝试2
我们找到ndk的toolchains库,发现确实缺了好多,所以去官网下一个完整版呀(上面下过的)
我们搜索后发现,本地是有arm-linux-androideabi文件夹的,我们手动给她拷贝过去
再不行的话,比如少个prebuilt文件夹,那么可能是要换成更低的tool-chain包了
2、配置国内代理
-
如题,好多build.gradle里都有这玩意
-
我们来到flutter的安装目录
C:\\Development\\flutter_windows_2.10\\packages\\flutter_tools\\lib\\src\\http_host_validator.dart
-
把用到的地方(进去搜索maven)都换成阿里云的maven
阿里云开源站:https://developer.aliyun.com/mirror/maven
maven镜像:https://maven.aliyun.com/repository/public/
然后删除~/bin/cache文件夹(删除cache目录下的flutter_tools.snapshot 文件)
重新flutter doctor一下 -
也可以直接在代码里修改
repositories //google() //jcenter() maven url 'https://maven.aliyun.com/repository/google' maven url 'https://maven.aliyun.com/repository/jcenter' maven url 'http://maven.aliyun.com/nexus/content/groups/public'
-
关于flutter pub的代理配置
运行时就pub get一下
windows配置环境变量: FLUTTER_STORAGE_BASE_URL:https://storage.flutter-io.cn PUB_HOSTED_URL:https://pub.flutter-io.cn
3、Android v2打包与flutter1.12之后的版本 *
-
最后结论应该是不用理会
-
我寻思着我也不是flutter1.12之后啊,不过据说给了warning并不是跑不起来的主要原因。
官方解决方案:https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects
-
据说这是Android7.0之后开始换的,那么我就再加个API23吧
但是很可惜,还是没能跑出来。
-
AndroidManifest.xml与io.flutter.app.FlutterApplication报错
也不知道咋整,反正改了挺多还是报红,但是讲道理应该只是警告,毕竟我flutter版本小于2.12。
-
关于Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01报错。
应该也只是警告,,,
参考资料:https://blog.csdn.net/Calvin_zhou/article/details/117333108
-
有个AndroidX dependencies的报错
Execution failed for task ‘:app:mergeDebugAssets’.
This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled. Set this property to true in the gradle.properties file and retry.
The following AndroidX dependencies are detected: androidx.appcompat:appcompat:1.1.0, androidx.core:core
据说是要加上这两句
android.useAndroidX=true
android.enableJetifier=true
参考https://blog.csdn.net/weixin_42433094/article/details/105488368 -
一种报错(未解决)
to migrate your project. You may also pass the --ignore-deprecation flag to
ignore this check and continue with the deprecated v1 embedding. However,
the v1 Android embedding will be removed in future versions of Flutter.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The detected reason was: C:_projetcs\\AndroidStudio\\flutter-dm\\flutterbook-master\\android\\app\\src\\main\\AndroidManifest.xml uses `android:name="io.flutter.app.FlutterApplication
尝试1:(失败)
因为Flutter SDK没有对Android代码进行代码检查。即使Android代码抛出了警告,如果Android代码没有“真正的”错误,您仍然可以运行Flutter应用程序。
您可以在这里为Preferences > Language & Frameworks > Flutter > Experiments上的Java/Kotlin启用代码完成功能。这应该会删除Android项目中抛出的警告,即使代码是正确的。
尝试2(成功啦)
删掉android/app/src/main/AndroidManifest.xml文件中的这一行(不是注释!是删掉)
android:name=“io.flutter.app.FlutterApplication”
4、kotlin与gradle版本 *
- 如题,kotlin版本不对
- What went wrong:
Execution failed for task ‘:app:compileDebugKotlin’.
Compilation error. See log for more details - What went wrong:
A problem occurred evaluating project ‘:app’.
org/jetbrains/kotlin/cli/common/PropertiesKt - What went wrong:
Execution failed for task ‘:app:compileFlutterBuildDebug’.
传说:Android Studio 版本 , Kotlin 版本 , Gradle 版本 , Gradle 插件版本都要匹配()
-
尝试1:一种匹配方案
Android Studio 4.2.1 版本 , 对应的 Gradle 版本 6.7.1 , Gradle 插件版本 4.2.1 , Kotlin 版本 1.5.0
配置文件这样写:
build.gradlebuildscript ext.kotlin_version = '1.5.0' repositories google() mavenCentral() dependencies classpath 'com.android.tools.build:gradle:4.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" allprojects repositories google() mavenCentral() rootProject.buildDir = '../build' subprojects project.buildDir = "$rootProject.buildDir/$project.name" project.evaluationDependsOn(':app') task clean(type: Delete) delete rootProject.buildDir
对应的 Gradle 版本配置 gradle-wrapper.properties
#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists # distributionUrl=https\\://services.gradle.org/distributions/gradle-6.7-all.zip 这个不行 distributionUrl=https\\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
-
尝试2:考虑离线加载gradle文件加速
对应的 Gradle 版本配置 gradle-wrapper.properties
gradle各版本官网下载地址:
https://gradle.org/releases/
https://services.gradle.org/distributions/#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists #distributionUrl=https\\://services.gradle.org/distributions/gradle-5.6.2-all.zip distributionUrl=file:///C:/Development/gradle-6.6.1-all.zip
-
参考资料:
gradle安装:https://www.cnblogs.com/jimc/p/10081605.html
版本匹配:https://blog.csdn.net/shulianghan/article/details/117467378
5、好像是flutter报错 *
-
Execution failed for task ‘:app:checkDebugAarMetadata’.
根据报错信息The minCompileSdk (31) specified 提示说需要最后sdk是31版本的,但是我们现在sdk版本是30的,大于这个版本所以需要修改以下配置,都修改成31的
-
参考资料:
本节主要参考:https://blog.csdn.net/u011447164/article/details/122981039
https://blog.csdn.net/weixin_47542175/article/details/115056367 -
床新的错误(好像未成功)
Script ‘C:\\Development\\flutter_windows_2.5.3-stable\\packages\\flutter_tools\\gradle\\flutter.gradle’ line: 1005
What went wrong:
Execution failed for task ‘:app:compileFlutterBuildDebug’.
Process ‘command ‘C:\\Development\\flutter_windows_2.5.3-stable\\bin\\flutter.bat’’ finished with non-zero exit value 1
flutter pub cache repair flutter clean cd ./android gradlew clean
以上是关于环境配置之flutter与Android Studio之间的爱恨情仇(上万字与数十种报错的解决方案)的主要内容,如果未能解决你的问题,请参考以下文章
flutter之配置安卓环境的小坑 but Android SDK not found at this location.
Flutter环境搭建 之 Android license status unknown