【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 命令 , 进行交叉编译 ;


目录
相关文章
|
19天前
|
缓存 监控 Java
构建高效Android应用:从优化用户体验到提升性能
在竞争激烈的移动应用市场中,为用户提供流畅和高效的体验是至关重要的。本文深入探讨了如何通过多种技术手段来优化Android应用的性能,包括UI响应性、内存管理和多线程处理。同时,我们还将讨论如何利用最新的Android框架和工具来诊断和解决性能瓶颈。通过实例分析和最佳实践,读者将能够理解并实施必要的优化策略,以确保他们的应用在保持响应迅速的同时,还能够有效地利用系统资源。
|
25天前
|
调度 数据库 Android开发
构建高效Android应用:Kotlin协程的实践与优化
在Android开发领域,Kotlin以其简洁的语法和平台友好性成为了开发的首选语言。其中,Kotlin协程作为处理异步任务的强大工具,它通过提供轻量级的线程管理机制,使得开发者能够在不阻塞主线程的情况下执行后台任务,从而提升应用性能和用户体验。本文将深入探讨Kotlin协程的核心概念,并通过实例演示如何在实际的Android应用中有效地使用协程进行网络请求、数据库操作以及UI的流畅更新。同时,我们还将讨论协程的调试技巧和常见问题的解决方法,以帮助开发者避免常见的陷阱,构建更加健壮和高效的Android应用。
32 4
|
17天前
|
Java Android开发 开发者
构建高效Android应用:Kotlin协程的实践与优化
在响应式编程范式日益盛行的今天,Kotlin协程作为一种轻量级的线程管理解决方案,为Android开发带来了性能和效率的双重提升。本文旨在探讨Kotlin协程的核心概念、实践方法及其在Android应用中的优化策略,帮助开发者构建更加流畅和高效的应用程序。通过深入分析协程的原理与应用场景,结合实际案例,本文将指导读者如何优雅地解决异步任务处理,避免阻塞UI线程,从而优化用户体验。
|
11天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。
|
25天前
|
缓存 前端开发 Android开发
构建高效Android应用:从设计原则到性能优化
随着移动设备成为我们日常生活不可或缺的一部分,开发一个流畅且响应迅速的Android应用变得至关重要。本文将探讨如何通过遵循Android设计原则和实施细致的性能优化策略来构建高效的Android应用程序。我们将深入分析应用架构的选择、内存管理的要点以及UI设计的优化,旨在为开发人员提供一套实用的指导方针,帮助他们提升应用的整体性能和用户体验。
|
28天前
|
运维 监控 Java
应用研发平台EMAS产品常见问题之安卓构建版本失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
28天前
|
监控 Java Android开发
构建高效Android应用:从内存管理到性能优化
【2月更文挑战第30天】 在移动开发领域,打造一个流畅且响应迅速的Android应用是每个开发者追求的目标。本文将深入探讨如何通过有效的内存管理和细致的性能调优来提升应用效率。我们将从分析内存泄露的根本原因出发,讨论垃圾回收机制,并探索多种内存优化策略。接着,文中将介绍多线程编程的最佳实践和UI渲染的关键技巧。最后,我们将通过一系列实用的性能测试工具和方法,帮助开发者监控、定位并解决性能瓶颈。这些技术的综合运用,将指导读者构建出更快速、更稳定、用户体验更佳的Android应用。
|
8月前
|
搜索推荐 Java Linux
记一次编译Android源码
记一次编译Android源码