0%

Flutter libgo.so 问题

libgo.so not found

flutter 项目运行安卓版本的时候,Failed to load dynamic library ‘libgo.so’: dlopen failed: library “libgo.so” not found
需要编译 go 模块

cgo: C compiler “aarch64-linux-android33-clang” not found: exec: “aarch64-linux-android33-clang”: executable file not found in $PATH

这个是编译 libgo.so 的时候

这个错误表明在编译 Android 版本的 Go 动态库时找不到 Android NDK 的 C 编译器。让我们来解决这个问题:

  1. 安装的话 android studio 就可以
    android ndk install

  2. 首先确保已经安装了 Android NDK,并设置环境变量:

    # 在 .zshrc 或 .bashrc 中添加
    export ANDROID_NDK_HOME="$HOME/Library/Android/sdk/ndk/26.1.10909125" # 替换为你的 NDK 路径
    export PATH="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin:$PATH" # darwin-x86_64 是 macOS 的路径
  3. 在编译 Go 代码时,需要设置正确的 CGO 环境变量:

    export GOOS=android
    export GOARCH=arm64
    export CGO_ENABLED=1
    export CC=aarch64-linux-android33-clang
    export ANDROID_API=33 # 这里的 33 要和你的 clang 版本匹配

    go build -buildmode=c-shared -o libgo.so
  4. 如果你使用的是其他 Android API 级别,需要相应调整编译器名称,比如:

    • Android 31: aarch64-linux-android31-clang
    • Android 30: aarch64-linux-android30-clang
  5. 完整的编译脚本示例:

    #!/bin/bash

    # 设置 Android NDK 路径
    export ANDROID_NDK_HOME="$HOME/Library/Android/sdk/ndk/26.1.10909125" # 修改为你的 NDK 路径
    export ANDROID_API=33

    # ARM64 架构
    export GOOS=android
    export GOARCH=arm64
    export CGO_ENABLED=1
    export CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android${ANDROID_API}-clang
    go build -buildmode=c-shared -o libgo.so

    # 如果需要其他架构,比如 ARM v7
    # export GOARCH=arm
    # export CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi${ANDROID_API}-clang
    # go build -buildmode=c-shared -o libgo.armeabi-v7a.so
  6. 检查问题:

    # 检查编译器是否存在
    ls $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android*

    # 检查环境变量
    echo $CC
    echo $ANDROID_NDK_HOME

fvm zsh 路径问题

fvm 安装的 flutter 如何在 zsh 里找到相关命令,或者配置路径

我来帮你配置 fvm 安装的 Flutter 在 zsh 中的环境变量。

  1. 首先打开你的 zsh 配置文件:

    nano ~/.zshrc
    # 或者
    vim ~/.zshrc
  2. 添加以下配置到 .zshrc 文件中:

    # FVM Path
    export FVM_HOME="$HOME/fvm" # fvm 的安装路径
    export PATH="$FVM_HOME/default/bin:$PATH" # 将 Flutter 添加到 PATH
  3. 如果你的 fvm 安装在其他位置,需要相应修改路径。常见的默认安装路径有:

    • Mac: $HOME/fvm
    • Linux: $HOME/fvm
    • Windows: %LOCALAPPDATA%/fvm
  4. 保存文件后,重新加载 zsh 配置:

    source ~/.zshrc
  5. 验证配置是否成功:

    # 检查 flutter 命令是否可用
    flutter --version

    # 检查 fvm 命令是否可用
    fvm --version

    如果你想要在特定项目中使用不同版本的 Flutter,可以在项目目录中执行:

    fvm use <version>  # 例如:fvm use 3.16.0

    其他实用的 fvm 命令:

    fvm list  # 列出已安装的版本
    fvm install <version> # 安装特定版本
    fvm global <version> # 设置全局默认版本

    如果还是无法找到命令,可以尝试:

    1. 确认 fvm 的具体安装位置:
    which fvm
    1. 检查权限:
    ls -la $(which fvm)
    1. 确保路径中没有多余的空格或特殊字符。

    需要帮助确认具体的安装路径或遇到其他问题吗?

$FVM_HOME/default/bin 这个是 default 文件夹么,如果没有这个文件夹如何操作

如果没有 default 文件夹,说明你还没有设置默认的 Flutter 版本。让我帮你一步步设置:

  1. 首先查看已安装的 Flutter 版本:

    fvm list
  2. 如果还没有安装任何版本,先安装一个:

    fvm install stable  # 安装最新稳定版
    # 或者安装特定版本
    # fvm install 3.16.0
  3. 设置默认版本(这会创建 default 文件夹):

    fvm global stable  # 将稳定版设为默认版本
    # 或者设置特定版本
    # fvm global 3.16.0
  4. 验证 default 文件夹是否创建成功:

    ls $HOME/fvm  # 应该能看到 default 文件夹
  5. 然后再配置你的 .zshrc:

    export FVM_HOME="$HOME/fvm"
    export PATH="$FVM_HOME/default/bin:$PATH"
  6. 重新加载配置:

    source ~/.zshrc