標籤:

SDK和API的區別?

IT develop


SDK就是Kit,工具箱嘛,IOS平台上就是XCode,一系列的工具組合在一起,比如你在編輯器里敲代碼的時候它會自動補全代碼,自動錯誤檢查,你點一下Run,它會調用編譯器來自動編譯,編譯完它會調用iPhone的模擬器來運行,這就是SDK,提供整套的開發工具供開發者使用。

OpenAPI就是網站提供的介面,比如你想開發一個圍脖的手機客戶端,你從哪裡讀取數據寫入數據呢?總不能從Web版里調用吧?那裡是一堆一堆的html代碼啊,所以OpenAPI就是網站提供的介面,供開發者接入用的。

==================================================

輸入簡體字,點下面繁體字API ? SDK? 傻傻分清楚

SDK (Software Development Kit)翻譯成中文就是"軟體開發工具組"

是用來幫一個 產品 或 平台 開發應用程式的工具組,由產品的廠商提供給開發者使用的。

通常是 某一家廠商 針對某一 平台 或 系統 或 硬體 所發佈出來用以開發應用程式的工具組,

在這個工具包裡面,可能包含了各式各樣的開發工具,模擬器等。

例如:給 Android平台 使用的 Android SDK 就是用來開發 Android系統上面的應用程式。

API (Application Programming Interface)

翻譯成中文就是"應用程式介面",其實這樣翻譯不好,應該說是"程式溝通介面"。

翻譯為介面,顧名思義就要溝通兩個不同的東西用的,通常由一組函式庫所組成。

在一個 同一個平台 下的 兩個不同東西(程式 or 系統),為了能取用對方的功能等等,

所以一個 X程式 寫了一組函式,讓 同一平台的其他程式 取用 X程式 的功能,

那組函式就可以說是那個 X程式 對外開放的 API。

例如:我要在 自己的網頁 上加入 google map網頁的功能,就使用 "google map API"

有時候 SDK(開發者工具包) 裡也會帶有些許 API 用來調用一些系統平台程式提供的功能

例如說:視窗顯示,圖形特效等等。

以下舉一個實際例子來說明,調用系統程式功能的API 是怎麽一回事

開發Windows應用程式的SDK(開發者工具包) 裡就包含 Win32 API

說明: Win32 API 是一個函式庫,可以給Windows應用程式 調用 Windows系統的功能

在PTT看到有人問了差異性,我的看法是

SDK是用來開發某一個平台的程式的工具包,API 是讓同一平台下的程式取用它的功能的函式庫。

以及下面的評論

1.API 通常大家都不會弄錯,的確就是以功能為導向的"方法"或"函式"清單,

看程式語言或平台而定( Methods, Functions... ),

而每個 API 主要都是為了達成某特定功能所設計的。

開發商可以為了不同平台,設計相同的 API 讓開發者使用,

也可能會因應不同平台,製作不同的 API 讓開發者使用。

2.當 API 數量夠多功能夠繁複並且可交互為用的時候,

( 例如為了達成某些功能,常需要同時引用某些 APIs 來完成 )

開發商就會為了開發便利,而預先撰寫好一些組合好 APIs 的 API

供開發者使用,來統一有特定需求的開發者能有一致的開發與使用體驗,

( 例如讓使用"網路連線"的開發者不需自己處理網路的基礎溝通信息,

與錯誤處理方式,使 API 在應用的時候有一定程度的便利性等 )

然後,也陸續發展出測試、除錯工具,甚至是設計不同平台開發環境所需的套件,

尤其針對不同平台,更是設計了對應的工具來協助開發、除錯;

SDK 名詞之所以出現,儼然是為了彙整上述這些資源而誕生的,

我想也可以說成是 API 的包含者(直接使用)與應用者(以便加速開發),

也因此可以說這兩個是屬於不同層級的東西...

以 Android 來說:

a. 我們要擁有 Android SDK 才能開發 Android 應用程式

( 針對不同開發系統而不同 Linux, Windows )

b. Android SDK 裡的 APIs 統統都可以單獨使用,只不過你會

發現他們都還有許多其他的應用,而且可能還比自己寫來得更有效率

c. Android SDK 跟開發環境整合後,除了提供程式碼語法錯誤檢查外,

還提供模擬器平台讓我們不需要硬體就可以模擬測試

d. Android SDK 內有測試用的 APIs,來協助我們檢查記憶體用量、

程式效能以及狀態顯現等功能 ( 當然它建議僅在測試除錯時才使用 )

以 Facebook 來說:

a. 我們要下載 Facebook SDK 才能開發應用程式

( 針對不同開發語言或平台而不同,PHP, JavaScript, Android, iOS )

b. Facebook 官網提供 SDK 詳細的 APIs 解說與使用方法、範例說明等

c. Facebook 官網提供 線上測試工具,測試某些API的指令與語法

以 Google Map API 來說:

網頁開發,只需使用 Google Map API 即可在網頁上開發、使用其功能

( 但是在 Android, iOS 上開發則另外需要 Google Map SDK 才行 )

由此可知,我們可以清楚知道 API 與 SDK 的定義差別了!按鈕進行在線轉換


你是個男的

你要開發一個

BABY

SDK

就是房間、床、你老婆等一系列相關的工具、文檔

API

就是你老婆開放的介面


假設你要做一款WiFi可視門鈴,APP功能有:

1. 視頻對講

2. APP開鎖

3. 訪客截圖

4. 移動偵測

5. 觸發警報

6. 人臉識別

首先,要做1-6的API, 組成了SDK, 然後根據SDK開發Project File項目文件,製作APP, 門鈴上寫入Firmware固件(Firmware是門鈴的軟體,是SDK和門鈴溝通的橋樑)。

如下圖:

後來,你想升級門鈴,加入新功能 7. 虹膜識別,做API-7, 組成新的SDK, 生成新的Firmware, 更新到門鈴,搞定。

作者:睡不醒的小獅子

鏈接:有沒有大神幫忙解釋下sdk,api和app之間的關係? - 知乎用戶的回答

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。


sdk是開發者使用api的工具

不知道這麼理解合不合適。。。


API: Application Programming Interface

編寫應用程序的介面,抽象概念。

OpenGL is an API.

SDK: Software Development Kit

使用某種語言來暴露 API,提供頭文件、庫文件、工具(通常不是 IDE)和範例。

DirectX could be an SDK.


API是介面,SDK是開發包。就是鋼筆和書包的差別。你可以去bestsdk了解下吧


sdk是多個API的集合。個人理解


SDK裡面可以有很多API,也可以說是一系列API的幸福全家桶,

之前做過百度廣告API,需求是整合成一個SDK,我們裡面各種百度廣告API,以及實現一些自己的邏輯,

非得分清它們之間區別的話,大概跟廣東與廣州的區別差不多吧!


網站平台是做能力開放的,有API能力,也有SDK能力。沒做過開發的產品汪,剛接觸的時候也是傻傻搞不清楚,各種查資料。

SDK(software development kit),中文可譯為「軟體開發工具包」。

一般都是一些被軟體工程師用於為特定的軟體包、軟體架構、硬體平台、操作系統等建立應用軟體的開發工具的集合。通俗點是指由第三方服務商提供的實現軟體產品某項功能的工具包。在編輯器里敲代碼的時候它會自動補全代碼、自動檢查錯誤。

通常SDK是由專業性質的公司提供專業服務的集合,比如提供安卓開發工具、或者基於硬體開發的服務等。也有針對某項軟體功能的SDK,如推送技術、圖像識別技術、移動支付技術、語音識別分析技術等,在互聯網開放的大趨勢下,一些功能性的SDK已經被當作一個產品來運營。

開發者不需要再對產品的每個功能進行開發,選擇合適穩定的SDK服務並花費很少的經歷就可以在產品中集成某項功能。

API(application programming interface),中文可譯為「應用程序編程介面」。提供用戶編程時的介面,是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟體或硬體得以訪問一組常式的能力,而又無需訪問源碼,或理解內部工作機制的細節。DOSAPI 是「Thinking in彙編語言」的,而 Windows API 則是「Thinking in 高級語言」的,我們通常指的是Windows API ,DOSAPI是系統程序的一部分,他們與系統一同被載入內存並且可以通過中斷矢量表找到他們的入口,那麼關於 Windows API又是 呢?要說明白這個問題就不得不引入這個概念——DLL

DLL( Dynamic Link Library),中文譯為「動態鏈接庫」。在windows環境下含有大量 .dll格式的文件,這些文件就是動態鏈接庫文件,其實也是一種可執行文件格式。跟 .exe 文件不同的是,.dll文件不能直接執行,他們通常由 .exe 在執行時裝入,內含有一些資源以及可執行代碼等。其實 Windows 的三大模塊就是以DLL的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),裡面就含有了 API函數的執行代碼。為了使用 DLL 中的 API 函數, 必須要有 API 函數的聲明(.H)和其導入庫(.LIB),導入庫可以先這樣理解:導入庫是為了在 DLL 中找到 API 的入口點而使用的。

實際上SDK包含了API的定義,API定義一種能力,一種介面的規範,而SDK可以包含這種能力、包含這種規範。但是SDK又不完完全全只包含API以及API的實現,它是一個軟體工具包,它還有很多其他輔助性的功能。

為了使用 API 函數,我們就要有跟 API 所對應的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開發 Windows 應用程序所需的相關文件、範例和工具的「工具包」。

SDK 包含了使用 API 的必需資料,所以人們也常把僅使用 API 來編寫 Windows 應用程序的開發方式叫做「SDK編程」。而API和 SDK 是開發Windows應用程序所必需的東西,所以其它編程框架和類庫都是建立在它們之上的,比如VCL 和MFC,雖然他們比起「SDK 編程」來有著更高的抽象度,但這絲毫不妨礙它們在需要的時候隨時直接調用 API 函數 。

—————————————————————————————


SDK:開發工具。

用例:Mac下打開Xcode,設計界面,調整邏輯,寫代碼,寫文案翻譯,創建(編譯)一個iPhone手機的APP,Xcode就是iPhone手機IOS系統的SDK應用開發工具。

API:從某個系統中調取或寫入數據的介面。

用例:用手機拍照,向操作系統申請使用攝像頭介面的許可權,接受感測器傳回的數據,在APP中顯示,簡單的說,APP使用了操作系統事先提供好的相機的介面。


之前一直不太懂客戶提的API 和SDK的廣告需求,看完大家的解釋多少有點了解了。API是一個介面,可以讀取到數據等多方面的信息;SDK的話是一個開發工具,這個成本比較高,但一般不會外泄數據等信息。


一堆api就像一本字典,在實際開發中用起來很費勁,sdk就不同了,是從應用api的角度對api做進一步封裝


sdk(software development kit)按照字面理解是軟體開發工具。在遊戲裡面常被用來做參數效驗,簽名簽證等的工具。

而API就是應用程序編程介面。。一個是工具,一個是介面。。


軟體開發工具包(Software Development Kit, SDK)一般是一些被軟體工程師用於為特定的軟體包、軟體框架、硬體平台、作業系統等創建應用軟體的開發工具的集合。

——————————————————————————————————

詳細講講API:

應用程序介面(英語:Application Programming Interface,簡稱:API),又稱為應用編程介面,就是軟體系統不同組成部分銜接的約定。由於近年來軟體的規模日益龐大,常常需要把複雜的系統劃分成小的組成部分,編程介面的設計十分重要。程序設計的實踐中,編程介面的設計首先要使軟體系統的職責得到合理劃分。良好的介面設計可以降低系統各部分的相互依賴,提高組成單元的內聚性,降低組成單元間的耦合程度,從而提高系統的維護性和擴展性。

應用程序介面為:「『電腦操作系統(Operating system)』或『程序庫』提供給應用程序調用使用的代碼」。其主要目的是讓應用程序開發人員得以調用一組常式功能,而無須考慮其底層的源代碼為何、或理解其內部工作機制的細節。API本身是抽象的,它僅定義了一個介面,而不涉及應用程序在實際實現過程中的具體操作。

例如,圖形庫中的一組API定義了繪製指針的方式,可於圖形輸出設備上顯示指針。當應用程序需要指針功能時,可在引用、編譯時鏈接到這組API,而運行時就會調用此API的實現(庫)來顯示指針。

應用程序介面是一組數量上千、極其複雜的函數和副程序,可讓程序員做很多任務作,譬如「讀取文件」、「顯示菜單」、「在視窗中顯示網頁」等等。操作系統的API可用來分配存儲器或讀取文件。許多系統應用程序藉由API介面來實現,像是圖形系統、資料庫、網路Web服務,甚至是在線遊戲。

應用程序介面有諸多不同設計。用於快速執行的介面通常包括函數、常量、變數與數據結構。也有其它方式,如通過解釋器,或是提供抽象層以屏蔽同API實現相關的信息,確保使用API的代碼無需更改而適應實現變化。

應用程序介面經常是軟體開發工具包(SDK)的一部分。

API又分為(Windows、Linux、Unix等系統的)系統級API,及非操作系統級的自定義API。作為一種有效的代碼封裝模式,微軟Windows的API開發模式已經為許多商業應用開發的公司所借鑒,並開發出某些商業應用系統的API函數予以發布,方便第三方進行功能擴展。如Google、蘋果電腦公司,以及諾基亞等手機開發的API等等。


api是編程介面,可以簡單的理解為是一個或一組實現特定功能的函數或函數調用步驟(函數之間可以相互層層調用,雖然正規的商業開發不允許這麼干,但有時候迫不得已也可以這麼用),api主要有操作系統提供。而sdk是開發工具包,主要提供的是庫,是包含某一類功能函數的文件,如計算數學是用到的數學庫(math.h也算),有時候也會包含一些輔助IDE的特定功能,如自動補全,關鍵字著色等,有特定支持開發商提供。結構上講,sdk和api是前者調用後者的關係,但這兩者之間沒有絕對的包含關係,sdk也可以不用api,api也可以由變成人員自行調用。類似sdk功能的還有jdk(java開發工具包)。


.完全看不懂,越說越混亂,必須要知道這兩個對象(sdk,api)是什麼東西才能思考,初學者看到只會一頭霧水.不如用一個詞,逐級翻譯(由上到下,由下到上.或者其它方向,這是立體加抽象的思考,其實用空間坐標軸就能表達,但我怕初學者看不懂).已能完全解釋.代碼層面(物質)的翻譯,思考層面(精神)的翻譯.


推薦閱讀:

網站後台要做客戶端API介面,介面文檔如何寫?
有沒有開源的api管理系統?
知乎將如何做開放?
網上的天氣 API 哪一個更加可靠?
為什麼很多技術類英文網站的 API 都有日語版本?

TAG:API | Developer |