go version)?$ go version gomobile version +6d0d39b Wed Oct 2 17:59:09 2019 +0000 (android); androidSDK=/opt/android-sdk/platforms/android-29
Yes.
go env)?go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/arp/.cache/go-build"
GOENV="/home/arp/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/opt/go-packages"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build030033936=/tmp/go-build -gno-record-gcc-switches"
gomobile clean
gomobile init
Should not show following error!!
gomobile: No compiler for 386 was found in the NDK (tried /opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android16-clang). Make sure your NDK version is >= r19c. Use `sdkmanager --update` to update it.
gomobile bind
gomobile: No compiler for amd64 was found in the NDK (tried /opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang). Make sure your NDK version is >= r19c. Use `sdkmanager --update` to update it.
Android NDK r20.0.x
For those who are facing the incompatibility problem, here is a temporary hack to use NDK r19.2.x :
gomobile init should work with this hack!!
CC @hyangah @steeve
Not sure about that one, sorry. We are running gobind inside bazel, and didn't get any particular issues with r20. I may have read that the layout changed quite a bit though...
Still happens today:
lastshaman@LasTshaMAN:~/my-project$ gomobile init
gomobile: No compiler for arm was found in the NDK (tried /home/lastshaman/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi16-clang). Make sure your NDK version is >= r19c. Use `sdkmanager --update` to update it.
@archanpaul workaround from above helps though.
any updates?
Reproduced for go v 1.14
vadym@ubuntu:~/Android/Sdk/ndk/21.2.6472646/toolchains/llvm/prebuilt/linux-x86_64/bin$ ls
aarch64-linux-android21-clang armv7a-linux-androideabi23-clang ld.lld
aarch64-linux-android21-clang++ armv7a-linux-androideabi23-clang++ lldb-argdumper
aarch64-linux-android22-clang armv7a-linux-androideabi24-clang llvm-addr2line
aarch64-linux-android22-clang++ armv7a-linux-androideabi24-clang++ llvm-ar
aarch64-linux-android23-clang armv7a-linux-androideabi26-clang llvm-as
aarch64-linux-android23-clang++ armv7a-linux-androideabi26-clang++ llvm-cfi-verify
aarch64-linux-android24-clang armv7a-linux-androideabi27-clang llvm-config
aarch64-linux-android24-clang++ armv7a-linux-androideabi27-clang++ llvm-cov
aarch64-linux-android26-clang armv7a-linux-androideabi28-clang llvm-dis
aarch64-linux-android26-clang++ armv7a-linux-androideabi28-clang++ llvm-lib
aarch64-linux-android27-clang armv7a-linux-androideabi29-clang llvm-link
aarch64-linux-android27-clang++ armv7a-linux-androideabi29-clang++ llvm-modextract
aarch64-linux-android28-clang bisect_driver.py llvm-nm
aarch64-linux-android28-clang++ clang llvm-objcopy
aarch64-linux-android29-clang clang++ llvm-objdump
aarch64-linux-android29-clang++ clang-check llvm-profdata
aarch64-linux-android-addr2line clang-cl llvm-ranlib
aarch64-linux-android-ar clang-format llvm-readelf
aarch64-linux-android-as clang-tidy llvm-readobj
aarch64-linux-android-c++filt clang-tidy.real llvm-size
aarch64-linux-android-dwp dsymutil llvm-strings
aarch64-linux-android-elfedit git-clang-format llvm-strip
aarch64-linux-android-gprof i686-linux-android16-clang llvm-symbolizer
aarch64-linux-android-ld i686-linux-android16-clang++ sancov
aarch64-linux-android-ld.bfd i686-linux-android17-clang sanstats
aarch64-linux-android-ld.gold i686-linux-android17-clang++ scan-build
aarch64-linux-android-nm i686-linux-android18-clang scan-view
aarch64-linux-android-objcopy i686-linux-android18-clang++ x86_64-linux-android21-clang
aarch64-linux-android-objdump i686-linux-android19-clang x86_64-linux-android21-clang++
aarch64-linux-android-ranlib i686-linux-android19-clang++ x86_64-linux-android22-clang
aarch64-linux-android-readelf i686-linux-android21-clang x86_64-linux-android22-clang++
aarch64-linux-android-size i686-linux-android21-clang++ x86_64-linux-android23-clang
aarch64-linux-android-strings i686-linux-android22-clang x86_64-linux-android23-clang++
aarch64-linux-android-strip i686-linux-android22-clang++ x86_64-linux-android24-clang
arm-linux-androideabi-addr2line i686-linux-android23-clang x86_64-linux-android24-clang++
arm-linux-androideabi-ar i686-linux-android23-clang++ x86_64-linux-android26-clang
arm-linux-androideabi-as i686-linux-android24-clang x86_64-linux-android26-clang++
arm-linux-androideabi-c++filt i686-linux-android24-clang++ x86_64-linux-android27-clang
arm-linux-androideabi-dwp i686-linux-android26-clang x86_64-linux-android27-clang++
arm-linux-androideabi-elfedit i686-linux-android26-clang++ x86_64-linux-android28-clang
arm-linux-androideabi-gprof i686-linux-android27-clang x86_64-linux-android28-clang++
arm-linux-androideabi-ld i686-linux-android27-clang++ x86_64-linux-android29-clang
arm-linux-androideabi-ld.bfd i686-linux-android28-clang x86_64-linux-android29-clang++
arm-linux-androideabi-ld.gold i686-linux-android28-clang++ x86_64-linux-android-addr2line
arm-linux-androideabi-nm i686-linux-android29-clang x86_64-linux-android-ar
arm-linux-androideabi-objcopy i686-linux-android29-clang++ x86_64-linux-android-as
arm-linux-androideabi-objdump i686-linux-android-addr2line x86_64-linux-android-c++filt
arm-linux-androideabi-ranlib i686-linux-android-ar x86_64-linux-android-dwp
arm-linux-androideabi-readelf i686-linux-android-as x86_64-linux-android-elfedit
arm-linux-androideabi-size i686-linux-android-c++filt x86_64-linux-android-gprof
arm-linux-androideabi-strings i686-linux-android-dwp x86_64-linux-android-ld
arm-linux-androideabi-strip i686-linux-android-elfedit x86_64-linux-android-ld.bfd
armv7a-linux-androideabi16-clang i686-linux-android-gprof x86_64-linux-android-ld.gold
armv7a-linux-androideabi16-clang++ i686-linux-android-ld x86_64-linux-android-nm
armv7a-linux-androideabi17-clang i686-linux-android-ld.bfd x86_64-linux-android-objcopy
armv7a-linux-androideabi17-clang++ i686-linux-android-ld.gold x86_64-linux-android-objdump
armv7a-linux-androideabi18-clang i686-linux-android-nm x86_64-linux-android-ranlib
armv7a-linux-androideabi18-clang++ i686-linux-android-objcopy x86_64-linux-android-readelf
armv7a-linux-androideabi19-clang i686-linux-android-objdump x86_64-linux-android-size
armv7a-linux-androideabi19-clang++ i686-linux-android-ranlib x86_64-linux-android-strings
armv7a-linux-androideabi21-clang i686-linux-android-readelf x86_64-linux-android-strip
armv7a-linux-androideabi21-clang++ i686-linux-android-size yasm
armv7a-linux-androideabi22-clang i686-linux-android-strings
armv7a-linux-androideabi22-clang++ i686-linux-android-strip
For those who are facing the incompatibility problem, here is a temporary hack to use NDK r19.2.x :
1. Install NDK r19.2.x in the side of R20.0.x 2. cd $SDK_FOLDER 3. ln -s ndk/19.2.5345600 ndk-bundlegomobile init should work with this hack!!
You don't need to install r19 ndk: just run
vadym@ubuntu:~/Android/Sdk$ ln -s ndk/21.2.6472646/ ndk-bundle
Thanks
add the following to your ~/.bashrc:
export ANDROID_HOME=$HOME/Android/Sdk
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/21.3.6528147
export PATH=$PATH:$GOPATH/bin:$ANDROID_HOME/platform-tools/
As I can see, you guys just have to specify the ndk version clearly.
Most helpful comment
You don't need to install r19 ndk: just run
vadym@ubuntu:~/Android/Sdk$ ln -s ndk/21.2.6472646/ ndk-bundle
Thanks