android libpng16,Android NDK 开发之 CMake 编译 libpng
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相关推荐
- NDK开发之CMake编译构建原生库
参考地址:https://blog.csdn.net/liu3364575/article/details/80091506 https://blog.csdn.net ...
- AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别
自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle ...
- Android NDK开发之 NEON基础介绍
原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...
- Android NDK开发之旅31 FFmpeg音频解码
###前言 #####基于Android NDK开发之旅30--FFmpeg视频播放这篇文章,我们已经学会视频解码基本过程.这篇文章就对音频解码进行分析. #####音频解码和视频解码的套路基本是一样 ...
- 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )
文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...
- Android NDK开发之旅29 云服务器Ubuntu下搭建NDK环境,并编译FFmpeg
###前言 因为在Linux环境下编译FFmpeg生成库和头文件下比较方便,所以接下来主要操作在Linux环境下进行.但是对于Android NDK 开发新手来说,自己电脑配置Ubuntu Linux ...
- Android NDK开发之旅1 NDK介绍
###一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Ja ...
- android 字符串替换_Android开发之旅:android架构
第一次观看我文章的朋友,可以关注.点赞.转发一下,每天分享各种干货技术和程序猿趣事 目录 1.架构图直观 2.架构详解 2.1.Linux Kernel 2.1.Android Runtime 2.3 ...
- NDK 开发之 ndk-build 的使用
1 概念 ndk-build 本质上是一个脚本,它的位置就在 NDK 目录的最上层,即在< NDK >/ndk-build 路径下.运行 ndk-build 脚本相当于运行以下命令: $G ...
- SkeyeWebPlayer.js H5播放器开发之webpack编译flv.js实现基础播放器功能(二)
SkeyeWebPlayer.js H5播放器是由成都视开信息科技开发和维护的一个完善的RTSP.FLV.HLS等多种流媒体协议播放,视频编码支持H.264,H.265,音频支持AAC,支持TCP/U ...
最新文章
- 五种JSP页面跳转方法详解
- Maven build中隐藏的SAP UI5 JavaScript merge任务
- jquery --- 收缩兄弟元素
- plex 乱码_Plex Media Center现在支持播客
- hdu 6194 后缀数组
- 前端学习(1432):模板引擎概述
- wechat.php+获取昵称,微信后台代码,获取用户昵称
- 循环控制语句转换为汇编
- vue el-date-picker 直接赋值不生效、数据绑定无效
- Java笔记:final修饰符
- ASP.NET MVC学习之模型绑定(1)
- cmd命令打开文本文档_Windows常用CMD网络命令
- 外卖红包小程序0基础搭建附教程+源码
- 第四单元 用python学习微积分(二十八)参数方程、弧长和表面积
- C语言数据类型谜题总结
- NDK篇 - JNI NDK 初探
- 如何更改虚拟光驱与物理光驱的盘符
- 【BZOJ 2243】染色
- Smoke testing,Sanity testing and Regression testing
- 【Unity】动作游戏开发实战详细分析-07-连续技与组合技功能设计
热门文章
- Android 配置 junit 单元测试
- 对于“ …不需要安装.NET Framework 4.0 ” 以及 “已在此计算机上安装相同或更高版本的 .NET Framework 4 ” 等问题 的解决办法
- Structs个人适用知识整理
- matlab sbus,WIRIS Pro Sc科研级机载双摄热红外成像仪
- 计算机图形学——计算机图形系统及硬件基础
- 老毛子Padavan网段LAN修改
- 想创业做社交产品?不妨先看看这篇文章
- MODIS数据火点提取方法
- x10I pC套件 官方网站下载
- 用循环队列模拟滑动窗口动态求最值及峰峰值