主頁 > 移動端開發 > 10個問題帶你看懂 Compose Multiplatform 1.0

10個問題帶你看懂 Compose Multiplatform 1.0

2021-12-08 09:23:28 移動端開發

近日 JetBrains 正式發布了 Compose Multiplatform 1.0 版,這標志其在生產環境中使用的時機已經成熟,相信有不少人對它還不太熟悉,本文通過下面 10 個熱門問題帶大家認識這一最新的跨平臺技術,

FAQ

  1. 與 Jetpack Compose 的關系?
  2. 是否會取代 Flutter ?
  3. 有何技術優勢?1.0是否已穩定?
  4. Android Studio 還能使用嗎?
  5. 性能怎么樣?
  6. 生態建設如何?
  7. 桌面應用開發是否要引入 JVM ?
  8. Web 端開發是否已經成熟?
  9. 未來是否支持 iOS ?
  10. Jetpack 是否會跨平臺?

正文開始前先統一一下文中的用語:

  • compose-jb:Compose Multiplatform 簡稱,包含下面三者
  • compose-android:Jetpack Compose
  • compose-desktop:Compose for Desktop
  • compose-web: Compose for Web

1. 與 Jetpack Compose 的關系?

Jetpack Compose 是 Google 針對 Android 推出的新一代宣告式 UI 工具包,完全基于 Kotlin 打造,天然具備了跨平臺的使用基礎,JetBrains 以 Jetpack Compose(后文簡稱 compose-android)為基礎,相繼發布了 compose-desktop 和 compose-web ,使 Compose 可以運行在更多不同平臺,

Compose Multiplatform (后文簡稱 compose-jb)本質上是將 compose-desktop,compose-web 以及 compose-android 三者進行了整合,開發者可以在單個工程中使用同一套 Artifacts 開發出運行在 Android,Desktop(Windows, macOS, LInux)以及 Web 等多端的應用程式,工程中可以實作大部分代碼的共享以此達到跨平臺開發的目的,

所以在概念上 compose-jb 可以看做是 compose-android 的超集;在具體實作上 compose-jb 則是在 fork 了 compose-android 的原始碼基礎上增加了對 Desktop 和 Web 側的 API,
compose-jb 與 compose-android 同步更新,compose-jb 的 1.0 版本目前對應到 compose-android 1.1.0-beta02,因此在通用的 API 上 compose-jb 與 compose-android 時刻保持一致,不同的只是包名發生了變化,所以你可以將你的 compose-android 代碼低成本地遷移到 compose-jb 工程中,

Jetpack Compose( compose-android )Compose Multiplatform(compose-jb)
androidx.compose.runtime:runtimeorg.jetbrains.compose.runtime:runtime
androidx.compose.ui:uiorg.jetbrains.compose.ui:ui
androidx.compose.material:materialorg.jetbrains.compose.material:material
androidx.compose.fundation:fundationorg.jetbrains.compose.fundation:fundation

2. 是否會取代 Flutter ?

compose-jb 雖由 JetBrains 發布,但是作為 Flutter 的開發者 Google 對其也是樂見其成,因為 Compose 與 Flutter 雖然都是跨平臺技術,但是兩者定位不同所以不存在直接競爭關系,

Flutter 的定位就是移動端跨平臺解決方案,它的一切能力建設都是圍繞如何更好地“一次撰寫、隨處運行”,首要目標就是為了降低移動應用的開發成本(雖然最近也擴展到 Desktop 以及 Desktop),

compose-jb 的首要定位是一個宣告式 UI 工具包,它的目標是通過更先進的開發范式提升 UI 開發效率,由于宣告式開發思想適應性廣泛,所以借助 Kotlin 成為一個跨平臺框架便是水到渠成的事情, 如果說是 Flutter 成就了 Dart,那么 Kotlin 則成就了 Compose ,借助 Kotlin 近年來持續高漲的的人氣,Compose 的未來也充滿想象空間,

compose-jb 的受眾主要有兩類,首先是熟悉 Kotlin 與 Compose 的 Android 開發者,他們可以把自己的產品交付至更多平臺;其次是 Kotlin 經驗者,他們可以使用熟悉的語言更高效地開發包含 UI 的應用程式,像 JetBrains 這樣的 IDE 公司就屬于后者,他們迫切希望使用 Compose 替換 Swing 和 AWT 等基于 Java 的陳舊的技術堆疊,這也正是 compose-desktop 誕生的初衷,


3. 有何技術優勢?1.0是否已穩定?

應用開發無非關注三件事:資料獲取,狀態管理,界面渲染,
JetBrains 推出 Kotlin Multiplatform Mobile (簡稱 KMM) 實作了資料獲取部分的跨平臺,而 compose-jb 將跨平臺的范圍進一步覆寫到狀態管理甚至界面渲染(基于 Skia),

在一個 compose-jb 工程中,邏輯層(狀態管理)以及資料層的代碼在幾乎可以完全共享,在表現層,常用的組件和布局例如 TextButtonColumn/Row 等都可以跨越 compose-android 與 compsose-desktop 通用,此外 compose-desktop 針對桌面系統的特性還提供了專用能力,比如可以感知滑鼠行為和視窗大小、創建 ScrollbarsTooltipsTray

fun main() {
   Window {
       var windowSize by remember { mutableStateOf(IntSize.Zero) }
       var windowLocation by remember { mutableStateOf(IntOffset.Zero) }
       AppWindowAmbient.current?.apply {
           events.onResize = { windowSize = it }
           events.onRelocate = { windowLocation = it }
       }
       Text(text = "Location: ${windowLocation}\nSize: ${windowSize}")
   }
}

請添加圖片描述
compose-desktop 還提供了 SwingPanel 用來嵌入使用既有的 Swing 組件,compose-desktop 在能力上完全可以替代 AWT 和 Swing 等現有 UI 框架,

compose-web 為 Web 開發者提供了專門的 DOM API,針對常用的 HTML 標簽實作了對應的 Composable 組件,例如 DivPA 等等 ,同時提供了 attrs 方法以 key-value 的形式設定標簽屬性,一些常用屬性也有專屬方法;另外,基于 CSS-in-JS 技術 compose-web 允許開發者基于 DSL 定義 Style 樣式,

fun main() {
    renderComposable("root") {
        var platform by remember { mutableStateOf("a platform") }
        P {
            Text("Welcome to Compose for $platform! ")
            Button(attrs = { onClick { platform = "Web" } }) {
                Text("...for what?")
            }
        }
        A("https://www.jetbrains.com/lp/compose-web") {
            Text("Learn more!")
        }
    }
}

請添加圖片描述

compose-web 擁有 HTML 或 JSX 那樣的結構化的變現能力,同時有具備了回應式狀態管理能力,在 compose-jb 中還可以與 Desktop 和 Android 側共享邏輯層代碼,

穩定性方面,compose-jb 的大部分代碼來自 Jetpack Compose,在 Android 端已經有上千款 App 接入,這足以保證其在 Android 端上的穩定性,

JetBrains 在幾個月之前就將 Toolbox 應用從 C++ 和 Electron 遷移到了 compose-jb,并一直平穩運行,服務著超過 100 萬的月活用戶,常規的 UI 開發得到了檢驗,但是一些復雜功能可能還不夠穩定,目前還有不少 issue 有待解決,


4. Android Studio 還能使用嗎?

compose-jb 1.0 可以運行在 IntelliJ IDEA 2021.1 之后的版本中,IDEA 專門為其提供了工程向導和專案模板,指導開發者快速新建一個 compose-jb 專案,

開發者還可以通過插件市場下載 compose-desktop 側的專用預覽插件,在 Desktop 端實時預覽添加 @Preview 的 Composalbe,提高開發效率,


Andorid Studio 作為 IntelliJ 平臺下的 IDE ,自然也可以用于 compose-jb 專案的開發( IDEA 2021.1 對應 Android Studio Bumblebee 之后的版本),AS 自帶 Andoid 側的預覽能力,可以實時預覽 UI 代碼效果,此外 AS 對 Compose 的代碼提示也更友好,比如非法呼叫 @Composable 函式時, IDE 會標紅提示錯誤,而 IDEA 則只能在編譯時發現錯誤,


5. 性能怎么樣?

compose-android 和 compose-desktop 都使用 Skia 這一開源圖形庫進行渲染,Skia 在 Chrome,Flutter 等多個專案中廣泛使用,性能方面得到了驗證,Skia 還能支持平臺特有的硬體加速技術,例如 DirectX,Metal 和 OpenGL 等,compose-jb 為沒有硬體加速的設備也提供了優化的軟體渲染方案,曾經有人將 compose-desktop 與 JavaFX 進行過實際對比測驗,在通常情況下兩者渲染性能相當,盡在極端情況下會略遜于 JavaFX,不過已經足夠優秀了,

https://dev.to/gz_k/jetpack-compose-desktop-rendering-performances-4992

Web 側 compose-jb 會通過 Kotlin/JS 編譯器將代碼仍然編譯成 JS 代碼在瀏覽器運行,所以理論上與傳統的 Web 開發方式在性能上沒有區別,由于 CSS-in-JS 實作都是在運行時生成 CSS,僅僅在這一點上相對于直接使用 CSS 前端專案可能略有一點性能損耗,

而在邏輯代碼由于使用 Kotlin 作為開發語言,代碼的執行效率要明顯優于基于 Node 的 Electron 等同類跨平臺框架,Kotlin/JVM 也保證了在桌面側至少有與 Java 同樣的運行時性能,


6. 生態建設如何?

compose-jb 依托 Kotin Multiplatform 的豐富類別庫,滿足各種層面的能力開發,比如在架構、網路、資料存盤等各方面都有不少優秀的的解決方案,一些代表性的專案如下:

CategoryLibraryDescription
ArchitectureDecomposeKotlin Multiplatform lifecycle-aware business logic components (aka BLoCs) with routing functionality and pluggable UI (Jetpack Compose, SwiftUI, JS React, etc.), inspired by Badoos RIBs fork of the Uber RIBs framework
MVIKotlinExtendable MVI framework for Kotlin Multiplatform with powerful debugging tools (logging and time travel), inspired by Badoo MVICore library
redux-kotlinRedux implementation for Kotlin (supports multiplatform JVM, native, JS, WASM)
NetworkKtorFramework for quickly creating connected applications in Kotlin with minimal effort
rsocket-kotlinRSocket Kotlin multi-platform implementation
StoragesqldelightSQLDelight - Generates typesafe Kotlin APIs from SQL
Kodein-DBMultiplatform NoSQL database
multiplatform-settingsA Kotlin Multiplatform library for saving simple key-value data
Utils & OthersReaktiveKotlin multi-platform implementation of Reactive Extensions
koinA pragmatic lightweight dependency injection framework for Kotlin
kotlinx-datetimeKotlinX multiplatform date/time library
kotlin-loggingLightweight logging framework for Kotlin. A convenient and performant logging library wrapping slf4j with Kotlin extensions

More libraries:https://libs.kmp.icerock.dev/


7. 桌面應用開發是否要引入 JVM ?

compose-jb 在桌面端需要支持 Windows,macOS,Linux 等多套作業系統,基于 Kotlin/Native 的實作成本較高,因此現階段 compose-desktop 仍然依賴 Kotlin/JVM 編譯成 Java 位元組碼后再發布到各桌面系統,

compose-desktop 提供了專用的 Gradle 插件可以基于 jpackage 將 JVM 一同打包進各種格式的安裝包,例如 Mac 的 dmg, Windows 的 msi,exe 以及 Linnux 的 deb 等,使用者無需額外安裝 JDK ,可以像二進制程式一樣開箱即用,此外還通過使用 jlink 技術只對 Java 模塊的最小依賴進行打包以最大限度降低包體積,

$ ./gradlew package

> Task :packageDmg
WARNING: Using incubator modules: jdk.incubator.jpackage
The distribution is written to build/compose/binaries/main/dmg/DesktopApp-1.0.0.dmg

BUILD SUCCESSFUL in 11s
5 actionable tasks: 3 executed, 2 up-to-date

目前對 Kotlin/Native 編譯器的適配作業也在進行中,未來 compose-desktop 有望通過切換到 Kotlin/Native 進一步提高應用的執行速度,


8. Web 端開發是否已經成熟?

compose-jb 中整合 compose-web 的最主要意義是幫助 Kotlin 開發者擴大應用的發布場景,如果你已經有一個 compose-desktop 或者 compose-android 專案,那么基于 compose-web 可以把產品快速發布到 Web 端,并共享其中大部分的邏輯代碼,

compose-web 提供的宣告式 DOM API 相對于 HTML+JS+CSS 這一傳統技術堆疊在開發范式上更加先進,但如果你已經有 React 等前端框架的使用經驗那么此項優勢就不存在了,而且 compose-web 在建設速度上要落后于 compose-desktop,部分 HTML 標簽以及屬性還缺少對應的 DSL 實作,所以從單純開發一個前端應用的角度看,如果你對 Kolin 沒有執念的話,更推薦使用 React 等已有的成熟框架,

即使從跨平臺的角度看, desktop-web 也仍然有改善空間,desktop-web 在 API 設計上尊重原有的 HTML 開發習慣,這也導致其 DSL 上與 compose-android 和 compose-desktop 的差異較大,不利于 UI 代碼的共享,據悉 JetBrains 團隊已經著手開發與其他兩端風格一致的 DSL ,屆時可以通過 HTML5 Canvas 實作 UI 統一繪制,提高跨平臺的開發體驗,


9. 未來是否支持 iOS?

compose-jb 目前沒有對 iOS 端的支持,這是其成長為主流跨平臺框架道路上的一個嚴重阻礙,因此可以大膽猜想 compose-jb 在未來一定會增加對 iOS 的支持,而且有跡象表明 JetBrains 已經偷偷開始了這方面作業,

有人就曾經在 compose-jb 工程中也發現過針對 iOS 的開發分支,而且 compose-ui 依賴的 Skiko 庫也已經增加了對 iOS 的支持,理論上完全可以實作 iOS 側渲染,由于 iOS 不使用 Kotlin/JVM ,所以在 Kotlin/Native 編譯器以及 iOS 工具鏈等方面存在大量適配作業,畢竟 KMM 本身也還處于 alpha 階段,iOS 端的開發體驗還不理想,這可能就是 compose-ios 遲遲未發布的原因,但是未來是可以期待的,

那么在 compose-ios 還未出現的當下,如果你的應用有發布到 iOS 側的需求,作為一個過渡方案可以先借助 KMM 推薦 D-KMP 架構實作邏輯層和資料層的代碼共享,UI 側現階段可以使用 Swift-UI 等平臺語言進行開發,等待 compose-ios 真正到來時再對 UI 代碼進行遷移,

https://github.com/dbaroncelli/D-KMP-sample


10. Jetpack 是否會跨平臺?

很多 Android 開發者習慣于 Compose 搭配 Android 的 Jetpack 系列組件一同使用,所以當一個 compose-android 專案被遷移到 compose-jb 時,不少人希望有對應的 KMP 版本 Jetpack 庫可供使用,

在前不久 Android Dev Summit 上 Andorid Jetpack 團隊就這個問題進行了回答,答案是暫時沒有相關計劃,

https://www.youtube.com/watch?v=QreLkok3Euk&t=565s

首先 Jetpack 中一些重度依賴 Andorid 平臺特性的組件不適合發布 KMP 版本,而一些平臺無關的組件例如 Hilt,Room 等,雖然具備 KMP 化的基礎但仍然會謹慎啟動,因為當前首要任務還是保證其在 Android 端的穩定使用,雖然當前沒有計劃但是 Jetpack 團隊也表示了未來會嘗試對部分 Jetpack 庫進行 KMP 改造,他們很樂于幫助開發者能更低成本地完成專案向 KMP 的遷移,

對于開發者來說,如果你的專案近期有跨平臺的需求,那么在技術選型上就要避免過度依賴 Jetpack ,而要像 KMP 的 Library 傾向,比如在邏輯層優先使用 Flow 而非 LiveData 等;在資料層也可以考慮使用 SQLDelight 替代 Room ,

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/375944.html

標籤:其他

上一篇:iOS 基于 AVFoundation 制作的用于剪輯視頻專案

下一篇:Kotlin 基本資料型別

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more