【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )(一)

简介: 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )(一)

一、交叉编译 Shell 脚本参考


交叉编译脚本参考 : 之前已经做过两个函数库的交叉编译脚本 , FFMPEG 和 x264 开源库 , 而且都是使用 configure 生成 Makefile 文件 ;



① FFMPEG 函数库的交叉编译脚本 : 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 ) 十一、交叉编译配置 Shell 脚本 ( 重点 )


② x264 函数库的交叉编译脚本 : 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 ) 二、 x264 交叉编译


参考上述交叉编译脚本 , 编写 libjpeg-turbo 函数库 的交叉编译脚本 ; ( 上述编译脚本仅做参考 )



发现 libjpeg-turbo 源码路径下的 BUILDING.md 文件中有预置好的交叉编译脚本示例 ;






二、NDK r16b 版本配置


NDK 配置 : 交叉编译 libjpeg-turbo 只能使用 NDK r16b 或者之前的版本 , 这里使用 r16b 版本 ;



① NDK 官方主页 : 点击该链接进入界面


② NDK 下载地址 : 点击该链接进入界面


③ 停止维护版本下载地址 : 旧版本 NDK 下载地址 , 这里在该地址中下载 Android NDK,修订版 16b(2017 年 12 月)版本 , 编译要求使用 NDK r16b 或者之前的版本 ;


④ 直接下载地址 : android-ndk-r16b-linux-x86_64.zip , 这是 Linux 64 位 NDK 下载地址 ;






三、libjpeg-turbo 交叉编译 Shell 脚本


1. 需要配置的选项 :



① NDK 路径 : /root/NDK/android-ndk-r16b , 将 NDK 下载后 , 解压的路径 ;


② 交叉编译工具链 : gcc , 官方让在 gcc , g++ , clang 中三选一 ; 这是 C 语言项目 , 选择 gcc 即可 ;


③ 最低 Android 版本 : 16 即可 , 基本没有低于 16 版本的手机 ;


④ 编译结果输出目录 : /root/picture_compress/libjpeg-turbo-2.0.5/android


⑤ 源文件目录 : /root/picture_compress/libjpeg-turbo-2.0.5




2. 替换上述配置 , 生成下面的配置文件 :


# 设置 NDK 的目录 , 这里使用 ndk-r16b 版本
NDK_PATH=/root/NDK/android-ndk-r16b
# 设置 NDK 的交叉编译工具链 , 这里特别注明 , 只能使用 NDK r16b 或者之前的版本 
TOOLCHAIN=gcc
# Android 的最低兼容版本 
ANDROID_VERSION=16
# 进入最终编译生成编译结果目录
cd /root/picture_compress/libjpeg-turbo-2.0.5/android
# 设置 源码目录 最后的 /root/picture_compress/libjpeg-turbo-2.0.5 就是源文件所在目录
cmake -G"Unix Makefiles" \
  -DANDROID_ABI=armeabi-v7a \
  -DANDROID_ARM_MODE=arm \
  -DANDROID_PLATFORM=android-${ANDROID_VERSION} \
  -DANDROID_TOOLCHAIN=${TOOLCHAIN} \
  -DCMAKE_ASM_FLAGS="--target=arm-linux-androideabi${ANDROID_VERSION}" \
  -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \
  /root/picture_compress/libjpeg-turbo-2.0.5
make





四、执行 libjpeg-turbo 交叉编译 Shell 脚本 开始编译


1. 创建编译脚本 : 在 /root/picture_compress/libjpeg-turbo-2.0.5 目录下创建 build.sh , 将上述 交叉编译 Shell 脚本信息拷贝到该文件中 ;



2. 修改权限 , 然后执行编译脚本 :


$ chmod -R 777 build.sh
$ ./build.sh




3. 生成的静态库与头文件查看 : 服了 , 编译后的结果都散的 , 不像 FFMPEG , x264 等 , 编译后 , 头文件都在 include 中 , 静态库 动态库都整整齐齐的放在对应文件中 ;



① 静态库 : 静态库在 /root/picture_compress/libjpeg-turbo-2.0.5/android 目录中生成 ;


② 头文件 : 需要自己去源码中找头文件 , 有些在 /root/picture_compress/libjpeg-turbo-2.0.5/android 目录中 , 有些在 /root/picture_compress/libjpeg-turbo-2.0.5/ 目录中 , 下图中画红框的拷贝出来 ;


③ 项目里扒 : 嫌麻烦的直接从 GitHub 中的 PictureCompress 项目 里面扒也可以 ;


image.png






五、拷贝函数库头文件到 Android Studio


1. 拷贝静态库 : 将上述函数库 libturbojpeg.a 拷贝到 src/main/cpp/libs/armeabi-v7a 目录中 ;



2. 拷贝头文件 : 将上述 jconfig.h , jerror.h , jmorecfg.h , jpeglib.h , turbojpeg.h 头文件拷贝到 src/main/cpp/include 目录中 ;



3. 拷贝结果展示 :


image.png





目录
相关文章
|
2月前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
62 1
|
2月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
13天前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
1月前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
1月前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
72 6
|
2月前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
97 16
|
2月前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
2月前
|
敏捷开发 监控 测试技术
探索自动化测试框架的构建与优化####
在软件开发周期中,自动化测试扮演着至关重要的角色。本文旨在深入探讨如何构建高效的自动化测试框架,并分享一系列实用策略以提升测试效率和质量。我们将从框架选型、结构设计、工具集成、持续集成/持续部署(CI/CD)、以及最佳实践等多个维度进行阐述,为软件测试人员提供一套系统化的实施指南。 ####
|
2月前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
2月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
179 1

热门文章

最新文章