日常碎碎念最近经常有人问我怎么用 Rust 在 iOS 上开发. 那就完整地讲一下吧.

还有个事, 我的 17 款 MacBook Pro 使用流畅程度居然没有 16 款的好, 17 款动不动就吹鼓风机, 真是见得鬼了.

把工具搞定

在搞事情之前, 我们先把 Rust 环境配好, 这个很简单, 直接用官网的这条命令.

curl https://sh.rustup.rs -sSf | sh

随便装一个版本, 稳定版也好, 变态版(beta) 也罢.

然后装上一些工具链, 在终端输入

rustup target add aarch64-apple-ios x86_64-apple-ios

我个人只装了针对 A7 以上 64 位处理器的工具链, x86_64-apple-ios 这个是给模拟器用的.

还有其他几个工具链, 有需要的也可以装上.

armv7-apple-ios armv7s-apple-ios i386-apple-ios

建个 Rust 项目先

现在先建个 Rust 项目, 只要使用 cargo 就好了, 直接在终端输入

mkdir rust-on-ios && cd rust-on-ios

cargo new rs --lib

mkdir ios

现在可以看到 rust-on-ios 目录下有 ios 和 rs 文件夹.

打开 rs 文件夹 src 目录下的 lib .rs 文件, 先搞个 "hello world" 试一下效果.

usestd::os::raw::{c_char};usestd::ffi::{CString};#[no_mangle]pubexternfn say_hello()-> *mutc_char{CString::new("Hello Rust").unwrap().into_raw()}

姑且就写这个. 这里的 #[no_mangle]必须要写, 这个是保证编译后的函数签名像 C 的一样.

然后我们来建个 header 文件, 因为之后会把 Rust 项目编译成库文件, 所以搞个 header 提供接口.

char *say_hello(void);

还差一步, 我们现在要修改一下 Cargo.toml 文件, 到时候把 Rust 编译成库.

[package]

name = "rs"

version = "0.1.0"

authors = ["limit <747638920@qq.com>"]

edition = "2018"

publish = false

[lib]

name = "app"

crate-type = ["staticlib"]

现在我们到 rs 目录下编译一下这个项目.

cargo build --target x86_64-apple-ios --release

编译好之后, 你会在 target/x86_64-apple-ios目录下发现一个 libapp.a 文件.

接下来建个 iOS 项目.

建 iOS 项目现在来创建个 iOS Single Page App 项目. 我图个省事, 这里直接建 Objective-C 项目, 要建 Swift 项目也可以, 不过需要搞桥接, 而且我个人用 Rust 搞 iOS 有一半原因是不想写 Swift 代码.

一路 Next 创建了项目, 然后添加 lib 文件

这个 libapp.a 是我们用 Rust 编译好的文件, 这个 libresolv.tbd 是拿来做链接用的.

要想添加 libapp.a, 直接点这个加号, 然后点 Add Other, 然后选中编译好的 libapp.a 文件.

然后把之前写好的头文件放到项目中. 编译的时候发现出错了. 因为我们虽然把 libapp.a 引入到了项目中, 但是编译的时候, 工具并不清楚 lib 文件在哪, 所以我们得手动设置一下 lib 文件的搜索路径.

现在再进行一次编译应该就能成功了.

为了演示效果, 在 ViewControll.m 文件中使用一下这个函数吧.

#import "ViewController.h"#import "libapp.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

NSString *from_c_str = @(say_hello());

UILabel *label = [[UILabel alloc]

initWithFrame: (CGRect) {100, 100, 100, 100}];

label.text = from_c_str;

[self.view addSubview:label];

}

@end

然后模拟器上应该显示了 Hello Rust 这段文字.

好吧, 先到这里, 目前这种要每次自己手动编译, 而且每次如果新增了函数 header 文件需要手动修改, 如果 Xcode 自动帮我们搞定就好了.

ios 腐蚀rust手游_使用 Rust 开发 iOS 应用(粗糙版)相关推荐

  1. ios 腐蚀rust手游_用 Rust 开发 iOS 应用(粗糙版)

    把环境搞定 在搞事情之前, 我们先把 Rust 环境配好, 这个很简单, 直接用官网的这条命令. curl https://sh.rustup.rs -sSf | sh 复制代码 随便装一个版本, 稳 ...

  2. rust服务器假人文件,rust游戏手机版-rust手游预约(腐蚀游戏手机版)-乐游网安卓...

    <rust手游>是一款超真实末日生存模拟游戏,由pc端移植而来,采用了3D高清的实景地图,玩家作为幸存者需要在游戏地图中探索,和僵尸战斗,其他的幸存者竞争,收集生存所需的资源,建造房屋,努 ...

  3. 苹果手机充值显示服务器异常,梦幻西游手游充值出现异常的iOS系统解析

    梦幻西游手游充值出现异常的iOS系统解析,目前iOS系统充值出现异常,如果您在充值时遇到 "iOS目前无法处理您的购买" 的问题,这个情况主要是由于苹果服务器存在问题导致的,目前会 ...

  4. 手游神武2最新服务器,神武2手游新服开启公告 安卓IOS新服开启

    神武2手游新服开启公告,安卓IOS新服开启.神武手游安卓和IOS客户端又将开启新的服务器了,新的服务器将在3月11日开启.每当新服开启的时候肯定都会有一系列的活动登场,下面就让我们一起来看一看新服活动 ...

  5. 苹果神武4手游等待服务器响应,ios回合制手游《神武4》如何在登高探宝中快速拿到奖励?...

    ios回合制手游<神武4>的登高探宝玩法每周六.周日的21:30-22:30开启,玩家们可提前于21:05入场准备,22:30活动结束后保留半小时活动场景,此期间不再刷新怪物和宝箱,但玩家 ...

  6. 虚幻4引擎开发的手游_虚幻4引擎开发 《神佑》手游首次公开

    [17173新闻报道,转载请注明出处] 1月25日,Joycity公司举办新作发布会,公开了正在开发中的旗下新作. 发布会上,Joycity介绍了<创世纪战:安塔利亚战争>.<炮艇战 ...

  7. 和方舟rust一样的手游_方舟生存进化手游2.0版本的泰克科技有多强?恐龙大军都顶不住...

    富人靠科技,穷人靠变异.这句由<复仇者联盟>引出的话题在各大游戏中也能得到体现,因为它揭示了想要变强的两种方法,一种是利用科技的力量,另一种则是使用肉体的力量.在<方舟:生存进化手游 ...

  8. 和方舟rust一样的手游_三大高人气手游盘点,《方舟:生存进化》的世界靠支配恐龙来生存...

    手游市场的竞争是残酷的,现在我们所看到的热门手游不知道是干掉了多少款手游才出现在我们的眼前.不过这样的竞争对于像我们一样的玩家来说却是一件好事,因为在不断的竞争中,一些劣质手游自动被淘汰了,能留下来的 ...

  9. 和方舟rust一样的手游_偶像梦幻祭2新活动 ES手游全新开服

    毕竟四年前也没玩过什么手游,当时也就fgo和es了,所以对于游戏良不良心没什么概念,只是和单机比,手游确实费钱. 退坑最开始的原因是撕逼,是cp之间的撕逼,然后国服官方这边撩一下那边撩一下,作为玩家心 ...

最新文章

  1. Just another Robbery LightOJ - 1079[背包形状的概率dp]
  2. 虚拟化技术的概述及使用
  3. QT的QPen类的使用
  4. hi3798mv300是什么手机_华为海思电视芯片hi3798mv300 硬件参数如何?
  5. 怎样安装php52-71,CentOS如何安装PHP5和PHP7
  6. iOS应用横竖屏切换
  7. 对JDBC操作数据库的简单封装
  8. 河南淅川高考成绩查询2021,2021年河南高考成绩查询网址,河南高考成绩查询系统时间安排...
  9. echarts 折线图阴影颜色渐变
  10. iMac电脑启动ideal跑Java项目报错(Class JavaLaunchHelper is implemented in both...One of the two will be used.)
  11. 多态_python的小窝_百度空间
  12. springboot 接入 cachecloud redis 实践
  13. Java文件上传同时携带参数
  14. 谷歌地球倾斜模型3Dtiles格式cesium格式一键导入查看
  15. 一文彻底看懂LightGBM
  16. 如何合理规划每日时间
  17. 苹果id可以彻底注销吗_怎么注销淘宝账号?淘宝账号注销后可以重新注册吗?...
  18. phoenix的元数据一般存在哪里_【Python基础】hive的元数据存在哪里
  19. 太阳能路灯的根本结构及作业原理
  20. 前端加载动画/加载等待动画

热门文章

  1. 怎样让计算机加快速度,怎样让电脑速度跟快?
  2. 如何Telnet远程控制
  3. Android Apk反编译、修改资源、重新签名以及重新打包的详细讲解
  4. dataTable的中文文档
  5. Java三目运算符(条件运算符? :)
  6. 2022世界大赛全新启动,赛制升级 奖励优渥 全球逐鹿 等你来战
  7. 工业计算机的那些接口,工业平板电脑几种常用接口介绍
  8. 东方财富全年净利翻番,一份区块链以外的业绩
  9. [MyBatis]-resultMap结果映射集详解
  10. 2022年轻薄笔记本推荐丨高能配置超抗打 生产利器就选它