0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器視覺軟件開發(fā)SDK的注意事項(xiàng)介紹

jt_rfid5 ? 來源:機(jī)械視覺沙龍 ? 2023-04-26 10:47 ? 次閱讀

其實(shí)很簡單,SDK 就是 Software Development Kit 的縮寫,中文意思就是“軟件開發(fā)工具包”。

這是一個覆蓋面相當(dāng)廣泛的名詞,可以這么說:輔助開發(fā)某一類軟件的相關(guān)文檔、范例和工具的集合都可以叫做“SDK”。具體到我們這個系列教程,我們后面只討論廣義 SDK 的一個子集——即開發(fā) Windows 平臺下的應(yīng)用程序所使用的 SDK。

呵呵,其實(shí)上面只是說了一個 SDK 大概的概念而已,理解什么是 SDK 真有這么容易嗎?

恐怕沒這么簡單!為了解釋什么是 SDK 我們不得不引入 API、動態(tài)鏈接庫、導(dǎo)入庫等等概念。^_^,不要怕,也就是幾個新的名詞而已,其實(shí)學(xué)習(xí)新知識就是在學(xué)習(xí)新名詞、新概念和新術(shù)語。

首先要接觸的是“API”,也就是 Application Programming Interface,其實(shí)就是操作系統(tǒng)留給應(yīng)用程序的一個調(diào)用接口,應(yīng)用程序通過調(diào)用操作系統(tǒng)的 API 而使操作系統(tǒng)去執(zhí)行應(yīng)用程序的命令(動作)。其實(shí)早在 DOS 時代就有 API 的概念,只不過那個時候的 API 是以中斷調(diào)用的形式(INT 21h)提供的,在 DOS 下跑的應(yīng)用程序都直接或間接的通過中斷調(diào)用來使用操作系統(tǒng)功能,比如將 AH 置為 30h 后調(diào)用 INT 21h 就可以得到 DOS 操作系統(tǒng)的版本號。而在 Windows 中,系統(tǒng) API 是以函數(shù)調(diào)用的方式提供的。同樣是取得操作系統(tǒng)的版本號,在 Windows 中你所要做的就是調(diào)用 GetVersionEx() 函數(shù)。可以這么說,DOS API 是“Thinking in 匯編語言”的,而 Windows API 則是“Thinking in 高級語言”的。DOS API 是系統(tǒng)程序的一部分,他們與系統(tǒng)一同被載入內(nèi)存并且可以通過中斷矢量表找到他們的入口,那么 Windows API 呢?要說明白這個問題就不得不引入我們下面要介紹得這個概念——DLL。

DLL(又是一個縮寫,感覺 IT 這個行業(yè)里三字頭縮寫特別多),即 Dynamic Link Library(動態(tài)鏈接庫)。我們經(jīng)常會看到一些 .dll 格式的文件,這些文件就是動態(tài)鏈接庫文件,其實(shí)也是一種可執(zhí)行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接執(zhí)行,他們通常由 .exe 在執(zhí)行時裝入,內(nèi)含有一些資源以及可執(zhí)行代碼等。其實(shí) Windows 的三大模塊就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API 函數(shù)的執(zhí)行代碼。為了使用 DLL 中的 API 函數(shù),我們必須要有 API 函數(shù)的聲明(.H)和其導(dǎo)入庫(.LIB),函數(shù)的原型聲明不難理解,那么導(dǎo)入庫又是做什么用的呢?我們暫時先這樣理解:導(dǎo)入庫是為了在 DLL 中找到 API 的入口點(diǎn)而使用的。

所以,為了使用 API 函數(shù),我們就要有跟 API 所對應(yīng)的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開發(fā) Windows 應(yīng)用程序所需的相關(guān)文件、范例和工具的“工具包”。到此為止,我們才真正的解釋清楚了 SDK 的含義。

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

開發(fā)SDK時需要注意的問題

1.修改類別文件名及類別方法。

開發(fā)SDK時通常會用到比較多的第三方的類別方法, 這樣的話, 開發(fā)者在使用你的SDK時, 因?yàn)樗赡芤矔右恍┑谌降拈_源庫, 比如都使用了NSString的md5類別文件。由于這兩個文件都是從網(wǎng)上下載來下的, 所以文件名是一樣的。這樣在編譯時就會報錯。然后就想到要去修改這個類別文件名, 等修改類別文件名后。發(fā)現(xiàn)類別中的方法名是一樣的, 而iOS在調(diào)用兩個相同方法的類別方法時, 不能確定其調(diào)用的哪個方法, 但可以肯定地是只會調(diào)用一個類別方法, 如果恰好開發(fā)者自己又修改了這個類別方法, 那就有問題了。

所以在SDK開發(fā)過程中, 需要修改引入進(jìn)來的類名, 及方法名, 建議添加項(xiàng)目前綴, 最好是三個字母的, 如NAB, (兩個字母為蘋果自己保留使用)

2.在開發(fā)SDK時, 如果發(fā)現(xiàn)某個方法命名時比較困難, 那么幾乎可以肯定的是, 這個方法藕合度太高,需要再次進(jìn)行分解。

3.開發(fā)SDK時, 需要考慮到升級的問題, 并且可以指定某些版本必須強(qiáng)制升級。(以防某些版本到后期發(fā)現(xiàn)有明顯問題, 需要及時替換)

4.開發(fā)SDK時, 需要留出一個接口, 能通過后臺服務(wù)器強(qiáng)制關(guān)閉掉某個接入應(yīng)用的調(diào)用。(這可能會發(fā)生在惡意地攻擊行為, 以及非惡意地使用行為,如某應(yīng)用頻繁自動重啟事故,每次重啟都會調(diào)用咱們的SDK,然后就會使得咱們的SDK服務(wù)器壓力陡增), 這個時候, 如果后臺能根據(jù)這個應(yīng)用的APP ID啥的, 強(qiáng)制關(guān)閉它發(fā)的請求,或者屏掉他的請求, 你會發(fā)現(xiàn)世界如此美好。

5.統(tǒng)計(jì)方面, SDK存儲每個接口調(diào)用的次數(shù),以在一定的情況下發(fā)送給服務(wù)器, 便于后期分析某些接口是否有問題,或者是根本就沒有用戶使用的情況。

6.有些SDK使用的前提條件,最好是在編譯期就提示給用戶,而不是在運(yùn)行期, 可以使用類似下面代碼來進(jìn)行提示

#warning - Release scheme, this is not work.

#if !__has_feature(objc_arc)

#error iBeaconSDK requires automatic reference counting

#endif

更好地構(gòu)建SDK

1. 了解墻外的世界,把握好需求

試著去關(guān)注你的競爭對手或者與你相似領(lǐng)域的公司都做了什么。這可能會給你一些參考的角度。采納你喜歡的地方,改善你不喜歡的地方。

2. 簡潔

代碼簡潔——簡潔的代碼意味著你的客戶用起來得心應(yīng)手。這可能包括盡可能減少與代碼交互的方式,比如只公開一個接口類;或是簡短的方法簽名,比如少量的輸入參數(shù),等等。

除了初始化階段(只發(fā)生一次且可能要求進(jìn)行配置),請讓SDK方法使用起來盡可能簡單。

同樣地,請盡量減少方法簽名中的參數(shù)。

你可以通過提供默認(rèn)配置以及允許高級用戶進(jìn)行覆蓋的默認(rèn)實(shí)現(xiàn)類來達(dá)到這一目的。

隱藏用戶不需要使用的類和方法,比如,只將用戶必須使用的類/方法設(shè)定為公有的,否則就將它們的使用范圍設(shè)定為局部或者私有。一個 IDEs 提供了代碼檢查與清除功能,可以幫你自動實(shí)現(xiàn)這一點(diǎn)。

參考文檔簡潔——讓你的文檔盡可能簡單易懂。這意味著有時候你得多寫注釋,有時候又得盡量少寫。內(nèi)聯(lián)樣本代碼通常很有幫助,因?yàn)榇蠖鄶?shù)人都是通過例子來學(xué)習(xí)的。

3. 提供簡單的開始步驟

這是指一個人可以在五分鐘內(nèi)上手使用你的代碼。這一點(diǎn)非常重要,因?yàn)榭蛻敉MM可能不費(fèi)力地進(jìn)行集成。除此之外,有時候客戶想要評估你的產(chǎn)品,但如果無法進(jìn)行簡單的測試,他們就很可能選擇跳過你的產(chǎn)品。

4. 短小精悍

保持簡短主要是文檔的責(zé)任,但是同樣與用戶和SDK代碼的交互方式有關(guān);為了保持文檔的簡短,可以提供代碼樣例、一目了然的方法名或使用默認(rèn)數(shù)據(jù)來實(shí)現(xiàn)。

5. 集成

請謹(jǐn)記客戶開發(fā)環(huán)境的多樣性。

比如說,如果你在寫一個安卓庫,它的集成方式在客戶使用Android Studio加gradle 框架和使用Eclipse集成開發(fā)環(huán)境時就非常不同。前者需要aar工件并發(fā)布到遠(yuǎn)程存儲庫中,而后者需要你提供jar文件,以及關(guān)于如何為SDK更改AndroidManifext.xml文件和獨(dú)立eclipse項(xiàng)目的指導(dǎo)。

這可能會影響你的構(gòu)建機(jī)制及其工件。然而,不要試圖取悅所有客戶,請先滿足你的第一位客戶,或者預(yù)期中的大多數(shù)客戶的需求。

6. 項(xiàng)目示例

在GitHub上創(chuàng)建一個最基本的項(xiàng)目,模擬使用SDK包的用戶。

這可以向客戶展示你的產(chǎn)品如何滿足他們的需求,以及如何集成你的產(chǎn)品。如果你想展示高級用法,那就在另一個項(xiàng)目里進(jìn)行展示。通常,客戶會將項(xiàng)目示例作為主要的參考文檔,因此,請?zhí)峁┬袃?nèi)評論,并盡量用一目了然的方式書寫代碼。

7. 概述

在參考文檔的開頭,或是GitHub項(xiàng)目的README.md文件中,請用直白的語言對你的解決方案進(jìn)行概述。在此部分,筆者通常會提供一個使用樣例來解釋SDK的典型用法。如果有可能,請?zhí)峁┮粋€簡單的表格或是圖表,這樣一來,不喜歡閱讀操作指南的用戶也可以快速了解該SDK的優(yōu)勢。

8. 初始化

使用在SDK域內(nèi)可接受的慣例。

這些慣例可能是可重載的構(gòu)造函數(shù),某種構(gòu)建模式等。初始化應(yīng)當(dāng)巧妙地使用默認(rèn)值來簡化流程。

9. 默認(rèn)值

默認(rèn)值對于保持代碼的簡潔性和減少配置過程(見簡潔性部分)是非常重要的。你所提供的默認(rèn)值(不管是在配置還是實(shí)施過程)應(yīng)該代表在你眼中大多數(shù)SDK用戶會進(jìn)行的操作。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機(jī)器視覺
    +關(guān)注

    關(guān)注

    161

    文章

    4266

    瀏覽量

    119542
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1461

    瀏覽量

    61489
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1006

    瀏覽量

    45415

原文標(biāo)題:【光電智造】詳解,機(jī)器視覺軟件開發(fā)SDK

文章出處:【微信號:今日光電,微信公眾號:今日光電】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    433HZ頻率點(diǎn)菜寶的操作及注意事項(xiàng)

    方面非常強(qiáng)大的機(jī)器,他的特點(diǎn)是耐跌型,電路設(shè)計(jì)穩(wěn)定卓越,抗干擾性非常強(qiáng)。而且這款機(jī)器設(shè)計(jì)采用中性包裝,任何的軟件開發(fā)商都可以進(jìn)行軟件及硬件的相互鏈接,而且可以自由的選擇加密程序,可以實(shí)
    發(fā)表于 11-03 19:14

    ucosii開發(fā)注意事項(xiàng)

    ucosii開發(fā)注意事項(xiàng)。
    發(fā)表于 08-15 22:37

    硬件開發(fā)流程及注意事項(xiàng)是什么

    硬件開發(fā)流程及注意事項(xiàng)是什么
    發(fā)表于 04-27 06:15

    CAN模塊特性與設(shè)計(jì)上的注意事項(xiàng)簡析

    文檔文章目錄目錄Part 1. CAN 模塊特性Part 2. 硬件設(shè)計(jì)上的注意事項(xiàng)Part 3. 軟件設(shè)計(jì)上的注意事項(xiàng)Part 4. CAN波特率與采樣點(diǎn)配置要求Part 5. 同步跳轉(zhuǎn)位寬時間設(shè)置的
    發(fā)表于 01-06 08:04

    ARM定制指令的設(shè)計(jì)注意事項(xiàng)和決策

    的硬件加速器時的一系列設(shè)計(jì)注意事項(xiàng),以及它與Cortex-M33和Cortex-M55處理器上現(xiàn)有的協(xié)處理器接口功能的比較。 本文還介紹了ARM研究的一些用例,如數(shù)學(xué)加速器,最后還解釋了軟件開發(fā)人員如何訪問使用ARM定制指令實(shí)現(xiàn)
    發(fā)表于 08-23 06:39

    電容的用途及注意事項(xiàng)

    電容的用途及注意事項(xiàng) 什么電路板都要用到電容,但如果用得不好,后果很嚴(yán)重!下面介紹電容的用途及注意事項(xiàng)。 什么是好
    發(fā)表于 01-14 10:31 ?2032次閱讀

    TCL各機(jī)芯軟件升級操作步驟及注意事項(xiàng)

    TCL各機(jī)芯軟件升級操作步驟及注意事項(xiàng)
    發(fā)表于 09-06 15:02 ?18次下載

    工業(yè)機(jī)器人電器系統(tǒng)注意事項(xiàng)

    工業(yè)機(jī)器人電器系統(tǒng)注意事項(xiàng):系統(tǒng)設(shè)計(jì)流程
    發(fā)表于 02-25 18:11 ?1次下載

    焊錫技巧及注意事項(xiàng)培訓(xùn)

    焊接技術(shù)簡單介紹 焊錫技巧及注意事項(xiàng)培訓(xùn)。
    發(fā)表于 05-13 15:39 ?0次下載

    GD32大容量產(chǎn)品軟件的移植注意事項(xiàng)

    本文檔的主要內(nèi)容詳細(xì)介紹的是GD32大容量產(chǎn)品軟件的移植注意事項(xiàng)
    發(fā)表于 11-14 16:14 ?17次下載
    GD32大容量產(chǎn)品<b class='flag-5'>軟件</b>的移植<b class='flag-5'>注意事項(xiàng)</b>

    MCUXpresso IDE在Flash調(diào)試的注意事項(xiàng)

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是 MCUXpresso IDE 下使用 J-Link 下載算法在 Flash 調(diào)試注意事項(xiàng)介紹一下如何使用新生成的 flash
    的頭像 發(fā)表于 12-23 13:53 ?920次閱讀

    H3 SDK1.0 USB模塊的配置方法及注意事項(xiàng)

    本文介紹H3 sdk1.0 USB模塊配置方法,以及使用注意事項(xiàng)
    發(fā)表于 03-26 16:36 ?6次下載
    H3 <b class='flag-5'>SDK</b>1.0 USB模塊的配置方法及<b class='flag-5'>注意事項(xiàng)</b>

    OneCore存儲軟件開發(fā)工具包(SDK)

    電子發(fā)燒友網(wǎng)站提供《OneCore存儲軟件開發(fā)工具包(SDK).pdf》資料免費(fèi)下載
    發(fā)表于 08-22 14:53 ?0次下載
    OneCore存儲<b class='flag-5'>軟件開發(fā)</b>工具包(<b class='flag-5'>SDK</b>)

    SS524V100 SDK安裝編譯osdrv注意事項(xiàng)(一)

    SS524V100 SDK安裝編譯osdrv注意事項(xiàng)(一) 一、開發(fā)環(huán)境 windows10電腦 + 虛擬機(jī)15 Pro + Ubuntu18.0.4 二、在 linux 服務(wù)器上安裝交叉工具鏈
    的頭像 發(fā)表于 10-23 17:18 ?1144次閱讀
    SS524V100 <b class='flag-5'>SDK</b>安裝編譯osdrv<b class='flag-5'>注意事項(xiàng)</b>(一)

    新版Hi3559AV100開發(fā)注意事項(xiàng)

    新版Hi3559AV100開發(fā)注意事項(xiàng)
    的頭像 發(fā)表于 11-13 09:17 ?576次閱讀
    新版Hi3559AV100<b class='flag-5'>開發(fā)</b><b class='flag-5'>注意事項(xiàng)</b>