diff --git a/cmd/gomobile/env.go b/cmd/gomobile/env.go
index dbf9c8c..c70b2a1 100644
--- a/cmd/gomobile/env.go
+++ b/cmd/gomobile/env.go
@@ -161,16 +161,25 @@
 	if buildN {
 		return "$NDK_PATH", nil
 	}
+
 	androidHome := os.Getenv("ANDROID_HOME")
-	if androidHome == "" {
-		return "", errors.New("The Android SDK was not found. Please set ANDROID_HOME to the root of the Android SDK.")
+	if androidHome != "" {
+		ndkRoot := filepath.Join(androidHome, "ndk-bundle")
+		_, err := os.Stat(ndkRoot)
+		if err == nil {
+			return ndkRoot, nil
+		}
 	}
-	ndkRoot := filepath.Join(androidHome, "ndk-bundle")
-	_, err := os.Stat(ndkRoot)
-	if err != nil {
-		return "", fmt.Errorf("The NDK was not found in $ANDROID_HOME/ndk-bundle (%q). Install the NDK with `sdkmanager 'ndk-bundle'`", ndkRoot)
+
+	ndkRoot := os.Getenv("ANDROID_NDK_HOME")
+	if ndkRoot != "" {
+		_, err := os.Stat(ndkRoot)
+		if err == nil {
+			return ndkRoot, nil
+		}
 	}
-	return ndkRoot, nil
+
+	return "", fmt.Errorf("no Android NDK found in $ANDROID_HOME/ndk-bundle nor in $ANDROID_NDK_HOME")
 }
 
 func envClang(sdkName string) (clang, cflags string, err error) {
diff --git a/cmd/gomobile/env_test.go b/cmd/gomobile/env_test.go
new file mode 100644
index 0000000..c041313
--- /dev/null
+++ b/cmd/gomobile/env_test.go
@@ -0,0 +1,66 @@
+// Copyright 2019 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+	"io/ioutil"
+	"os"
+	"path/filepath"
+	"testing"
+)
+
+func TestNdkRoot(t *testing.T) {
+	home, err := ioutil.TempDir("", "gomobile-test-")
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	homeorig := os.Getenv("ANDROID_HOME")
+	ndkhomeorig := os.Getenv("ANDROID_NDK_HOME")
+	defer func() {
+		os.Setenv("ANDROID_HOME", homeorig)
+		os.Setenv("ANDROID_NDK_HOME", ndkhomeorig)
+		os.RemoveAll(home)
+	}()
+
+	os.Setenv("ANDROID_HOME", home)
+
+	if ndk, err := ndkRoot(); err == nil {
+		t.Errorf("expected error but got %q", ndk)
+	}
+
+	sdkNDK := filepath.Join(home, "ndk-bundle")
+	envNDK := filepath.Join(home, "android-ndk")
+
+	for _, dir := range []string{sdkNDK, envNDK} {
+		if err := os.Mkdir(dir, 0755); err != nil {
+			t.Fatalf("couldn't mkdir %q", dir)
+		}
+	}
+
+	os.Setenv("ANDROID_NDK_HOME", envNDK)
+
+	if ndk, _ := ndkRoot(); ndk != sdkNDK {
+		t.Errorf("got %q want %q", ndk, sdkNDK)
+	}
+
+	os.Unsetenv("ANDROID_HOME")
+
+	if ndk, _ := ndkRoot(); ndk != envNDK {
+		t.Errorf("got %q want %q", ndk, envNDK)
+	}
+
+	os.RemoveAll(envNDK)
+
+	if ndk, err := ndkRoot(); err == nil {
+		t.Errorf("expected error but got %q", ndk)
+	}
+
+	os.Setenv("ANDROID_HOME", home)
+
+	if ndk, _ := ndkRoot(); ndk != sdkNDK {
+		t.Errorf("got %q want %q", ndk, sdkNDK)
+	}
+}
