Bootstrap

Android 使用libyuv-集成

  1. 将编译生成的动态库复制到app\src\main\jniLibs目录

  2. include文件夹复制到app\src\main\cpp\include

  3. 修改build.gradle

        defaultConfig {
            ……………………
            externalNativeBuild {
                cmake {
                    cppFlags ""
                    abiFilters 'arm64-v8a'
                }
            }
        }
    
  4. 修改CMakeLists.txt

    # For more information about using CMake with Android Studio, read the
    # documentation: https://d.android.com/studio/projects/add-native-code.html
    
    # Sets the minimum version of CMake required to build the native library.
    
    cmake_minimum_required(VERSION 3.22.1)
    
    set(CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES  ${CMAKE_SOURCE_DIR}/../jniLibs)
    # Declares and names the project.
    
    project("libyuv")
    
    # Creates and names a library, sets it as either STATIC
    # or SHARED, and provides the relative paths to its source code.
    # You can define multiple libraries, and CMake builds them for you.
    # Gradle automatically packages shared libraries with your APK.
    
    add_library( # Sets the name of the library.
            libyuv
    
            # Sets the library as a shared library.
            SHARED
    
            # Provides a relative path to your source file(s).
            yuv-lib.cpp)
    
    # Searches for a specified prebuilt library and stores the path as a
    # variable. Because CMake includes system libraries in the search path by
    # default, you only need to specify the name of the public NDK library
    # you want to add. CMake verifies that the library exists before
    # completing its build.
    
    add_library(
            yuv_util # 表示的是模块名称,可以自己任意取,例如:deviceutil
            SHARED # 这个是固定的,基本上表示共享库
            IMPORTED # 这个也基本上是固定的,表示当前是导入的,跟我们 java 的 import 差不多含义
    )
    set_target_properties(
            yuv_util # 库的名称
            PROPERTIES IMPORTED_LOCATION # 表示当前库是导入的方式
            ${CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES}/${ANDROID_ABI}/libyuv_library.so# so 动态库的具体路径
    )
    include_directories( ${CMAKE_SOURCE_DIR}/include)
    
    find_library( # Sets the name of the path variable.
            log-lib
    
            # Specifies the name of the NDK library that
            # you want CMake to locate.
            log)
    
    # Specifies libraries CMake should link to your target library. You
    # can link multiple libraries, such as libraries you define in this
    # build script, prebuilt third-party libraries, or system libraries.
    
    target_link_libraries( # Specifies the target library.
            libyuv
    
            yuv_util
            # Links the target library to the log library
            # included in the NDK.
            ${log-lib})
    
;