已可下載編譯三分鐘初探Fuchsia SDK
上周剛剛爆出新聞,Android源代碼被發現添加Fuchsia SDK和Fuchsia設備支持,現在似乎是了解更多關於Fuchsia SDK的好時機。今天我們探討一下Fuchsia SDK,希望在Fuchsia上搶占先機的開發者可以多多關註一下。
Fuchsia SDK簡介
一般而言,軟件工具包(SDK)用來幫助開發人員創建應用程序。有些像Android SDK一樣是專門Android著一個平台設計的,而其他像Google的Flutter SDK則可以為多個平台製作應用程序。而Fuchsia SDK屬於前一種,專門為Fuchsia平台設計。
目前,人們不能簡單地下載Fuchsia SDK並開始使用,因為谷歌尚未正式公佈。但是,由於絕大多數的Fuchsia 是開源的,因此可以構建和使用SDK。好奇的朋友可以在本文的底部找到一個下載鏈接,但我們顯然不建議將其用於任何重要的項目,因為它會很快變得過時或者完全錯誤,而其中所包含的工具只能搭配64位Linux一起使用,因此如果您使用的是OS X或者其他操作系統,那麼你只能靠自己另想辦法了。
而Chromium 團隊目前正在使用Fuchsia SDK 為Fuchsia構建Web Runner應用程序。
關於Fuchsia SDK和Flutter SDK:
儘管我們了解Fuchsia與Flutter的關係,但Flutter SDK與Fuchsia SDK不同。正如Flutter今天使用Android SDK製作Android應用程序一樣,我們也可以通過Flutter使用Fuchsia SDK。目前,我們需要直接使用Fuchsia SDK製作Fuchsia應用程序。實際上可以使用Fuchsia SDK直接構建Flutter應用程序,因為Fuchsia 可以深度支持Flutter。
Bazel
目前,Fuchsia SDK 能夠使用C++,Dart和Flutter編寫的應用程序(實際上也是Dart)。無論您選擇使用哪種語言或框架,您都需要使用Bazel來管理依賴並處理最終構建。
Bazel是一個由Google提供的用於構建和測試軟件的框架,僅需要重新編譯有變更修改的部分代碼。Bazel 是一個龐大的話題,很值得學習更多,但就我們的目的而言,你只需要知道Bazel將你的應用程序連接到Fuchsia SDK中的庫,並使用SDK附帶的工具來實際構建可安裝的Fuchsia應用程序軟件包。
Fuchsia SDK中有什麼?
想要嘗試Fuchsia SDK的開發人員可以看看Fuchsia的代碼。例如,在“fuchsia_modular”Dart包中,你可以發現怎麼使用agents,怎麼創建proposals,並且和entities一起工作。(Entities是Fuchsia的一個術語)
甚至可以使用Dart 從SDK 中使用Zircon 內核層,還有“fidl”軟件包,可以讓你使用一些其他編程語言寫的程序和函數來訪問連接Fuchsia。
對於C ++開發人員,可以使用許多更底層的軟件包,包括直接訪問Vulkan(用於Fuchsia的圖形),以及Zircon內核提供的資源。FIDL還允許Dart和C ++開發人員訪問Fuchsia中提供的許多其他服務和實用程序,如UI代碼,藍牙,WiFi甚至語音轉換文本功能。
獲取Fuchsia SDK
對於那些只想近距離了解他們有朝一日如何將應用程序帶到Fuchsia的開發人員,你可以在這個新創建的GitHub倉庫中瀏覽它。去掉了不必要的代碼,並確保符合許可證,這個倉庫只包括代碼和庫,而不是任何二進製文件或Fuchsia OS本身的副本。
提醒:由於Fuchsia一直在開發中,SDK 一致繼續發生變化,因此內部信息將迅速過時,如果您希望在Fuchsia SDK上構建自己的應用程序,建議你自己手動構建SDK。獲取新副本的最佳方法是使用Fuchsia源代碼自行構建。如果您已將Fuchsia 源代碼和相關工具下載到您的(Linux或OS X)計算機,則可以使用以下命令構建SDK,然後按照說明進行操作。
fx set x64 –args = build_sdk_archives = true
fx fullbuild
今天我能用它做什麼?
假設你今天構建了Fuchsia SDK,你應該合理地期望能夠用它做什麼?實話實說,沒什麼可以做的。然而,正如我們上週所看到的那樣,《Android源代碼被發現添加Fuchsia SDK和Fuchsia設備支持》 Google正在使官方的Android Emulator與Fuchsia兼容來支持開發它。
如果想要探索更多,你應該能夠使用Bazel和SDK來創建一個Fuchsia 應用程序。實際上,已經能夠用Flutter 為Fuchsia 構建一些簡單的應用程序了,我們可以把它叫做Fuchsia App!