• assembleDebug太慢的问题调查以及其他


    Preface

    最近在做flutter上的音频和视频方面的探索。
    需要用到一些视屏区域截取,视屏导出成序列图等等。
    这是昨天晚上到今天早上解决的一些问题的汇总,可能先后顺序之类的会记错;
    此文目的用于提供一些解决问题的思路,聊以备忘,以使不忘,后事之师。

    Contents

    设备问题

    个人设备过老或者缺失

    mac pro early 2015

    xcode不能更新,所以最新的flutter项目没法用 macos 来debug,且硬件所限,运行 idea 都发出拖拉机的声音,所以 android emulator也是卡成狗

    2013年的组装电脑

    windows电脑都这逼样,超过一定年限,哪怕资源管理器里面内存和cpu占用不高,按下 win+e 都能反应半天,最后还是选了在windows上通过android studiox86 emulator 来排除一些环境问题

    唯一的安卓设备 mi pad

    由于意气之下弄坏了

    环境问题

    使用的部分flutter包只支持 iOS, android, macOS

    Running Gradle task 'assembleDebug'

    使用国内源加速maven与gradle

    老是卡这里,开始以为是 maven 没有使用国内源加速的原因,
    先后在以下文件中替换了 gradle 的国内源

    • {flutter_home}/package/flutter_tools/gradle/flutter.gradle
    • /app/build.gradle
      然而没什么鸟用。

    直接使用命令行来进行gradle编译

    然后根据网上提示,进入到 android 目录下,先后运行:

    flutter clean
    ./gradlew clean build
    

    这个时候就可以看到 gradle 真正的报错信息了.

    FAILURE: Build failed with an exception.

    Where:
    Build file 'F:\workspace\app\android\app\build.gradle' line: 24

    What went wrong:
    A problem occurred evaluating project ':app'.

    Failed to apply plugin 'com.android.internal.application'.
    Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
    Your current JDK is located in F:\Program Files\Java\jdk1.8.0_60\jre
    You can try some of the following options:

    • changing the IDE settings.
    • changing the JAVA_HOME environment variable.
    • changing org.gradle.java.home in gradle.properties.

    java版本问题

    好嘛,java版本问题,去oracle下载一个不就得了,于是下了个java 20。
    多年未更新过java的我,渠道oracle下载java,居然要登陆!!!!!
    更新完成,继续运行:

    .\gradlew --status
    

    1个idle的,6个 stopped,没有问题,继续:

    ./gradlew clean build
    

    发现java 20也不行!友邦惊诧!!!
    好嘛,写在java 20,我就给你装个java 11。
    安装完java 11,尼玛,明明系统环境变量 \(JAVA_HOME\) 设置的就是新安装的 java 11的jdk根目录,缺还是去之前安装的java 20的目录下去找了!!!
    为也是服了,在 gradlew.bat 中也打了日志,就是莫名其妙的在java 11的jdk目录下的bin中找不到java 执行文件!!!
    网上说,java 20卸载不干净会有残留文件无法删除,导致此问题。
    确认了一下,确实在之前的java 20目录下有残留文件,立即 shift + DEL, 妈蛋,文件使用中。
    折腾之下还是重启电脑之后删除掉了。
    此事运行运行 clean, 会有什么有趣的事情发生呢?

    javaHome invalid问题

    The supplied javaHome seems to be invalid.
    于是,修改了 gradle.property:

    org.gradle.java.home=f:\\Programe Files\\Java\\jdk-11
    

    此时,项目的源码可以编译通过,但是

    Unsuppoted class file major version 64

    • 首先,在build.gradle中,将最小版本调整为插件需要的最小版本
    • 其次,此插件只能运行与移动平台与mac上,可以使用模拟器debug一下

    事实证明,模拟器中可以运行起来,无报错。

    至此,以及可以完美的运行起来了,可以往项目中加屎了。

    资源服务器的问题

    app需要用到一些资源,于是打算在wsl装的ubuntu上搞一个http服务器专门用来提供资源管理。
    用golang/gin写了一个简单的http静态资源服务器,打包linux:

    set GOOS=linux
    set GOARCH=amd64
    go build
    

    好了,在 ubuntu 上执行 explore.exe . 之后,将刚才生成的可执行文件拉进来, 直接运行,完美;
    使用 nohup 运行,卡在了命令行,于是,想起来我这台2013年的拖拉机确实无法承受如此重任,于是想到了上周从垃圾堆里翻出来的树莓派 3 B+;
    重新将执行文件上传到树莓派:

    scp /Users/duke/Downloads/reserver pi@192.168.3.25:/home/pi/res
    

    然后

    chmod 777 ./reserver
    

    然后运行

    cannot execute binary file: Exec format error
    难道是我的树莓派是32bit的?不应该啊,之前确认过是64bit的。
    然后调查了一下,突然想起树莓派是arm架构的,于是

    set GOOS=linux
    set GOARCH=arm64
    set CGO_ENABLED=0
    go build -o reserver.out ./release/raspberry/reserver.out 
    

    然后,将此文件上传至树莓派,完美运行.

    Conclusion

    • 目前 flutter 只支持 java 11,官网下载java要登陆,国内其实有免登陆的下载源;
    • 无法忍受android项目 assembleDebug 太慢,可以自己手动调试一下;
    • gradle最后debug插件遇到问题很有可能其实是本地平台的问题,
  • 相关阅读:
    Nginx (2):nginx反向代理配置
    Spring Cloud学习(二)【Eureka注册中心】
    微信小程序关闭首页广告
    MQTT第一话 -- Docker安装emqx以及Springboot集成emqx
    CSS核心知识点
    【23种设计模式】享元模式【⭐】
    [附源码]计算机毕业设计JAVA剧本杀门店管理系统-
    【计网】傻瓜式安装cpolar内网穿透
    Flink从Kafka写入Kafka
    数字化打开第二增长曲线,华为总结运营商云转型三大场景
  • 原文地址:https://www.cnblogs.com/adoontheway/p/17709707.html