廢話不多說先上工程目錄
include、source、unit_test都是libyuv的源碼,Android.mk也是源碼壓縮包裏提供的,so可以直接編譯成功了?
只能說我還是太年輕了,fatal error: jpeglib.h: No such file or directory直接ndk-build絕對遇到這坑,我們得把jpeglib相關的玩意註釋掉才能成功。
上修改後的Android.mk
# This is the Android makefile for libyuv for NDK. LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := \ source/compare.cc \ source/compare_common.cc \ source/compare_gcc.cc \ source/compare_mmi.cc \ source/compare_msa.cc \ source/compare_neon.cc \ source/compare_neon64.cc \ source/convert.cc \ source/convert_argb.cc \ source/convert_from.cc \ source/convert_from_argb.cc \ source/convert_to_argb.cc \ source/convert_to_i420.cc \ source/cpu_id.cc \ source/planar_functions.cc \ source/rotate.cc \ source/rotate_any.cc \ source/rotate_argb.cc \ source/rotate_common.cc \ source/rotate_gcc.cc \ source/rotate_mmi.cc \ source/rotate_msa.cc \ source/rotate_neon.cc \ source/rotate_neon64.cc \ source/row_any.cc \ source/row_common.cc \ source/row_gcc.cc \ source/row_mmi.cc \ source/row_msa.cc \ source/row_neon.cc \ source/row_neon64.cc \ source/scale.cc \ source/scale_any.cc \ source/scale_argb.cc \ source/scale_common.cc \ source/scale_gcc.cc \ source/scale_mmi.cc \ source/scale_msa.cc \ source/scale_neon.cc \ source/scale_neon64.cc \ source/video_common.cc common_CFLAGS := -Wall -fexceptions # 這裏註釋 防止fatal error: jpeglib.h: No such file or directory #ifneq ($(LIBYUV_DISABLE_JPEG), "yes") #LOCAL_SRC_FILES += \ # source/convert_jpeg.cc \ # source/mjpeg_decoder.cc \ # source/mjpeg_validate.cc #common_CFLAGS += -DHAVE_JPEG #LOCAL_SHARED_LIBRARIES := libjpeg #endif LOCAL_CFLAGS += $(common_CFLAGS) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_C_INCLUDES += $(LOCAL_PATH)/include LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include LOCAL_MODULE := libyuv_static LOCAL_MODULE_TAGS := optional include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_WHOLE_STATIC_LIBRARIES := libyuv_static LOCAL_MODULE := libyuv # 這裏註釋 防止fatal error: jpeglib.h: No such file or directory #ifneq ($(LIBYUV_DISABLE_JPEG), "yes") #LOCAL_SHARED_LIBRARIES := libjpeg #endif #include $(BUILD_STATIC_LIBRARY) include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_STATIC_LIBRARIES := libyuv_static LOCAL_SHARED_LIBRARIES := libjpeg LOCAL_MODULE_TAGS := tests LOCAL_CPP_EXTENSION := .cc LOCAL_C_INCLUDES += $(LOCAL_PATH)/include LOCAL_SRC_FILES := \ unit_test/unit_test.cc \ unit_test/basictypes_test.cc \ unit_test/color_test.cc \ unit_test/compare_test.cc \ unit_test/convert_test.cc \ unit_test/cpu_test.cc \ unit_test/cpu_thread_test.cc \ unit_test/math_test.cc \ unit_test/planar_test.cc \ unit_test/rotate_argb_test.cc \ unit_test/rotate_test.cc \ unit_test/scale_argb_test.cc \ unit_test/scale_test.cc \ unit_test/video_common_test.cc LOCAL_MODULE := libyuv_unittest include $(BUILD_NATIVE_TEST)
懶得動手編的童鞋底下的連接有編譯好的so庫,不過建議還是自己編譯一下比較好