日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

關(guān)于蘋(píng)果私有API的查找和使用

 最初九月雪 2018-04-10

本文由2篇文章綜合而成,原文地址為:

http://www./iphonedev/sdk/2011/0531/2906.html

http://bbs.51cto.com/archiver/tid-846159.html


一、關(guān)于蘋(píng)果API:

1、Published API(公開(kāi)的API):又稱(chēng) Documented API(文檔中記錄的API)。是蘋(píng)果通過(guò) Cocoa Touch 向全世界第三方開(kāi)發(fā)者公開(kāi)的所有 API 。

2、UnPublished API(未公開(kāi)API):又稱(chēng) Undocumented API(文檔中未記錄的API),是指雖然放在Frameworks框架中,但是卻沒(méi)有在蘋(píng)果的官方文檔中有使用說(shuō)明、代碼介紹等記錄的API。按蘋(píng)果的說(shuō)法,未公開(kāi)的API是還不夠成熟,可能還會(huì)變動(dòng)的API,等完全成型了后會(huì)變成公開(kāi)的API,但是目前不對(duì)其提供承諾,就是系統(tǒng)版本升級(jí)后可能會(huì)失效。

3、Private API(私有API):指的是SDK下的 PrivateFrameWorks框架下的API,真實(shí)存在于 Cocoa Touch 中。私有API是蘋(píng)果明確規(guī)定不能使用的API,一旦你的作品中有私有API,在上傳AppStore的時(shí)候會(huì)100%被拒絕的。如果當(dāng)作小范圍軟件的話就可以嘗試一下,比如再Cydia上發(fā)布,91上發(fā)布,條件不會(huì)很苛刻的。


二、查找應(yīng)用中的 Private API

雖然我們能夠保證自己的APP中只使用 Cocoa Touch 公布的 API ,沒(méi)有使用私有API。但是我們?nèi)绾未_保這些第三方的代 碼報(bào)里,不存在 private API ?

蘋(píng)果提供了幾種機(jī)器識(shí)別方法,比如 string 命令,比如 otool -ov 命令,但都不太好用。江湖上有人做了一套解決方案,名叫 AppScanner ,我老人家決定強(qiáng)烈推薦一下。

  • 怎么用?很簡(jiǎn)單,你把工程編譯好,然后直接將 .app 文件夾整個(gè)拖進(jìn) AppScanner 窗口里。
  • 免費(fèi)的么?幾乎是免費(fèi)的,雖然收費(fèi)(也才 $2.99 ),但是頭 14 天免費(fèi)。
  • 是否有人維護(hù)?有,而且只要你愿意出 $2.99 支持他們維護(hù)。他們還會(huì)繼續(xù)開(kāi)發(fā)下去。

這是一個(gè)實(shí)例的截屏,頭兩項(xiàng) API 可疑度 100% ,說(shuō)明它們就是來(lái)搞破壞的 Private API。



最后插一則八卦, Facebook / Three20 如雷貫耳,想必很多開(kāi)發(fā)者都使用過(guò)。然而要命的事,在 Three20 的第一個(gè)版本中,就悄悄的藏著一條因?yàn)橹孛麑?dǎo)致的假陽(yáng)性 Private API 。雖然是假陽(yáng)性,但那次事故仍然導(dǎo)致了所有使用那個(gè)版本 Three20 的 app 被慘拒。當(dāng)然了,后來(lái)他們很快就修正了這個(gè)問(wèn)題。


三、使用私有API:

1.導(dǎo)出生成私有API的頭文件聲明
使用私有或未公開(kāi)的API,首先需要導(dǎo)出其對(duì)應(yīng)的頭文件,在頭文件里有相關(guān)函數(shù)的聲明。
工具:
class-dump
class-dump可以從編譯后的Objective-C的二進(jìn)制文件中提取對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)及函數(shù)等聲明。
使用方法:
為了能在任意目錄下使用class-dump命令,首先建議把class-dump文件拷貝到/user/local/bin/目錄下,然后就可以在任意目錄下執(zhí)行以下命令:
class-dump /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/ >UIKit.h
以上命令就可以把 iPhoneSimulator3.0.Sdk中Frameworks框架里的UIKit.Framework框架的數(shù)據(jù)結(jié)構(gòu)及函數(shù)聲明等給提取出來(lái),并且放在UIKit.h這個(gè)文件中,之后你就可以在這個(gè)頭文件中找你需要API的聲明及其使用方式。以同樣的方法,就可以挨個(gè)導(dǎo)出你需要那個(gè)框架中的API 聲明。
也可以用ericasadun寫(xiě)的DumpFrameworks.pl(文件中有部分注釋說(shuō)明)這個(gè)文件把私有框架下的API頭文件全部提取出來(lái)。使用方法也是首先把class-dump文件拷貝到/user/local/bin/目錄下,然后在任意一個(gè)目錄下執(zhí)行./DumpFrameworks.pl,然后就會(huì)在你的家目錄下產(chǎn)生一個(gè)Headers文件夾,里面羅列了私有框架下的API頭文件。
2.使用私有API
導(dǎo)出了私有API的頭文件聲明后,使用方法就比較簡(jiǎn)單了,首先在你的工程中包含進(jìn)頭文件,然后導(dǎo)入對(duì)應(yīng)的框架,之后就可以類(lèi)似提供了靜態(tài)庫(kù)的方式在我們的代碼中使用這些私有API函數(shù)。


gitHub有老外整理:https://github.com/nst/iOS-Runtime-Headers

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多