在 Ubuntu 18.04 的 $ANDROID_HOME/ndk-bundle 和 $ANDROID_NDK_HOME 中找不到 Android NDK

分享于2022年07月17日 android-ndk go gomobile 问答
【问题标题】:在 Ubuntu 18.04 的 $ANDROID_HOME/ndk-bundle 和 $ANDROID_NDK_HOME 中找不到 Android NDK(no Android NDK found in $ANDROID_HOME/ndk-bundle nor in $ANDROID_NDK_HOME in Ubuntu 18.04)
【发布时间】:2022-03-29 07:49:48
【问题描述】:

我正在尝试使用 gomobile 为 android 编译本机 GO 代码。看起来 gomobile 没有找到 ndk-build。

gomobile build -target android hello.go gomobile:在 $ANDROID_HOME/ndk-bundle 和 $ANDROID_NDK_HOME 中找不到 Android NDK

我已经在 ANDROID_HOME 目录中安装了 Android NDK,将文件夹的权限更改为 777,并在 ~/.profile 中添加了一个导出条目,如下所示。

回显 $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/work/bin:/root/ANDROID_HOME /android-ndk-r21/ndk-build

我从“ https://godoc.org/golang.org/x/mobile/cmd/gomobile ”安装了 gomobile: 去获取 golang.org/x/mobile/cmd/gomobile

“gomobile init”执行没有问题;然而,“gomobile 绑定”会给出与 gomobile 构建错误相同的错误消息。

我什至尝试在“/work/src/golang.org/x/mobile/cmd/gomobile/env.go”文件中设置环境变量,如下所示,但 os.GetEnv 调用返回空白。

os.Setenv("ANDROID_HOME", "/home/usr/ANDROID_HOME/ndk-bundle/android-ndk-r21/ndk-build")
androidHome := os.Getenv("ANDROID_HOME")
if androidHome != "" {
    ndkRoot := filepath.Join(androidHome, "ndk-bundle")
    _, err := os.Stat(ndkRoot)
    if err == nil {
        return ndkRoot, nil
    }
}

无论我在 Ubuntu 18.04 vm 或 docker 容器中运行它,构建都会失败。感谢您的意见和反馈。

感谢阅读。

  • 您是否运行过 gomobile init -ndk /home/usr/ANDROID_HOME/ndk-bundle/android-ndk-r21/ndk-build 后跟 gomobile bind
  • $ gomobile init -ndk /home/usr/ANDROID_HOME/ndk-bundle/android-ndk-r21/ndk-build 提供但未定义标志:-ndk 用法:gomobile init [-openal dir]如果使用 -openal 指定了 OpenAL 源目录,init 将构建 Android 版本的 OpenAL 以用于 gomobile 构建和 gomobile 安装。
  • @GoLearn 我面临同样的问题。你修好了吗?

【解决方案1】:

在遇到类似问题时对我有用的是。

  1. 确保 ndk-bundle 文件夹存在于

/Users/用户名/库/Android/sdk

  1. 运行这个

export ANDROID_NDK_HOME=/Users/username/Library/Android/sdk

  1. 运行你的

gomobile build -target android hello.go