ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

手把手教程:用 UIKit-cross-platform 的 DemoApp 跑通 iOS、Android、Mac 三端

手把手教程:用 UIKit-cross-platform 的 DemoApp 跑通 iOS、Android、Mac 三端 手把手教程用 UIKit-cross-platform 的 DemoApp 跑通 iOS、Android、Mac 三端【免费下载链接】UIKit-cross-platformCross-platform Swift implementation of UIKit, mostly for Android项目地址: https://gitcode.com/gh_mirrors/ui/UIKit-cross-platformUIKit-cross-platform 是一个用 Swift 实现的跨平台 UIKit 框架核心目标是让你只写一遍 iOS 代码就能在 Android 甚至 Mac 上以原生性能运行。听起来很神奇其实上手比想象中简单。本文将以官方自带的 DemoApp 为例手把手带你把同一套代码分别跑在 iOS、Android、Mac 三个平台全程零基础可跟收藏起来慢慢对照操作。为什么说 UIKit-cross-platform 是 Swift 跨平台开发的好选择传统移动开发有个痛点iOS 和 Android 要写两套代码用 React Native 之类的方案又难免牺牲原生性能。UIKit-cross-platform 的思路很直接——保留原生性能和原生观感同时只写一遍代码。它复用了苹果官方 UIKit 的 API 设计也就是说你在 iOS 上熟悉的UIView、UIViewController、UILabel、UIButton这些概念在 Android 端依然能用。渲染层基于 SDL_gpu最终翻译为底层 OpenGL 指令在 Android 上则由 CMake 配合 Ninja 把 Swift 源码编译成原生库通过 NDK 调用。整个架构设计细节可以查阅项目里的docs/ARCHITECTURE.md。第 1 步克隆项目并初始化子模块先把仓库拉取到本地git clone https://gitcode.com/gh_mirrors/ui/UIKit-cross-platform进入目录后别忘了执行子模块初始化这一步很关键漏掉会导致构建失败cd UIKit-cross-platform git submodule update --init --recursive第 2 步一次性配好三端运行环境工欲善其事必先利其器。三端分别需要通用环境Mac 上Xcode以及通过brew install cmake brew install ninja安装的 CMake需 3.16 以上和 Ninja。iOS / Mac 端只需 Xcode 本身即可无需额外配置。Android 端Android Studio Android SDK建议 API Level 29NDK 27.1.12297006。特别注意NDK 安装后还需要创建一个符号链接指向/usr/local/ndk/27.1.12297006/否则 Android 构建会找不到 NDK 路径。具体步骤可对照README.md中的环境准备清单。第 3 步iOS 端双击工程直接跑iOS 是最省心的一端。用 Xcode 打开示例工程samples/getting-started/DemoApp.xcodeproj选择DemoApp这个 target选好模拟器点击 Run。几秒钟后你就能看到经典的 Hello World 界面——青绿色背景、一行文字外加两个按钮点击可以弹出 Alert 和 ActionSheet。整个过程不需要改动任何一行代码。第 4 步Mac 端同一个工程切个 target跑完 iOS 后你会发现Mac 端几乎等于“白送”。在刚才打开的同一个工程里把 target 切换成DemoAppMac然后直接运行一个原生的 macOS 窗口应用就启动起来了。这套操作之所以顺畅是因为 Swift 本身在 macOS 上就是一等公民UIKit-cross-platform 的渲染管线同样适配了 macOS 环境。第 5 步Android 端用 Android Studio 打开即跑Android 端稍微多一步但也称不上复杂用 Android Studio 打开samples/getting-started/android目录等待 Gradle 同步完成首次会下载依赖耐心等待连接一台开启了 USB 调试的 Android 设备点击 Run。运行后你会看到和 iOS 一模一样的界面。看看入口代码你就明白了MainActivity.kt里的MainActivity继承了UIKitActivity并在初始化时加载了名为GettingStarted的原生库剩下的 UI 逻辑全部来自 Swift 代码。这就是“一套 Swift 代码在 Android 上运行”的真实路径。一套代码三端复用DemoApp 源码速览跑通之后强烈建议你花五分钟看看这三个文件它们构成了三端复用的最小闭环samples/getting-started/DemoApp/ViewController.swift界面与交互逻辑定义了一个UILabel和两个UIButton点击分别弹出 Alert 和 ActionSheetsamples/getting-started/DemoApp/AppDelegate.swift应用入口创建UIWindow并挂载UINavigationControllersamples/getting-started/DemoApp/androidMain.swiftAndroid 专属的 JNI 桥接文件把AppDelegate注册给 UIKitAndroid 层samples/getting-started/CMakeLists.txtAndroid 侧的构建脚本把上面三个 Swift 文件编译成动态库。有趣的是ViewController.swift里的#if os(iOS)分支只在 iOS 上生效其余代码三端完全共用。如果你想把现有的 iOS 项目迁移过来官方文档docs/PREPARE_IOS_PROJECT.md里还给出了详细的操作指引删除 storyboard、改造AppDelegate、添加main.swift一步步照着做即可。常见问题速查 构建报错“找不到子模块”回到项目根目录执行git submodule update --init --recursiveAndroid 构建提示 NDK 缺失确认安装的是 NDK 27.1.12297006并已创建/usr/local/ndk/27.1.12297006符号链接Android 上 Swift 代码偶发崩溃检查AndroidManifest.xml中的allowNativeHeapPointerTaggingfalse设置是否保留这是已知的兼容性开关首次 Gradle 同步极慢属于正常现象确保网络稳定后重试即可。写在最后 ✨通过本文的实操你应该已经亲身体验了 UIKit-cross-platform 的核心理念一份 Swift/UIKit 代码三端原生运行。无论是想降低双端开发成本还是对 Swift 跨平台编译感兴趣这个项目都值得深入研究。跑通 DemoApp 只是第一步接下来不妨把你自己写的 ViewController 丢进去试试感受一下“写一次处处运行”的快乐吧【免费下载链接】UIKit-cross-platformCross-platform Swift implementation of UIKit, mostly for Android项目地址: https://gitcode.com/gh_mirrors/ui/UIKit-cross-platform创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表