diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d15a525e..1f42ef30f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -157,7 +157,7 @@ OCV_OPTION(BUILD_TESTS "Build accuracy & regression tests" OCV_OPTION(BUILD_WITH_DEBUG_INFO "Include debug info into debug libs (not MSCV only)" ON ) OCV_OPTION(BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT for staticaly linked OpenCV" ON IF MSVC ) OCV_OPTION(BUILD_FAT_JAVA_LIB "Create fat java wrapper containing the whole OpenCV library" ON IF ANDROID AND NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX ) -OCV_OPTION(BUILD_ANDROID_SERVICE "Build OpenCV Manager for Google Play" OFF IF ANDROID AND ANDROID_USE_STLPORT AND ANDROID_SOURCE_TREE ) +OCV_OPTION(BUILD_ANDROID_SERVICE "Build OpenCV Manager for Google Play" OFF IF ANDROID AND ANDROID_SOURCE_TREE ) OCV_OPTION(BUILD_ANDROID_PACKAGE "Build platform-specific package for Google Play" OFF IF ANDROID ) # 3rd party libs diff --git a/android/scripts/cmake_android_all_cameras.py b/android/scripts/cmake_android_all_cameras.py index f44710424..75470e9c8 100755 --- a/android/scripts/cmake_android_all_cameras.py +++ b/android/scripts/cmake_android_all_cameras.py @@ -10,11 +10,11 @@ HomeDir = os.getcwd() for s in ConfFile.readlines(): s = s[0:s.find("#")] if (not s): - continue + continue keys = s.split(";") if (len(keys) < 4): - print("Error: invalid config line: \"%s\"" % s) - continue + print("Error: invalid config line: \"%s\"" % s) + continue MakeTarget = str.strip(keys[0]) Arch = str.strip(keys[1]) NativeApiLevel = str.strip(keys[2]) @@ -22,37 +22,41 @@ for s in ConfFile.readlines(): AndroidTreeRoot = str.strip(AndroidTreeRoot, "\n") print("Building %s for %s" % (MakeTarget, Arch)) BuildDir = os.path.join(HomeDir, MakeTarget + "_" + Arch) + if (os.path.exists(BuildDir)): - shutil.rmtree(BuildDir) + shutil.rmtree(BuildDir) + try: - os.mkdir(BuildDir) + os.mkdir(BuildDir) except: - print("Error: cannot create direcotry \"%s\"" % BuildDir) - continue + print("Error: cannot create direcotry \"%s\"" % BuildDir) + continue + shutil.rmtree(os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system"), ignore_errors=True) if (Arch == "x86"): - shutil.copytree(os.path.join(AndroidTreeRoot, "bin_x86", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system")) + shutil.copytree(os.path.join(AndroidTreeRoot, "bin_x86", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system")) elif (Arch == "mips"): - shutil.copytree(os.path.join(AndroidTreeRoot, "bin_mips", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system")) + shutil.copytree(os.path.join(AndroidTreeRoot, "bin_mips", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system")) else: - shutil.copytree(os.path.join(AndroidTreeRoot, "bin_arm", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system")) + shutil.copytree(os.path.join(AndroidTreeRoot, "bin_arm", "system"), os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system")) + os.chdir(BuildDir) BuildLog = os.path.join(BuildDir, "build.log") - CmakeCmdLine = "cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake -DANDROID_SOURCE_TREE=\"%s\" -DANDROID_NATIVE_API_LEVEL=\"%s\" -DANDROID_ABI=\"%s\" -DANDROID_USE_STLPORT=ON ../../ > \"%s\" 2>&1" % (AndroidTreeRoot, NativeApiLevel, Arch, BuildLog) + CmakeCmdLine = "cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake -DANDROID_SOURCE_TREE=\"%s\" -DANDROID_NATIVE_API_LEVEL=\"%s\" -DANDROID_ABI=\"%s\" -DANDROID_STL=stlport_static ../../ > \"%s\" 2>&1" % (AndroidTreeRoot, NativeApiLevel, Arch, BuildLog) MakeCmdLine = "make %s >> \"%s\" 2>&1" % (MakeTarget, BuildLog); - #print(CmakeCmdLine) + print(CmakeCmdLine) os.system(CmakeCmdLine) - #print(MakeCmdLine) + print(MakeCmdLine) os.system(MakeCmdLine) os.chdir(HomeDir) CameraLib = os.path.join(BuildDir, "lib", Arch, "lib" + MakeTarget + ".so") if (os.path.exists(CameraLib)): - try: - shutil.copyfile(CameraLib, os.path.join("..", "3rdparty", "lib", Arch, "lib" + MakeTarget + ".so")) - print("Building %s for %s\t[\033[92mOK\033[0m]" % (MakeTarget, Arch)); - except: - print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch)); + try: + shutil.copyfile(CameraLib, os.path.join("..", "3rdparty", "lib", Arch, "lib" + MakeTarget + ".so")) + print("Building %s for %s\t[\033[92mOK\033[0m]" % (MakeTarget, Arch)); + except: + print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch)); else: - print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch)); -ConfFile.close() + print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch)); +ConfFile.close() diff --git a/android/scripts/cmake_android_service.sh b/android/scripts/cmake_android_service.sh index eb3099182..3503bb73d 100755 --- a/android/scripts/cmake_android_service.sh +++ b/android/scripts/cmake_android_service.sh @@ -4,5 +4,5 @@ cd `dirname $0`/.. mkdir -p build_service cd build_service -cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake -DANDROID_USE_STLPORT=ON -DBUILD_ANDROID_SERVICE=ON -DANDROID_SOURCE_TREE=~/Projects/AndroidSource/2.2.2/ $@ ../.. +cmake -DCMAKE_TOOLCHAIN_FILE=../android.toolchain.cmake -DANDROID_STL=stlport_static -DANDROID_STL_FORCE_FEATURES=OFF -DBUILD_ANDROID_SERVICE=ON -DANDROID_SOURCE_TREE=~/Projects/AndroidSource/ServiceStub/ $@ ../.. diff --git a/android/service/engine/CMakeLists.txt b/android/service/engine/CMakeLists.txt index 87c8635b7..529aef9bd 100644 --- a/android/service/engine/CMakeLists.txt +++ b/android/service/engine/CMakeLists.txt @@ -1,10 +1,16 @@ set(engine OpenCVEngine) set(JNI_LIB_NAME ${engine} ${engine}_jni) + +unset(__android_project_chain CACHE) add_android_project(opencv_engine "${CMAKE_CURRENT_SOURCE_DIR}" SDK_TARGET 8 ${ANDROID_SDK_TARGET} IGNORE_JAVA ON) -link_directories("${ANDROID_SOURCE_TREE}/out/target/product/generic/system/lib" "${ANDROID_SOURCE_TREE}/out/target/product/${ANDROID_PRODUCT}/system/lib" "${ANDROID_SOURCE_TREE}/bin_${ANDROID_ARCH_NAME}/system/lib") +link_directories("${ANDROID_SOURCE_TREE}/out/target/product/generic/system/lib" "${ANDROID_SOURCE_TREE}/out/target/product/${ANDROID_PRODUCT}/system/lib" "${ANDROID_SOURCE_TREE}/bin/${ANDROID_ARCH_NAME}") -SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-allow-shlib-undefined") +# -D__SUPPORT_ARMEABI_FEATURES key is also available +add_definitions(-DPLATFORM_ANDROID -D__SUPPORT_ARMEABI_V7A_FEATURES -D__SUPPORT_TEGRA3 -D__SUPPORT_MIPS) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions") + +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-allow-shlib-undefined") file(GLOB engine_files "jni/BinderComponent/*.cpp" "jni/BinderComponent/*.h" "jni/include/*.h") include_directories(jni/BinderComponent jni/include) diff --git a/android/service/engine/jni/JNIWrapper/HardwareDetector_jni.cpp b/android/service/engine/jni/JNIWrapper/HardwareDetector_jni.cpp index b55c0b8e3..be30d877b 100644 --- a/android/service/engine/jni/JNIWrapper/HardwareDetector_jni.cpp +++ b/android/service/engine/jni/JNIWrapper/HardwareDetector_jni.cpp @@ -3,7 +3,7 @@ #include #include -JNIEXPORT jint JNICALL Java_org_opencv_engine_HardwareDetector_GetCpuID(JNIEnv* env, jclass) +JNIEXPORT jint JNICALL Java_org_opencv_engine_HardwareDetector_GetCpuID(JNIEnv* , jclass) { return GetCpuID(); } @@ -14,12 +14,12 @@ JNIEXPORT jstring JNICALL Java_org_opencv_engine_HardwareDetector_GetPlatformNam return env->NewStringUTF(hardware_name.c_str()); } -JNIEXPORT jint JNICALL Java_org_opencv_engine_HardwareDetector_GetProcessorCount(JNIEnv* env, jclass) +JNIEXPORT jint JNICALL Java_org_opencv_engine_HardwareDetector_GetProcessorCount(JNIEnv* , jclass) { return GetProcessorCount(); } -JNIEXPORT jint JNICALL Java_org_opencv_engine_HardwareDetector_DetectKnownPlatforms(JNIEnv* env, jclass) +JNIEXPORT jint JNICALL Java_org_opencv_engine_HardwareDetector_DetectKnownPlatforms(JNIEnv* , jclass) { return DetectKnownPlatforms(); } \ No newline at end of file diff --git a/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp b/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp index 96b5dc311..dac491656 100644 --- a/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp +++ b/android/service/engine/jni/JNIWrapper/OpenCVEngine_jni.cpp @@ -30,7 +30,7 @@ JNIEXPORT jobject JNICALL Java_org_opencv_engine_BinderConnector_Connect(JNIEnv* return javaObjectForIBinder(env, OpenCVEngineBinder); } -JNIEXPORT jboolean JNICALL Java_org_opencv_engine_BinderConnector_Init(JNIEnv* env, jobject thiz, jobject market) +JNIEXPORT jboolean JNICALL Java_org_opencv_engine_BinderConnector_Init(JNIEnv* env, jobject , jobject market) { LOGD("Java_org_opencv_engine_BinderConnector_Init"); diff --git a/android/service/engine/jni/NativeService/PackageInfo.cpp b/android/service/engine/jni/NativeService/PackageInfo.cpp index 67b608d04..237e979d8 100644 --- a/android/service/engine/jni/NativeService/PackageInfo.cpp +++ b/android/service/engine/jni/NativeService/PackageInfo.cpp @@ -363,7 +363,7 @@ InstallPath(install_path) } else { - LOGE("Library loading error (%x, %x): \"%s\"", name_func, revision_func, error); + LOGE("Library loading error (%p, %p): \"%s\"", name_func, revision_func, error); } } else