android 7zip,android使用NDK技术实现7Zip压缩

本文介绍了如何在Android上使用NDK技术编译7Zip源代码为动态库,详细步骤包括下载源码、修改Android.mk文件、编译生成so库、配置app的build.gradle、编写CMakeLists文件、创建JNI接口并测试。通过这种方式,可以在Android应用中调用7Zip进行文件压缩和解压操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载7zip源代码

编译Android可执行文件

解压源代码,进入 目录/CPP/ANDROID/7zr/jni

默认编译出armeabi架构,可以根据自己的需要在APPlication.mk中增加/修改,如编译armeabi-v7a和x86:

APP_ABI:=armeabi 改为 APP_ABI:armeabi-v7a x86

cmd命令行执行命令ndk-build(笔者用ndk21,ndk16都会报错,最后用ndk12可以正常编译),编译文件输出在CPP/ANDROID/7zr/libs

默认编译出来的是可执行文件,要在android上使用就需要编译静态库或者动态库

修改CPP/ANDROID/7zr/jni/Android.mk 最下面的代码

# Needed since ANDROID 5, these programs run on android-16 (Android 4.1+)

#PIE是给可执行程序使用的flag(Position-Independent Executable位置无关可执行程序)

#ndk读取mk文件编译动态库也不需要指定pic

#LOCAL_CFLAGS += -fPIE

#LOCAL_LDFLAGS += -fPIE -pie

#include $(BUILD_EXECUTABLE)#可执行文件

include $(BUILD_SHARED_LIBRARY)#动态库

#include $(BUILD_STATIC_LIBRARY)#静态库

与编译可执行文件一样操作ndk-build进行编译,可在libs下生成对应的so库。

5b83ee2bdc81

1590246026696.png

在android项目中新建jniLibs文件夹,然后把生成的动态库放进来。

5b83ee2bdc81

image-20200523185115600.png

在app的build.gradle中添加以下配置

android {<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值