作者最近的公司项目要做实现rar解压的功能,在网上找了很久貌似关于rar解压的资料很少,不过有很多人推荐一个名叫“Unrar4iOS”的第三方开源框架,于是下载并尝试使用发现该开源框架并在使用过程中发现了一些存在的问题,特在此做下总结让后来人少走些弯路。

1.不支持armv7s;
2.编译好的framework中将Unrar4iOS.h和Unrar4iOS.mm编译在内有些方法并未实现,比如-(BOOL) unrarFileTo:(NSString*) path overWrite:(BOOL) overwrite;该方法的实现居然是空的也就是什么都没做(原作者最终虽然更新了两个文件但是并未重新编译framework);
3.对于第二个问题可能有人会说把Unrar4iOS.h和Unrar4iOS.mm这两个文件重新拉近项目中不就可以了吗?答案是“如果你的项目中other link flags没有设置为-ObjC是可以这么做的,否则的话会报一些标识符重复的错误”。
 
针对以上各种问题我本来想用最新源码重新编译一个framework以支持armv7s,但是把源码拖进其它工程报出各种编译错误,由于时间问题最终还是放弃了,如果有哪位好心人将最新的远吗编译成功了一个framework的话欢迎给我留言或者直接拿出来开源(广大码农将不胜感激)。
 
那么现在就来说说我是如何做的吧
其实我也是采用了上面说的第三个问题中提到的方法,我们的主工程other link flags设置了-ObjC这是一个摆在眼前的事实,我不能为了集成这一个framework而去修改主工程的配置(修改的话涉及面太多),那么只能从重复标示符下手了,既然重复了我把你修改掉不就行了嘛(退一步海阔天空),不过像我这么做的话第一个问题是不能解决了只能忍痛舍弃armv7s,语言再多总是显得太苍白,下面我会教大家一步一步的将该framework集成进你的工程确保不报错。
 
第一步:下载源码。链接:https://github.com/ararog/Unrar4iOS
第二步:将解压后的Unrar4iOS目录下的RARExtractException和Unrar4iOS的.h.m文件、Unrar4iOSExample->Frameworks->Unrar4iOS.framework分别拖进你的工程并勾选copy,如下图所示:
 
这时如果你的工程开启了ARC的话可能会报一下错误,将autorelease删除掉即可。

 
再次运行还是会报错
因为raros.hpp和dll.hpp的头文件被包含在framework内,所以我们要采用尖括号“<>”的方式引入这两个头文件,修改后如下:
 
再次运行,又会发现一些ARC的问题,将release等删掉即可
 
至此你的工程应该能在模拟器上编译成功了,换下真机编译试试,是的会报之前说的那个armv7s的错误
 
修改方法:将第一个红框内的YES改为NO,删除第二个红框内的arm64和armv7s,只保留armv7.
 
还有一件事别忘了添加libz.dylib
现在你可以查看一下你的工程配置,如果下图所示的other link flags没有设置-ObjC标记,那么到现在你已经可以成功的在模拟器和真机上使用Unrar4iOS.framework了,如果你和我一样设置了-ObjC标记的话请继续往下看
 
如果设置了-ObjC的话你应该会看到以下错误提示标识符重复,原因是我们拖进来的Unrar4iOS.mm的实现文件和framework中的文件重复了
具体解决办法是先将Unrar4iOS和Unrar4iOS.mm这两个文件从工程中删除掉,待修改完成后再重新添加进来,我的做法是将这两个文件重新命名为“KWUnrar4iOS.h和KWUnrar4iOS.mm”并将KWUnrar4iOS.mm中两个“CallbackProc”修改为“CallbackProcc”,完成这一步后就可以把这两个文件重新添加进工程,最后修改后的工程结构如下:
 
真机编译ok,到此终于完成了所有的步骤,下面放出我自己的demo链接
https://github.com/zzltjnh/Unrar4iOSDemo
 
------------------------------------------华丽丽的分割线---------------------------------------------
*昨天好多人反映不支持arm64的应用无法提交appStore,因此今天又将这个东东搞了一下。
未完待续。。。
 
 
 

iOS关于rar解压第三方库Unrar4iOS使用总结的更多相关文章

  1. ubuntu 下rar解压工具安装方法

    1.压缩功能安装 sudo apt-get install rar卸载 sudo apt-get remove rar2.解压功能安装 sudo apt-get install unrar卸载 sud ...

  2. centos系统安装rar解压工具unar

    centOS上不支持rar解压,需要额外安装软件,收费版是unrar,免费版是unar unar在centOS上安装需要源码编译,下面是安装方法: 1.安装依赖 yum install gnustep ...

  3. rar 解压

    三.rar命令语法 将/etc 目录压缩为etc.rar 命令为: rar a etc.rar /etc 1 将etc.rar 解压 命令为: rar x etc.rar unrar -e etc.t ...

  4. linux 下安装rar解压

    在liunx下原本是不支持rar文件的,需要安装liunx下的winrar版本,操作如下 wget http://www.rarsoft.com/rar/rarlinux-4.0.1.tar.gz t ...

  5. Linux tar.gz 、zip、rar 解压 压缩命令

    tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个 ...

  6. linux rar 解压忽略带密码压缩包

    #解压忽略密码 rar x -p- file.rar #解压忽略子目录 rar x -ep file.rar

  7. 在centos下安装rar解压.rar压缩包

    CentOS本身不自带rar环境,因此对于rar文件无法直接解压,需要先配置rar环境. 首先需要确定自己的系统是64位还是32位的,通过这个命令: [root@localhost]# uname - ...

  8. ios paper for facebook 使用第三方库

    facebook paper使用的第三方库 Facebook Paper使用的第三方库 第三方库名 简介 链接 ACE code editor https://github.com/ajaxorg/a ...

  9. iOS真机调试引入第三方库(如友盟等)编译时候,出现错误提示

    用Xcode 7 beta 3在真机(iOS 8.3)上运行一下工程,结果发现工程编译不过.看了下问题,报的是以下错误: MARK:解决方法:在building Setting 中设置bitCode ...

随机推荐

  1. Codeforces Round #257(Div.2) D Jzzhu and Cities --SPFA

    题意:n个城市,中间有m条道路(双向),再给出k条铁路,铁路直接从点1到点v,现在要拆掉一些铁路,在保证不影响每个点的最短距离(距离1)不变的情况下,问最多能删除多少条铁路 分析:先求一次最短路,铁路 ...

  2. Unity抗锯齿

    Unity抗锯齿设置是针对模型,对模型的阴影的锯齿设置无效,不知道我这样的理解是否正确. 遇到的问题 而我是要对灯光照射在模型上产生的阴影进行抗锯齿,暂时还未研究出解决方案,希望知道的朋友告知一声. ...

  3. NSPredicate简单应用

    1.筛选纯字符串数组的内容 NSArray *array = [[NSArray alloc]initWithObjects:@"beijing",@"shanghai& ...

  4. 【转】【C#】判断两个文件是否相同

    使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码,然后比较两个哈希码是否相同 该哈希算法为一个文件生成一个小的二进制“指纹”,从统计学 ...

  5. JqueryMobile入门基础附源码下载

    最近要做一个手机版的网站,所以就了解了一点JqueryMObile,下面是我整理的笔记,现在分享给大家,希望朋友们喜欢,先给个首页看看吧!!! 一.JqueryMobile基本页面结构 <!DO ...

  6. IC系统组成概论

    IC系统是什么? 对算法工程师来说,IC系统是完成特定功能的硬件.对架构设计师来说,IC系统包括控制,运算,存储部分.电路设计工程师来说,IC系统是加法器,乘法器,与非门,运算放大器,开关电容等的搭配 ...

  7. struts2中简单的文件上传

    2016-08-31 一.       文件上传 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multip ...

  8. [tools] Sublime text 3 神器

    同事给了一个Sublime text 3 增强优化版.<---神器   问题:中文文件名乱码:[因为我电脑调整了dpi] 解决: 在sublime text 3中,Preference, Set ...

  9. mysql实体关系

    数据库连接细节架构: 数据库编码: 关系数据库玩的是生活中物与物之间的关系.那么数据库要保存数据,事先就要描述情况数据如何保存.事务之间的关系如何处理等等. 现实生活中物称为实体,如商品,学生,文章, ...

  10. C++ map的使用

    C++ map的基本操作和使用 来源:(http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html) - C++ map的基本操作和使用_Live_新浪博 ...