[分享] NVDA addon 開發小教學 - 討論區

[分享] NVDA addon 開發小教學

文章瀏覽次數 1288 文章回覆數 0

tsengwoody

tsengwoody圖像(預設)

2020-01-28 21:57:20

From:220.135.204.66

以下文章同步紀錄於NVDA addon 開發小教學

以下為原始 markdown 文字貼入,可至以上連結觀看可有較佳瀏覽體驗

NVDA addon 開發小教學

先備能力

想開發 NVDA addon 前需先熟悉 NVDA 操作與 python3

  • addon 就是要來加強 NVDA 的功能,不會操作就不知道有什麼需改善或客製化的目標,想當然不知從何下手
  • 不會操作連做好的程式都無法執行並測試
  • 於 2019.3 後的 NVDA 已改用 python 3.7 開發且python 2 於 2020 年 1 月 停止支援了,故要入門就直接學 python3 吧

建立基本概念

有了以上兩項先備能力後就可以逐步看官方或社群的一些文件了

以下列出想開發 addon 的建議閱讀文章順序

  • NVDA Developer Guide:這篇非常的基礎,介紹了簡單的 addon 概念
  • NVDA Add-on Development Guide:進皆且完整的介紹了當前開發 addon 的知識。我沒全看完,只挑了我覺得會用到的部份看,之後有需求再回頭看其他的部份。。建議可先看到 Getting started: Hands-on examples 的 2 級大標結束,其餘就試依自己想開發的 addon 功能再挑著看,或是寫久了想了解更多可能開發的功能再慢慢看即可,快速的有了基本概念後就動手實做累積經驗更重要。

開發準備

動手實做前照著官方建議的 AddonTemplate 建個環境吧

  • 下載 Python 3.7 安裝。未來進階要 build NVDA 原始碼亦是需要 32 bit 版
  • > pip install markdown
  • 下載 Scons 安裝。(用 pip 安裝無法在 CMD 下 scons 指令,可能我環境沒正確設定,故用 exe 安裝)
  • 下載 Git 安裝
  • 下載 AddonTemplate 的專案目錄結構:
    > git clone https://github.com/nvdaaddons/AddonTemplate

    依專案修改 buildVars.py, readme 等內容

    • buildVars.py:修改 addon_info 字典的內容,未來用 scons 打包時會自動根據這個字典的內容產生 manifest.ini 檔
    • readme:markdown 格式,可寫 addon 說明的檔案,同樣在 scons 時會包到 .nvda-addon 檔內,此外上傳到 github 時也可在 repository 的頁面上看到此文件內容

開發流程

以上就建立好了專案的環境,可以實際開始開發程式了。

當你開發完成後,可執行以下指令來產生 .nvda-addon 與 .pot 檔

  • >scons # 產生 addon
  • >scons pot # 產生 .pot 翻譯檔

有了 .nvda-addon 檔就能按裝到 NVDA 內來執行了。

快速測試

以上方式當每次修改完成就需產生 .nvda-addon 檔在安裝到 NVDA 內測試其實有點麻煩,當在開發階段建議可直接將專案目錄下的 addon 資料夾複製到 NVDA使用者目錄\addons 內。

此後,當修改了一些內容後可直接按 NVDA+ctrl+F3 來重新載入 addon 來確認修改後的程式行為。

等到整個都開發完再複製回專案目錄並產生 .nvda-addon 檔即可。

動手實做

當你讀完教學文件並完成以上準備後,就發揮你的創意與觀察發覺不便處擬訂想解決的問題,不論多麼微小的功能都沒關系,先試著做點什麼感受編寫 addon 的魅力吧。

逐步的若想開發更複雜的功能建議從觀摩其他人的程式開始,找個有興趣的 NVDA 功能或 addon 去 trace code 涉法找到該功能原始碼來學習。

從 trace code 來了解實現功能的方法,在這過程中一定會遇到一堆看不懂的 python 語法或 API 一關一關的去了解克服打好基礎,最終就可以開發出實用的功能。

最後讀了一段時間的原始碼想完整建立 NVDA 架構概念再看 DesignOverviewinternals 的內容

以上大致是我學習的方法、步驟與建議供大家參考。
※最後更新時間:2020-02-16 09:00:34 From:1.161.133.234 By:特種兵
※最後更新時間:2020-02-16 09:04:57 From:1.161.133.234 By:特種兵
※最後更新時間:2020-02-16 09:12:24 From:1.161.133.234 By:特種兵