【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





目录
相关文章
|
9月前
|
测试技术 Linux
VPS一键测试脚本,无痕体验+自动导出,服务器测试更轻松
NodeQuality 是一款整合 Yabs、IPQuality、NetQuality 等主流 VPS 测试脚本的全能工具,支持一键测试硬件性能、IP属性、网络质量,并新增分享与导出功能。其“无痕测试”设计不安装依赖、不留残留,兼容性强;测试结果自动排版、截图并生成分享链接,极大提升效率。适合需要全面、快速、干净测试 VPS 的用户,是运维和测评的高效利器。
716 3
|
9月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
376 4
|
10月前
|
XML Ubuntu Java
如何在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
进入包含 build.xml 的目录并执行:
502 13
|
9月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
383 0
|
11月前
|
Web App开发 JavaScript 测试技术
Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本
本文带你1小时快速入门Playwright,完成环境搭建并编写首个测试脚本。Playwright是微软推出的现代化Web自动化测试工具,支持Chromium、Firefox和WebKit三大浏览器引擎,具备跨平台、多语言(Python/JS/Java/C#)特性。其核心优势包括:智能自动等待机制减少失败率、内置录制工具实时生成脚本、多语言灵活选择,以及真移动端设备模拟能力,显著提升测试效率和可靠性。
|
测试技术 数据库 Python
解释测试中setup和teardown函数的应用。
总结起来,`setup`和 `teardown`函数就像扔宴会的主人,他们保障了宴会的流畅进行。他们是准备环境和清理现场的重要工作人员,他们的工作直接影响着我们的测试效率和质量。我们可以把 `setup`和 `teardown`想象成隐藏在幕后,默默为我们服务的工作者,他们做着我们需要但是往往忽视的工作。所以,下次当你写测试的时候,别忘了给你的 `setup`和 `teardown`留出足够的位置,因为他们的作用可能是你成功的保证。
300 14
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
692 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2136 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
458 35
|
前端开发 JavaScript Java
通过ChatGPT生成测试用例和测试脚本(2)
通过ChatGPT生成测试用例和测试脚本
511 21