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


作者最近的公司項目要做實現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,因此今天又將這個東東搞了一下。
未完待續。。。
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM