diff --git a/android/scripts/ABI_compat_generator.py b/android/scripts/ABI_compat_generator.py
index c3f77a8de..638c690ea 100755
--- a/android/scripts/ABI_compat_generator.py
+++ b/android/scripts/ABI_compat_generator.py
@@ -3,10 +3,10 @@
 import os
 import sys
 
-ANDROID_SDK_PATH="/opt/android-sdk-linux"
-ANDROID_NDK_PATH="/opt/android-ndk-r8"
-INSTALL_DIRECTORY="OpenCV-2.4.2-branch"
-CLASS_PATH=os.path.join(INSTALL_DIRECTORY, "sdk/java/bin/classes");
+ANDROID_SDK_PATH = "/opt/android-sdk-linux"
+ANDROID_NDK_PATH = None
+INSTALL_DIRECTORY = None
+CLASS_PATH = None
 TMP_HEADER_PATH="tmp_include"
 HEADER_EXTS = set(['h', 'hpp'])
 SYS_INCLUDES = ["platforms/android-8/arch-arm/usr/include", "sources/cxx-stl/gnu-libstdc++/include", "sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"]
@@ -48,6 +48,34 @@ def FindHeaders(root):
 		    headers.append(currentPath)
     return headers
 
+if (len(sys.argv) < 3):
+    print("Error: Invalid command line arguments")
+    exit(-1)
+
+INSTALL_DIRECTORY = sys.argv[1]
+PROJECT_NAME = sys.argv[2]
+
+CLASS_PATH = os.path.join(INSTALL_DIRECTORY, "sdk/java/bin/classes")
+if (not os.path.exists(CLASS_PATH)):
+    print("Error: no java classes found in \"%s\"", CLASS_PATH)
+    exit(-2)
+
+if (os.environ.has_key("NDK_ROOT")):
+    ANDROID_NDK_PATH = os.environ["NDK_ROOT"];
+    print("Using Android NDK from NDK_ROOT (\"%s\")" % ANDROID_NDK_PATH)
+    
+
+if (not ANDROID_NDK_PATH):
+    pipe = os.popen("which ndk-build")
+    tmp = str.strip(pipe.readline(), "\n")
+    while(not tmp):
+	tmp = str.strip(pipe.readline(), "\n")
+    pipe.close()
+    ANDROID_NDK_PATH = tmp
+    print("Using Android NDK from PATH (\"%s\")" % ANDROID_NDK_PATH)
+
+print("Using Android SDK from \"%s\"" % ANDROID_SDK_PATH)
+
 outputFileName = PROJECT_NAME + ".xml"
 try:
     outputFile = open(outputFileName, "w")