iOS關於rar解壓第三方庫Unrar4iOS使用總結

做者最近的公司項目要作實現rar解壓的功能,在網上找了好久貌似關於rar解壓的資料不多,不過有不少人推薦一個名叫「Unrar4iOS」的第三方開源框架,因而下載並嘗試使用發現該開源框架並在使用過程當中發現了一些存在的問題,特在此作下總結讓後來人少走些彎路。git

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,所以今天又將這個東東搞了一下。
未完待續。。。
相關文章
相關標籤/搜索