【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )(一)

简介: 【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )(一)

文章目录

一、下载 p7zip 源码

二、交叉编译 Android 中使用 7z 可执行程序

三、参考资料





一、下载 p7zip 源码


下载 7zip 源码 , 下载页面 https://sourceforge.net/projects/p7zip/files/ , 点击页面中的 绿色下载按钮 ;


image.png


也可以点击下面的链接直接下载


https://jaist.dl.sourceforge.net/project/p7zip/p7zip/16.02/p7zip_16.02_src_all.tar.bz2


https://nchc.dl.sourceforge.net/project/p7zip/p7zip/16.02/p7zip_16.02_src_all.tar.bz2


下载的版本是 p7zip 版本 , 该版本可以在 Linux 中运行 , 交叉编译后在 Android 中运行 ;


下载后的 p7zip_16.02_src_all.tar.bz2 文件 , 解压该文件 ;



image.png

进入源码目录后发现 , p7zip 是使用 C/C++ 编写 ;

image.png







二、交叉编译 Android 中使用 7z 可执行程序


在 Android 中使用命令行进行压缩与解压缩操作 ;



可以使用命令行的场景 :


压缩解压缩过程可以使用命令行 , 全程不需要执行过程中的数据 , 只要得到结果 , 这种情况下就可以使用 7z 命令实现该效果 ;

如果要边压缩 , 边分析解压出来的文件 , 如病毒扫描 , 那就必须实时监控解压的数据 , 需要移植 7z 源码 , 并进行二次开发实现 ;

使用两种方式得到的压缩解压缩结果相同 , 如果使用代码 , 可以在压缩解压缩过程中进行更多干预操作 ;



Android 中调用命令行方法 :


Runtime.getRuntime().exec("ls -la");


首先要交叉编译出 Android 平台上的可执行文件 , 必须是 ARM 架构的可执行程序 ;


p7zip 源码中给出 Android 平台使用的源码 , 在 p7zip_16.02\CPP\ANDROID 目录下 ;


image.png


其中 ,


7z 可以使用插件 , 支持的压缩格式多 , 可以支持 tar , zip 等压缩格式 ;


7zr 只支持 7z 格式的压缩解压缩 ;


这里推荐使用 7zr , 只使用压缩比率最高的格式 7z 格式即可 , 多余的功能基本不需要 ;



进入 7zr 目录下 , 有一个 jni 目录 和 makefile 文件 ,


image.png


jni 目录中是 Android.mk 和 Application.mk 两个构建脚本 , 可以使用 ndk-build 进行编译 ;image.png




打开该 makefile 文件 , 该文件最后几行代码给出了相关操作方法 ;


# FIXME
debug:
  cd jni ; ndk-build NDK_DEBUG=1
  adb push ./libs/armeabi/7zr /data/app/
  adb push ./libs/armeabi/gdbserver /data/app/
  adb shell chmod 777 /data/app/7zr
  adb shell chmod 777 /data/app/gdbserver
  adb forward tcp:1234: tcp:1234
  adb shell  /data/app/gdbserver :1234 /data/app/7zr



进入 D:\develop\7zip\p7zip_16.02\CPP\ANDROID\7zr\jni 目录 , 执行 ndk-build 命令 , 进行交叉编译 ;


目录
相关文章
|
2月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
117 1
|
3月前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
2月前
|
Java 程序员 开发工具
Android|修复阿里云播放器下载不回调的问题
虽然 GC 带来了很多便利,但在实际编码时,我们也需要注意对象的生命周期管理,该存活的存活,该释放的释放,避免因为 GC 导致的问题。
36 2
|
2月前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin多线程优化策略
【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
51 4
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
96 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
25天前
|
安全 Android开发 iOS开发
深入探索iOS与Android系统的差异性及优化策略
在当今数字化时代,移动操作系统的竞争尤为激烈,其中iOS和Android作为市场上的两大巨头,各自拥有庞大的用户基础和独特的技术特点。本文旨在通过对比分析iOS与Android的核心差异,探讨各自的优势与局限,并提出针对性的优化策略,以期为用户提供更优质的使用体验和为开发者提供有价值的参考。
|
4月前
|
API 开发工具 Android开发
Android源码下载
Android源码下载
502 0
|
存储 Ubuntu Linux
linphone android sdk 源码下载编译
linphone android sdk 源码下载编译
1164 0
linphone android sdk 源码下载编译
|
Ubuntu Java Linux
Android13源码下载及全编译流程
Android13源码下载及全编译流程
Android13源码下载及全编译流程