先来段介绍:
libyuv是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。它是跨平台的,可在Windows、Linux、Mac、Android等操作系统,x86、x64、arm架构上进行编译运行,支持SSE、AVX、NEON等SIMD指令加速。

git下载地址:
git clone https://chromium.googlesource.com/external/libyuv
安装git后只要在命令行里输入这条命令就会下载到本地

另附google开源代码网址
https://chromium.googlesource.com/?format=HTML

下载后目录结构如图所示:

里面有很多平台的编译脚本
这里我们只看android的android.mk 代码如下

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_CPP_EXTENSION := .ccLOCAL_SRC_FILES := \    source/compare.cc           \    source/compare_common.cc    \    source/compare_neon64.cc    \    source/compare_gcc.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_argb.cc       \    source/rotate_mips.cc       \    source/rotate_neon64.cc     \    source/row_any.cc           \    source/row_common.cc        \    source/row_mips.cc          \    source/row_neon64.cc        \    source/row_gcc.cc           \    source/scale.cc             \    source/scale_any.cc         \    source/scale_argb.cc        \    source/scale_common.cc      \    source/scale_mips.cc        \    source/scale_neon64.cc      \    source/scale_gcc.cc         \    source/video_common.cc# TODO(fbarchard): Enable mjpeg encoder.#   source/mjpeg_decoder.cc#   source/convert_jpeg.cc#   source/mjpeg_validate.ccifeq ($(TARGET_ARCH_ABI),armeabi-v7a)    LOCAL_CFLAGS += -DLIBYUV_NEON    LOCAL_SRC_FILES += \        source/compare_neon.cc.neon    \        source/rotate_neon.cc.neon     \        source/row_neon.cc.neon        \        source/scale_neon.cc.neonendifLOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/includeLOCAL_C_INCLUDES += $(LOCAL_PATH)/includeLOCAL_MODULE := libyuv_staticLOCAL_MODULE_TAGS := optionalinclude $(BUILD_STATIC_LIBRARY)

基本上不用改,只有最后一句
如果要编译出.a的静态库不用改
如果要编译出.so的动态链接库改为:include $(BUILD_SHARED_LIBRARY)

添加在android.mk同级目录下新建application.mk 内容如下

#APP_ABI是用于指定编译哪个平台的库 , 可以写多个 用空格隔开 (libyuv默认吧所有平台都编了) APP_ABI := armeabi   armeabi-v7a mips#APP_PLATFORM为指定android平台版本 差不多相当于SDK里面的targetSDKVersionAPP_PLATFORM := android-14 #APP_STL 是使用哪种STL#system --> 系统默认的最小支持的C++运行时库#stlport_static --> 以静态链接的方式使用stlport版本的STL#stlport_shared --> 以动态链接的方式使用stlport版本的STL#gnustl_static  --> 以静态链接的方式使用gnu版本的STLAPP_STL := stlport_static  #APP_CPPFLAGS 为C++编译参数  这个有很多 需要自己一个个看APP_CPPFLAGS += -fno-rtti  

我一般习惯用脚本启动编译
新建jni目录 将libyuv下的所有文件/文件夹 移到jni文件夹中(jni目录名字不能随便取 这是默认ndk-build命令默认指定的文件夹)
创建build.bat(名字随便) 里面写上一句话就行了 其他参数自己加

ndk-build -D

如图

双击bat

看到这里就成功了

好的 编译完成后就开始写jni
高能警告:前方有一大波坑

更多相关文章

  1. android studio 3.1 升级gradle4.4时所踩到的坑
  2. Android(安卓)4.4源码编译过程
  3. 【proguard混淆】Android(安卓)Gson混淆打包
  4. NDK的sample里hello-gl2编译通过,运行报错
  5. 在windows平台上搭建Android开发环境-图例
  6. Android(安卓)NDK编译选项设置
  7. linux/android mk文件
  8. Android(安卓)Toast大全(五种情形)建立属于你自己的Toast
  9. AndroidStudio创建TV-APP,出现Error:(28, 13) Failed to resolve:

随机推荐

  1. Android(安卓)Studio打包APK文件的具体方
  2. android inflate初探
  3. android监听app安装与卸载
  4. Android(安卓)8.0 SystemUI(一)
  5. android 自动化测试方法
  6. Android打开不同类型文件
  7. Android(安卓)开发必备AS插件,写下来,方便
  8. 调整android输出分辨率,适配更大分辨率的
  9. android的互联网开发 上
  10. Android的用GreenDao操作数据库