libpng是什么?

专门对png进行读写,并且要与zlib同时使用

Android 使用cmake编译libpng项目地址:

https://github.com/kingdawin/libpng-android

这个项目只需要libpng代码,而不用下载zlib,只需在cmake中关联Android系统的zlib库。由于Android Bitmap解压也用到libpng库,所以系统自身带有zlib。

cmake配置相关知识

库与库如何关联

使用target_link_libraries(),在里面加入你需要关联的库即可

# png库与zlib关联

target_link_libraries( ${project_name} PUBLIC ZLIB::ZLIB )

如何添加多个库

使用add_library

add_library(

#库名

${project_name}

#代码路径

${sources}

${headers} )

项目CMakeList.txt文件说明

cmake_minimum_required( VERSION 3.6 )

# png库名

set( project_name png )

project( ${project_name} )

if( MSVC )

add_definitions(/MP)

endif()

#jni代码路径,根据你实际路径修改

set( source_dir ${CMAKE_CURRENT_SOURCE_DIR}/jni )

#头文件路径

set( headers

${source_dir}/pnginfo.h

${source_dir}/config.h

${source_dir}/png.h

${source_dir}/pngconf.h

${source_dir}/pngdebug.h

${source_dir}/pnglibconf.h

${source_dir}/pngprefix.h

${source_dir}/pngpriv.h

${source_dir}/pngstruct.h

)

# c文件路径

set( sources

${source_dir}/arm/arm_init.c

${source_dir}/arm/filter_neon.S

${source_dir}/arm/filter_neon_intrinsics.c

${source_dir}/png.c

${source_dir}/pngerror.c

${source_dir}/pngget.c

${source_dir}/pngmem.c

${source_dir}/pngpread.c

${source_dir}/pngread.c

${source_dir}/pngrio.c

${source_dir}/pngrtran.c

${source_dir}/pngrutil.c

${source_dir}/pngset.c

${source_dir}/pngtest.c

${source_dir}/pngtrans.c

${source_dir}/pngwio.c

${source_dir}/pngwrite.c

${source_dir}/pngwtran.c

${source_dir}/pngwutil.c

)

# 链接系统的zlib库

find_package( zlib REQUIRED )

# If you want a shared library instead of static, specify the BUILD_SHARED_LIBS

# variable (which is a built-in CMake option).

# 添加libpng库

add_library( ${project_name} ${sources} ${headers} )

# png库与zlib关联

target_link_libraries( ${project_name} PUBLIC ZLIB::ZLIB )

target_include_directories( ${project_name} PUBLIC

$

$

)

#使用add_library可以添加多个库,比如自己定义一个native-jni

#native-jni要使用png lib,只要将png lib关联即可在native-jni代码文件用

# #include引用相关函数

add_library(

#你的库名

native-jni

#填你的c/c++代码路径

${sources}

${headers} )

#下面的配置用来安装,可以删除

############################################################

## INSTALL

############################################################

include( CMakePackageConfigHelpers )

set( PNG_VERSION 1.6.29 )

set( PNG_EXPORT_DIR share/png-${PNG_VERSION}/cmake )

set( PNG_EXPORT_NAME png-export )

install( TARGETS png EXPORT ${PNG_EXPORT_NAME}

RUNTIME DESTINATION bin

LIBRARY DESTINATION lib

ARCHIVE DESTINATION lib

INCLUDES DESTINATION include

)

install( FILES ${headers} DESTINATION include )

install( EXPORT ${PNG_EXPORT_NAME} DESTINATION ${PNG_EXPORT_DIR} )

configure_file( png-config.cmake.in png-config.cmake @ONLY )

write_basic_package_version_file(

png-config-version.cmake

VERSION ${PNG_VERSION}

COMPATIBILITY AnyNewerVersion

)

install(

FILES

${CMAKE_CURRENT_BINARY_DIR}/png-config.cmake

${CMAKE_CURRENT_BINARY_DIR}/png-config-version.cmake

DESTINATION ${PNG_EXPORT_DIR}

)

4.NDK环境配置

1)下载LLDB,NDK,CMake

as中打开sdk下载,选择SDK Tools,勾选LLDB任意版本和NDK

image.png

2)设置as的NDK路径

5.在已有的项目添加Cmake文件,并与项目关联

android libpng16,Android NDK 开发之 CMake 编译 libpng相关推荐

  1. NDK开发之CMake编译构建原生库

    参考地址:https://blog.csdn.net/liu3364575/article/details/80091506                 https://blog.csdn.net ...

  2. AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别

    自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle ...

  3. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  4. Android NDK开发之旅31 FFmpeg音频解码

    ###前言 #####基于Android NDK开发之旅30--FFmpeg视频播放这篇文章,我们已经学会视频解码基本过程.这篇文章就对音频解码进行分析. #####音频解码和视频解码的套路基本是一样 ...

  5. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  6. Android NDK开发之旅29 云服务器Ubuntu下搭建NDK环境,并编译FFmpeg

    ###前言 因为在Linux环境下编译FFmpeg生成库和头文件下比较方便,所以接下来主要操作在Linux环境下进行.但是对于Android NDK 开发新手来说,自己电脑配置Ubuntu Linux ...

  7. Android NDK开发之旅1 NDK介绍

    ###一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Ja ...

  8. android 字符串替换_Android开发之旅:android架构

    第一次观看我文章的朋友,可以关注.点赞.转发一下,每天分享各种干货技术和程序猿趣事 目录 1.架构图直观 2.架构详解 2.1.Linux Kernel 2.1.Android Runtime 2.3 ...

  9. NDK 开发之 ndk-build 的使用

    1 概念 ndk-build 本质上是一个脚本,它的位置就在 NDK 目录的最上层,即在< NDK >/ndk-build 路径下.运行 ndk-build 脚本相当于运行以下命令: $G ...

  10. SkeyeWebPlayer.js H5播放器开发之webpack编译flv.js实现基础播放器功能(二)

    SkeyeWebPlayer.js H5播放器是由成都视开信息科技开发和维护的一个完善的RTSP.FLV.HLS等多种流媒体协议播放,视频编码支持H.264,H.265,音频支持AAC,支持TCP/U ...

最新文章

  1. 五种JSP页面跳转方法详解
  2. Maven build中隐藏的SAP UI5 JavaScript merge任务
  3. jquery --- 收缩兄弟元素
  4. plex 乱码_Plex Media Center现在支持播客
  5. hdu 6194 后缀数组
  6. 前端学习(1432):模板引擎概述
  7. wechat.php+获取昵称,微信后台代码,获取用户昵称
  8. 循环控制语句转换为汇编
  9. vue el-date-picker 直接赋值不生效、数据绑定无效
  10. Java笔记:final修饰符
  11. ASP.NET MVC学习之模型绑定(1)
  12. cmd命令打开文本文档_Windows常用CMD网络命令
  13. 外卖红包小程序0基础搭建附教程+源码
  14. 第四单元 用python学习微积分(二十八)参数方程、弧长和表面积
  15. C语言数据类型谜题总结
  16. NDK篇 - JNI NDK 初探
  17. 如何更改虚拟光驱与物理光驱的盘符
  18. 【BZOJ 2243】染色
  19. Smoke testing,Sanity testing and Regression testing
  20. 【Unity】动作游戏开发实战详细分析-07-连续技与组合技功能设计

热门文章

  1. Android 配置 junit 单元测试
  2. 对于“ …不需要安装.NET Framework 4.0 ” 以及 “已在此计算机上安装相同或更高版本的 .NET Framework 4 ” 等问题 的解决办法
  3. Structs个人适用知识整理
  4. matlab sbus,WIRIS Pro Sc科研级机载双摄热红外成像仪
  5. 计算机图形学——计算机图形系统及硬件基础
  6. 老毛子Padavan网段LAN修改
  7. 想创业做社交产品?不妨先看看这篇文章
  8. MODIS数据火点提取方法
  9. x10I pC套件 官方网站下载
  10. 用循环队列模拟滑动窗口动态求最值及峰峰值