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 编译器。让我们来解决这个问题:
-
安装的话 android studio 就可以
-
首先确保已经安装了 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 的路径
-
在编译 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
-
如果你使用的是其他 Android API 级别,需要相应调整编译器名称,比如:
- Android 31: aarch64-linux-android31-clang
- Android 30: aarch64-linux-android30-clang
-
完整的编译脚本示例:
#!/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
-
检查问题:
# 检查编译器是否存在 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 中的环境变量。
-
首先打开你的 zsh 配置文件:
nano ~/.zshrc # 或者 vim ~/.zshrc
-
添加以下配置到 .zshrc 文件中:
# FVM Path export FVM_HOME="$HOME/fvm" # fvm 的安装路径 export PATH="$FVM_HOME/default/bin:$PATH" # 将 Flutter 添加到 PATH
-
如果你的 fvm 安装在其他位置,需要相应修改路径。常见的默认安装路径有:
- Mac:
$HOME/fvm
- Linux:
$HOME/fvm
- Windows:
%LOCALAPPDATA%/fvm
- Mac:
-
保存文件后,重新加载 zsh 配置:
source ~/.zshrc
-
验证配置是否成功:
# 检查 flutter 命令是否可用 flutter --version # 检查 fvm 命令是否可用 fvm --version
如果你想要在特定项目中使用不同版本的 Flutter,可以在项目目录中执行:
fvm use <version> # 例如:fvm use 3.16.0
其他实用的 fvm 命令:
fvm list # 列出已安装的版本 fvm install <version> # 安装特定版本 fvm global <version> # 设置全局默认版本
如果还是无法找到命令,可以尝试:
- 确认 fvm 的具体安装位置:
which fvm
- 检查权限:
ls -la $(which fvm)
- 确保路径中没有多余的空格或特殊字符。
需要帮助确认具体的安装路径或遇到其他问题吗?
$FVM_HOME/default/bin 这个是 default 文件夹么,如果没有这个文件夹如何操作
如果没有 default 文件夹,说明你还没有设置默认的 Flutter 版本。让我帮你一步步设置:
-
首先查看已安装的 Flutter 版本:
fvm list
-
如果还没有安装任何版本,先安装一个:
fvm install stable # 安装最新稳定版 # 或者安装特定版本 # fvm install 3.16.0
-
设置默认版本(这会创建 default 文件夹):
fvm global stable # 将稳定版设为默认版本 # 或者设置特定版本 # fvm global 3.16.0
-
验证 default 文件夹是否创建成功:
ls $HOME/fvm # 应该能看到 default 文件夹
-
然后再配置你的 .zshrc:
export FVM_HOME="$HOME/fvm" export PATH="$FVM_HOME/default/bin:$PATH"
-
重新加载配置:
source ~/.zshrc