原文作者:zeromod.in/
发布时间:2020年7月31日
"安卓系统构建原生UI的现代工具箱"
Jetpack Compose简化并加速了Android上的UI开发。用更少的代码、强大的工具和直观的Kotlin API,快速将你的应用变为现实。
当compose专注于Android的UI工具包时,在AOSP gerrit中有一个神秘的提交,提到 "桌面UI工作--基本信息"。这在开发者中造成了很大的关注度,因为这是移动开发者最喜欢的功能之一,也就是多平台,写一次代码就可以到处跑。Flutter于2017年5月推出,是现代支持Multi Platform的框架之一。
试试神秘的提交
所以我有兴趣尝试一下AOSP gerrit中的这个提交,其中包括通过Compose运行桌面应用的示例。Compose 是作为 gerrit 中 framework/base repo 的一部分开发的。
compose-desktop是由skia支持的。
Skia是一个开源的2D图形库,它提供了通用的API,可以在各种硬件和软件平台上工作。它作为Google Chrome和Chrome OS、Android、Flutter、Mozilla Firefox和Firefox OS等众多产品的图形引擎。
另外,在skia的基础上使用 skija
一个现代化的图形工具箱允许你构建各种图形用户界面,而不受现有框架的限制。
问题是 skija 目前只支持 MacOS。由于我没有运行MacOS的机器,所以这个实验被搁置了一段时间。后来在6月27日,jetbrains发布了一个新的库skiko,它为 skija提供了KMP(KotlinMultiPlatform)支持。
因此,通过一个小黑客(用skiko库代替skija),我能够运行compose-desktop样本,下面是它的截图。
注:创建一个新的Android项目,并复制粘贴相同的compose fun在Android中运行。
设置
- 首先使用本指南设置版本库。
- 一旦
repo sync
结束,运行cd frameworks/support/ui/
。 - 在这里,建议运行本软件库中提供的Android Studio的自定义构建。运行
./studiow
来启动Android Studio的自定义构建。 - 让Android Studio同步项目。
使用skiko lib而不是skja
- 使用这里的说明构建并发布skiko到本地maven。
- 在
buiild.gradle(ui-desktop)
中以api("org.jetbrains.skiko:skiko-jvm-runtime-linux:0.1-SNAPSHOT")
的形式将skiko作为依赖项加入。 - 将
androidx/ui/desktop/ComposeInit.kt
中的Library.load("/", "skija")
修改为Library.load("/", "skiko")
。
运转
在 compos-desktop-sample中执行gradle任务run
。