文章目录
一、下载 p7zip 源码
二、交叉编译 Android 中使用 7z 可执行程序
三、参考资料
一、下载 p7zip 源码
下载 7zip 源码 , 下载页面 https://sourceforge.net/projects/p7zip/files/ , 点击页面中的 绿色下载按钮 ;
也可以点击下面的链接直接下载
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 文件 , 解压该文件 ;
进入源码目录后发现 , p7zip 是使用 C/C++ 编写 ;
二、交叉编译 Android 中使用 7z 可执行程序
在 Android 中使用命令行进行压缩与解压缩操作 ;
可以使用命令行的场景 :
压缩解压缩过程可以使用命令行 , 全程不需要执行过程中的数据 , 只要得到结果 , 这种情况下就可以使用 7z 命令实现该效果 ;
如果要边压缩 , 边分析解压出来的文件 , 如病毒扫描 , 那就必须实时监控解压的数据 , 需要移植 7z 源码 , 并进行二次开发实现 ;
使用两种方式得到的压缩解压缩结果相同 , 如果使用代码 , 可以在压缩解压缩过程中进行更多干预操作 ;
Android 中调用命令行方法 :
Runtime.getRuntime().exec("ls -la");
首先要交叉编译出 Android 平台上的可执行文件 , 必须是 ARM 架构的可执行程序 ;
p7zip 源码中给出 Android 平台使用的源码 , 在 p7zip_16.02\CPP\ANDROID 目录下 ;
其中 ,
7z 可以使用插件 , 支持的压缩格式多 , 可以支持 tar , zip 等压缩格式 ;
7zr 只支持 7z 格式的压缩解压缩 ;
这里推荐使用 7zr , 只使用压缩比率最高的格式 7z 格式即可 , 多余的功能基本不需要 ;
进入 7zr 目录下 , 有一个 jni 目录 和 makefile 文件 ,
jni 目录中是 Android.mk 和 Application.mk 两个构建脚本 , 可以使用 ndk-build 进行编译 ;
打开该 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 命令 , 进行交叉编译 ;