Hi and thanks for practically the only guide online for how to do this!!

I am having trouble with what I believe is a linker error. Though ndk-builder gives no errors for building libnonfree.so, I noticed with ls-la that the size of my file is much smaller than the one you provided pre-compiled (5088 bytes vs 460144 bytes for yours).

libnonfree.so ndk-build output:
nathan@nathan-lenovo:~/Downloads/nonfree_opencv_android/jni$ ../../android-ndk-r10c/ndk-build
[armeabi] Prebuilt       : libopencv_java.so <= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/../libs/armeabi/
[armeabi] SharedLibrary  : libnonfree.so
[armeabi] Install        : libnonfree.so => libs/armeabi/libnonfree.so






Application.mk:
APP_ABI := armeabi 
#APP_ABI += armeabi-v7a # you can do either armeabi or armeabi-v7a, steps are the same.
#APP_ABI += x86
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_PLATFORM := android-19






Android.mk:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
include /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk

LOCAL_C_INCLUDES:= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include
LOCAL_MODULE    := nonfree
LOCAL_CFLAGS    := -Werror -O3 -ffast-math
LOCAL_LDLIBS    += -llog

# for 2.4.8, delete the line precomp.cpp \
LOCAL_SRC_FILES := nonfree_init.cpp \
 precomp.cpp \
 sift.cpp \
 surf.cpp
include $(BUILD_SHARED_LIBRARY)







This is the output for the demo C++ app:
nathan@nathan-lenovo:~/Downloads/sift_demo/sift_opencv_android$ ../../android-ndk-r10c/ndk-build
[armeabi] Prebuilt       : libopencv_java.so <= jni/
[armeabi] Install        : libopencv_java.so => libs/armeabi/libopencv_java.so
[armeabi] Prebuilt       : libnonfree.so <= jni/
[armeabi] Install        : libnonfree.so => libs/armeabi/libnonfree.so
[armeabi] Compile++ thumb: test_sift <= test_sift.cpp
[armeabi] Executable     : test_sift
/home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function .LTHUNK7:/home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/nonfree/features2d.hpp:58: error: undefined reference to 'vtable for cv::SIFT'
/home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function .LTHUNK7:/home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/nonfree/features2d.hpp:58: error: undefined reference to 'VTT for cv::SIFT'
/home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function main:jni/test_sift.cpp:39: error: undefined reference to 'cv::SIFT::SIFT(int, int, double, double, double)'
/home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function main:jni/test_sift.cpp:47: error: undefined reference to 'cv::SIFT::SIFT(int, int, double, double, double)'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/test_sift] Error 1





Application.mk:
APP_ABI := armeabi 
#APP_ABI += armeabi-v7a
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_PLATFORM := android-19




Android.mk:
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := sift_prebuilt
LOCAL_SRC_FILES := libnonfree.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE    := opencv_java_prebuilt
LOCAL_SRC_FILES := libopencv_java.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/
LOCAL_MODULE    := test_sift
LOCAL_CFLAGS    := -Werror -O3 -ffast-math
LOCAL_LDLIBS    += -llog -ldl 
LOCAL_SHARED_LIBRARIES := sift_prebuilt opencv_java_prebuilt
LOCAL_SRC_FILES := test_sift.cpp
include $(BUILD_EXECUTABLE)