Unable to build .apk file
When I try to build apk file from build menu in Android Studio, I get the following error...
Executing tasks: [:app:assembleDebug]
Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:checkDebugManifest UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:prepareLintJar UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:createDebugCompatibleScreenManifests UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:splitsDiscoveryTaskDebug UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:javaPreCompileDebug UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:generateJsonModelDebug UP-TO-DATE
:app:externalNativeBuildDebug
Build tensorflow_demo arm64-v8a
ninja: no work to do.
Build tensorflow_demo x86
[1/1] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/x86/libtensorflow_demo.so
FAILED: : && /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android --gcc-toolchain=/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86 -fPIC -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -DSTANDALONE_DEMO_LIB -std=c++11 -fno-exceptions -fno-rtti -O2 -Wno-narrowing -fPIE -O0 -fno-limit-debug-info -O0 -fno-limit-debug-info -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -llog -Wl,--allow-multiple-definition -Wl,--whole-archive -fPIE -v -shared -Wl,-soname,libtensorflow_demo.so -o ../../../../build/intermediates/cmake/debug/obj/x86/libtensorflow_demo.so CMakeFiles/tensorflow_demo.dir/src/main/cpp/imageutils_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/rgb2yuv.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/yuv2rgb.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/frame_pair.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/image_neon.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/keypoint_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/logging.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_tracker.cc.o CMakeFiles/tensorflow_de
mo.dir/src/main/cpp/object_tracking/object_tracker_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/optical_flow.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/time_log.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/tracked_object.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/utils_neon.cc.o -lm "/home/ubuntu/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a" && :
Android clang version 3.8.275480 (based on LLVM 3.8.275480)
Target: i686-none-linux-android
Thread model: posix
InstalledDir: /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin
Found candidate GCC installation: /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x
Selected GCC installation: /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x
Candidate multilib: .;@m32
Selected multilib: .;@m32
"/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld" --sysroot=/home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86 -z relro --eh-frame-hdr -m elf_i386 -shared -o ../../../../build/intermediates/cmake/debug/obj/x86/libtensorflow_demo.so /home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86/usr/lib/crtbegin_so.o -L/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x -L/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/lib -L/home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86/usr/lib --build-id --warn-shared-textrel --fatal-warnings --no-undefined -z noexecstack -z relro -z now --build-id --warn-shared-textrel --fatal-warnings --no-undefined -z noexecstack -z relro -z now -llog --allow-multiple-definition --whole-archive -soname libtensorf
low_demo.so CMakeFiles/tensorflow_demo.dir/src/main/cpp/imageutils_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/rgb2yuv.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/yuv2rgb.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/frame_pair.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/image_neon.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/keypoint_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/logging.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_tracker.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_tracker_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/optical_flow.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/time_log.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/tracked_object.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/utils_neon.cc.o -lm /home/ubuntu/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a -lstdc++ -lm -lgcc -ldl -lc -lgcc -ldl /home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86/usr/lib/crtend_so.o
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
:app:externalNativeBuildDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:externalNativeBuildDebug'.
> Build command failed.
Error while executing process /home/ubuntu/Android/Sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /home/ubuntu/Desktop/AndroidStudio/Standalone_TFdetect/TFdetect/app/.externalNativeBuild/cmake/debug/x86 --target tensorflow_demo}
[1/1] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/x86/libtensorflow_demo.so
FAILED: : && /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android --gcc-toolchain=/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86 -fPIC -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -DSTANDALONE_DEMO_LIB -std=c++11 -fno-exceptions -fno-rtti -O2 -Wno-narrowing -fPIE -O0 -fno-limit-debug-info -O0 -fno-limit-debug-info -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -llog -Wl,--allow-multiple-definition -Wl,--whole-archive -fPIE -v -shared -Wl,-soname,libtensorflow_demo.so -o ../../../../build/intermediates/cmake/debug/obj/x86/libtensorflow_demo.so CMakeFiles/tensorflow_demo.dir/src/main/cpp/imageutils_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/rgb2yuv.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/yuv2rgb.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/frame_pair.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/image_neon.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/keypoint_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/logging.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_tracker.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_tracker_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/optical_flow.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/time_log.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/tracked_object.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/utils_neon.cc.o -lm "/home/ubuntu/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a" && :
Android clang version 3.8.275480 (based on LLVM 3.8.275480)
Target: i686-none-linux-android
Thread model: posix
InstalledDir: /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin
Found candidate GCC installation: /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x
Selected GCC installation: /home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x
Candidate multilib: .;@m32
Selected multilib: .;@m32
"/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld" --sysroot=/home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86 -z relro --eh-frame-hdr -m elf_i386 -shared -o ../../../../build/intermediates/cmake/debug/obj/x86/libtensorflow_demo.so /home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86/usr/lib/crtbegin_so.o -L/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x -L/home/ubuntu/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/lib -L/home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86/usr/lib --build-id --warn-shared-textrel --fatal-warnings --no-undefined -z noexecstack -z relro -z now --build-id --warn-shared-textrel --fatal-warnings --no-undefined -z noexecstack -z relro -z now -llog --allow-multiple-definition --whole-archive -soname libtensorflow_demo.so CMakeFiles/tensorflow_demo.dir/src/main/cpp/imageutils_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/rgb2yuv.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/yuv2rgb.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/frame_pair.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/image_neon.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/keypoint_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/logging.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_detector.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_tracker.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/object_tracker_jni.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/optical_flow.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/time_log.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/tracked_object.cc.o CMakeFiles/tensorflow_demo.dir/src/main/cpp/object_tracking/utils_neon.cc.o -lm /home/ubuntu/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a -lstdc++ -lm -lgcc -ldl -lc -lgcc -ldl /home/ubuntu/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86/usr/lib/crtend_so.o
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
/tmp/f41bed50092f7cd0ad4af2b741f2d34a/sysroot/usr/include/unistd.h:173: error: undefined reference to '__page_size'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 15s
16 actionable tasks: 1 executed, 15 up-to-date
I tried to follow the steps mentioned in this link: https://stackoverflow.com/questions/36002823/ndk-build-fails-to-build-superpowered-audio-library-after-recent-ndk-update But still the error persists. Please help...
I think I found a solution.
I removed 'x86' parameter in build.gradle(Module:app) file. I think this will remove support for x86 devices.
I can now successfully rebuild the whole project as well as build the apk.
Upgrading ndk version to 16 is not a choice as mentioned here: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android, the recommended version is 14b.
Do let me know if this is correct workaround, so I will create my first pull request on GitHub !
@himanshurawlani I don't think removing x86 is a solution, since this is intended for x86-based Android devices. You can see the list of ABIs for different CPUs here. https://developer.android.com/ndk/guides/abis.html
Solved it by updating NDK to latest version (16.1) from SDK manager...
@himanshurawlani I see, thank you for letting me know. tensorflow 1.5 has come out recently, you may want to pick up the newest libraries if you want to try. I still have 1.4 in my repository.