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

把环境搞定

在搞事情之前, 我们先把 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 这个是给模拟器用的.

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

rustup target add 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" 试一下效果.

use std::os::raw::{c_char};

use std::ffi::{CString};

#[no_mangle]

pub extern fn say_hello() -> *mut c_char {

CString::new("Hello Rust").unwrap().into_raw()

}

复制代码

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

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

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 项目

现在来创建个 Single Page App 项目. 我图个省事, 这里直接建 Objective-C 项目, 要建 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 *fromCStr = @(say_hello());

UILabel *label = [[UILabel alloc]

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

label.text = fromCStr;

[self.view addSubview:label];

}

@end

复制代码

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

要想用 Rust 开发移动端应用需要 Rust FFI 相关的知识, 后续我应该会写点 Rust FFI 的相关内容, 再配合 Flutter 写 UI, 开发体验肯定 up.

打广告

欢迎关注我的公众号

声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值