环境配置之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.gradle

    buildscript 
        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

Flutter环境搭建 之 Android license status unknown

Flutter之环境配置与项目搭建

1.Flutter开发工具准备与开发环境搭建

Flutter开发环境与Android开发环境设置