iOS 深度獲取.ipa圖片資源文件

作為一個移動端開發(fā)人員,經(jīng)常要扒一扒其他項目的圖片資源,可以用來直接使用或者做預(yù)開發(fā)時的占位圖,也可以通過分析一個ipa中的圖片資源來推導(dǎo)某一個功能的實現(xiàn)原理,簡而言之,扒圖也是開發(fā)人員應(yīng)該具有的一個技能。考慮到年紀(jì)到了,忘東西越來越快,明年后年可能忘得更快,記一帖當(dāng)做筆記。

1.獲取目標(biāo)ipa

比如你要看一下QQ里都用到了哪些圖片,首先要做得就是弄一個QQ的ipa,獲取ipa方式多種多樣,如iTunes獲取、iTools獲取等等,這里選用iTunes來獲取QQ6.6.2.ipa。

0F49305C-B184-4C81-906A-0353475B8D50.png

搜索你想要查找的項目名稱,然后點擊獲取,下載完成就能在資料庫里看到了。

FDDDCDF3-C6CC-4484-8ED4-69FF84A12C7F.png
2.拆解目標(biāo)ipa

QQ6.6.2.ipa拓展名改為.zip后解壓

DD30A4FC-A9F2-420A-97AD-AC13EDBD5A65.png

此處插播一條題外消息,在包內(nèi)容中也可以看到該工程的plist文件,感興趣的同學(xué)也可以在這用拿到配置文件原型來啃一啃。

圖片.png

接下來將剛才查看包內(nèi)容后的文件夾單獨拷貝出來,用一個單獨文件夾接收,這是為了避免每次查看都要經(jīng)過顯示包內(nèi)容操作。

圖片.png

ipa的資源已經(jīng)拆解完畢,可以簡單預(yù)覽一下。

圖片.png
圖片.png
圖片.png
圖片.png
圖片.png
圖片.png
圖片.png

還有其他如nib文件、使用SDK相關(guān)信息、工程熱更新代碼配置等等都可以從這個包的內(nèi)容里看到蛛絲馬跡甚至部分源碼。

3.獲得Images.xcassets中的圖片

因為QQ的主題和自定義裝扮配置較多,本地資源圖片幾乎全部暴露在bundle路徑,所以經(jīng)過上面幾步的拆解,大部分圖片資源都已經(jīng)可以獲得,但是現(xiàn)在很多本地資源的圖片我們都放在了Image.xcassets

圖片.png

這個文件夾里的圖片,在打包成ipa的時候Xcode會單獨給它設(shè)置路徑,形成一個新的文件顯示在包內(nèi)容中,這里以斗魚的ipa來做示例。

圖片.png

圖片.png

到了這一步,最關(guān)鍵的Assets.car文件已經(jīng)浮出水面了。

4.利用cartool來解析Assets.car
  • clone 或者 download cartool
  • 按照自己對于source資源的需求修改cartool內(nèi)代碼
圖片.png

此處僅演示獲取資源,所以將這部分代碼修改如下:

NSString *idiomSuffixForCoreThemeIdiom(kCoreThemeIdiom idiom)
{
    return @"";
}
  • 將上一步獲得的Assets.car拷貝到一個方便找到的位置,并新建一個文件夾來接收Assets.car中的圖片。
圖片.png
  • 給cartool修改Scheme
圖片.png

將上一部準(zhǔn)備好的Assets.car和接收文件拖入到如下位置

圖片.png

MARK:此處的順序是固定的,不要弄反。

  • Run **cartool **
    此時log中有一大堆資源的名字陸續(xù)出來,這就代表本次解析圖片已經(jīng)成功。


    圖片.png

    此時去查看接收文件的文件夾。

圖片.png

所有Accests.car中的圖片已經(jīng)拿到。

圖片.png

這波ipa圖片資源文件獲取步驟已經(jīng)差不多講完,看起來很繁瑣,其實很簡單,就是一個熟練度的事情,忘記了的時候隨時來瞅一眼就好,這也是筆記最合理的存在原因了,謝謝觀眾老爺?shù)馁p光。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容