当前位置: 首页 > article >正文

Android 编译和使用libheif

项目中需要使用libheif,libde265,libyuv。一下是相应的cmakelist.txt。这里直接使用了静态库。 里面涉及到c++包的链接,需要stdc++

${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/liblibde265.a这个路径由于操作过程中copy出现问题,多了一层路径,消耗了很多时间。哎,永远不知道会出现什么莫名的问题。

# 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)

# Declares and names the project.

project("myLL")

# 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.
include_directories(${PROJECT_SOURCE_DIR}/../include)

add_library(libheif
        STATIC
        IMPORTED)

set_target_properties( # Specifies the target library.
        libheif
        # Specifies the parameter you want to define.
        PROPERTIES IMPORTED_LOCATION
        # Provides the path to the library you want to import.
        ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libheif.a)

message("PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
message("ANDROID_ABI: ${ANDROID_ABI}")


add_library(libde265
        STATIC
        IMPORTED)

set_target_properties( # Specifies the target library.
        libde265
        # Specifies the parameter you want to define.
        PROPERTIES IMPORTED_LOCATION
        # Provides the path to the library you want to import.
        ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/liblibde265.a)

add_library(libyuv
        STATIC
        IMPORTED)

set_target_properties( # Specifies the target library.
        libyuv
        # Specifies the parameter you want to define.
        PROPERTIES IMPORTED_LOCATION
        # Provides the path to the library you want to import.
        ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libyuv.a)

#[[
add_library( # Sets the name of the library.
        heif_jni
        # Sets the library as a shared library.
        SHARED
        # Provides a relative path to your source file(s).
        heif_jni.cpp)
]]


set( source_dir ${CMAKE_CURRENT_SOURCE_DIR} )
set( headers
        ${source_dir}/nativelib.h
        ${PROJECT_SOURCE_DIR}/../include/libheif/heif.h
        ${PROJECT_SOURCE_DIR}/../include/libheif/heif_cxx.h
        ${PROJECT_SOURCE_DIR}/../include/libheif/heif_items.h
        ${PROJECT_SOURCE_DIR}/../include/libheif/heif_plugin.h
        ${PROJECT_SOURCE_DIR}/../include/libheif/heif_properties.h
        ${PROJECT_SOURCE_DIR}/../include/libheif/heif_version.h
)

set( sources
        ${source_dir}/nativelib.c
        ${source_dir}/nativelib_jni.c
)

add_library( # Sets the name of the library.
        myLL

        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        ${sources} ${headers} )

# 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.

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.
                       myLL
                       libheif
                       libde265
                       libyuv
                       jnigraphics
                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib}
        			    stdc++
                     #[[  heif_jni]]
                       )
                     

···

http://www.kler.cn/a/420774.html

相关文章:

  • 威联通-001 手机相册备份
  • 智能运维在配电所设备监控中的应用与洞察
  • PyTorch|彩色图片识别
  • Google Cloud 混合云部署连接方式最佳实践案例讲解
  • git推送多个仓库
  • SpringBoot(一)
  • playwright 学习复仇记-2 Selector选择器定位元素
  • vmware虚拟机移植
  • 多线程 03 实现方式
  • 三维开发中blender建模后如何完美兼容到threejs
  • SAP HANA 上进行 ABAP 开发:简介
  • 设计模式 更新ing
  • 简单快速的上手python
  • node.js基础学习-zlib模块-压缩解压(八)
  • 护航开源大赛,赋能数字未来
  • Milvus python库 pymilvus 常用操作详解之Collection(上)
  • 算力100问☞第32问:密集计算的关键技术有哪些?
  • Pytest --capture 参数详解:如何控制测试执行过程中的输出行为
  • 【ONE·基础算法 || 动态规划(三)】
  • 基于Java Springboot成人教育APP且微信小程序
  • Web实时通信@microsoft/signalr
  • C语言第十四周课——课堂练习
  • pip更换国内源,加速Python包下载(附2024年12月最新国内镜像源列表)
  • Unity3D 设置图片拉伸四角不变形
  • PhPMyadmin-漏洞复现
  • 工业公辅车间数智化节能头部企业,蘑菇物联选择 TDengine 升级 AI 云智控