開源專案
wikimedia/wikipedia-ios avatar
wikimedia/wikipedia-ios

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式

官方維基百科 iOS 應用程式。運行腳本/設定後,您應該能夠打開 Wikipedia.xcodeproj 並在 iOS 模擬器上執行該應用程式(使用維基百科方案和目標)。

3,450 個 Star918 個 ForkSwiftMIT

秒懂

它是什麼?
官方 Wikipedia iOS 應用程式原始碼,README 說明 Xcode、格式檢查、不同 scheme、測試與暫存環境的使用方式。
適合誰用?
在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 適合能控制版本、依照 README 建置並讀取具體輸出的團隊;不適合需要文件已保證但材料未說明之平台、相容性或安全承諾的場景。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Swift(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:定位與資料流

README 開頭將專案標示為官方 Wikipedia iOS 應用程式。它列出了位於 github.com/wikimedia/wikipedia-ios 的原始碼倉庫、用於錯誤和功能的 Phabricator 專案,以及 MediaWiki 上的團隊頁面。README 聲明專案採用 MIT 授權,但提供的授權摘錄並未包含授權條款文字,只說明未在常見路徑找到授權檔案。因此,MIT 授權的具體條款無法從現有材料中得知。

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 1 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:安裝與入口

建置應用程式要求 Xcode 16.0 或更高版本。設定過程是位於 ./scripts/setup 的腳本,必須在倉庫根目錄執行;從 scripts 目錄內執行 setup 會因為相對路徑問題而失敗。腳本假定 Xcode 已安裝,並會安裝 Homebrew、SwiftLint 和 ClangFormat。它還會建立一個使用 ClangFormat 檢查 Objective-C 程式碼的 pre-commit 鉤子。設定完成後,開啟 Wikipedia.xcodeproj,並使用 Wikipedia scheme 和目標在 iOS 模擬器上執行應用程式。

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 2 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:核心設定與執行

如果想自行安裝開發前置條件,README 列出了三項:Xcode、SwiftLint 和 ClangFormat。Xcode 可從 App Store 取得,也可從 developer.apple.com 下載,但需要註冊了 Apple Developer 帳號的 Apple ID。SwiftLint 用於檢查 Swift 程式碼,ClangFormat 用於檢查 Objective-C 程式碼。README 沒有給出 SwiftLint 或 ClangFormat 的版本限制,也沒有說明使用不同版本會有何後果。

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 3 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:輸出、限制與取捨

專案對 Objective-C 採用 Apple 的 Cocoa 編碼指南,對 Swift 採用 swift.org API 設計指南。縮排使用 Xcode 預設的四空格,並透過 scripts/setup 設定的 pre-commit 鉤子使用 .clang-format 檔案。在可行的範圍內,Swift 程式碼由 SwiftLint 根據 .swiftlint-autocorrect.yml 中的規則自動格式化。README 將這些描述為一般性指南,而非硬性規則。

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 4 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:維護與授權

Xcode 專案定義了多個 scheme。Wikipedia scheme 指向正式伺服器。Staging scheme 指向各種暫存環境,透過 WMF Framework/Configuration.swift 中的 current 屬性選擇。選項包括用於頁面內容的 Apps 團隊暫存環境,以及用於大多數 API 呼叫的 MediaWiki beta 叢集,預設選擇 beta 叢集。Staging scheme 也啟用了功能旗標,並以獨立應用程式推送到 TestFlight。Experimental scheme 用於一次性建置,預設指向正式環境。另有供工程師使用的本機頁面內容服務和公告 scheme、透過啟動參數以 RTL 地區設定啟動應用程式的 RTL scheme,以及複製 Wikipedia 但使用 Release 設定進行手動效能測試的 Performance Testing scheme。

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 5 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:專案化驗證

Wikipedia scheme 設定為執行專案的 iOS 單元測試,可使用 Cmd+U 快速鍵或 Product > Test 選單。測試通過要求測試裝置的語言和地區設定為 en-US;已有工單來取消該要求。日誌層級在程式碼中簡化為表情符號,應用程式在 Debug 和 Release 模式下都只向主控台寫入 Warning 和 Error 訊息;開發者可以暫時將日誌層級改為 DDLogLevelAll。貢獻指南在 MediaWiki 文件與 docs/process.md 中。README 也連結了 CI、本地化、語言和 Web 開發文件。問題可寄至 ios-support at wikimedia dot org,錯誤報告透過 Phabricator 提交。

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這個判斷直接對應 README 的命令、檔名或設定鍵,不能用一般化的工具評估流程取代。第 6 節要核對的具體結果,是命令輸出、產物檔案與錯誤位置是否一致。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:採用邊界 1

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 對 wikimedia-wikipedia-ios-deep-analysis 而言,測試不能只看畫面是否出現。第 1 次核對應記下輸入資料、版本、執行命令、輸出檔案、日誌訊息與失敗位置,再比較 README 描述的行為。若結果只在特定平台成立,就把平台條件寫進部署決策;若文件沒有說明,就保留為未確認事項,不把推測寫成保證。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:採用邊界 2。在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 對 wikimedia-wikipedia-ios-deep-analysis 而言,測試不能只看畫面是否出現。第 2 次核對應記下輸入資料、版本、執行命令、輸出檔案、日誌訊息與失敗位置,再比較 README 描述的行為。若結果只在特定平台成立,就把平台條件寫進部署決策;若文件沒有說明,就保留為未確認事項,不把推測寫成保證。 在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這項限制仍須以 wikimedia-wikipedia-ios-deep-analysis 的實際輸出核對。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:採用邊界 3。在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 對 wikimedia-wikipedia-ios-deep-analysis 而言,測試不能只看畫面是否出現。第 3 次核對應記下輸入資料、版本、執行命令、輸出檔案、日誌訊息與失敗位置,再比較 README 描述的行為。若結果只在特定平台成立,就把平台條件寫進部署決策;若文件沒有說明,就保留為未確認事項,不把推測寫成保證。 在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 這項限制仍須以 wikimedia-wikipedia-ios-deep-analysis 的實際輸出核對。

wikipedia-ios:從 Xcode 建置 Wikipedia iOS 應用程式:採用邊界 4。在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 對 wikimedia-wikipedia-ios-deep-analysis 而言,測試不能只看畫面是否出現。第 4 次核對應記下輸入資料、版本、執行命令、輸出檔案、日誌訊息與失敗位置,再比較 README 描述的行為。若結果只在特定平台成立,就把平台條件寫進部署決策;若文件沒有說明,就保留為未確認事項,不把推測寫成保證。

編輯結論

在倉庫根目錄執行 `./scripts/setup`,以 Xcode 16.0 開啟 `Wikipedia.xcodeproj`;分別執行 Wikipedia、Staging 與 RTL scheme,並用 en-US 語言地區設定跑 Cmd+U,記錄 `.swiftlint-autocorrect.yml` 與 `.clang-format` 的實際結果。 適合能控制版本、依照 README 建置並讀取具體輸出的團隊;不適合需要文件已保證但材料未說明之平台、相容性或安全承諾的場景。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記