본문 바로가기

Flutter Desktop 에서 Rust library 사용하기 (3): Windows, macOS 이전 포스트 들에서는 모바일 앱에서 Rust library 를 사용하는 방법을 직접 구현해 봤습니다. 이번에는 cbindgen, ffigen 툴을 활용해서 좀 더 쉽게 Rust library를 연동하고 Desktop OS(Windows, macOS)용 Flutter 앱에서 사용하는 예제를 만들어 보겠습니다. flutter library 생성시 plugin_ffi template을 이용하면 sum을 구하는 예제가 있는데, 여기서는 문자열을 주고 받는 함수로 변경해 보겠습니다. flutter에서 Rust library 사용하기 (1a): Android + JNA (본 포스트) flutter에서 Rust library 사용하기 (1b): Android + JNI flutter에서 Rust library 사용하..
gRPC를 이용해서 Rust와 Flutter를 연동해보자 (2) - 예제 이전 소개 포스트에 이어서 예제를 직접 만들어 보겠습니다. 예제는 gRPC 홈에 있는 quick start의 예제의 proto 파일을 그대로 사용했으며, Rust와 Flutter code는 직접 생성해봤습니다. 다음과 같은 절차로 진행합니다. 준비물 proto file 작성 Rust로 gRPC 공통 library 작성 Rust로 gRPC server 작성 Rust로 gRPC client 작성 Rust Server + Rust Client 연동 테스트 Flutter로 gRPC client 작성 Rust Server + Flutter Client 연동 테스트 마무리하며 1. 준비물 protoc 설치 protoc는 gRPC에서 사용하는 protocol buffer의 compiler다. Windows 환경 ch..
gRPC를 이용해서 Rust와 Flutter를 연동해보자 (1) - 소개 지난 포스트에서는 FFI (Foreign Function Interface)를 활용해서 Rust와 Flutter를 연동했었는데요. 이번에는 HTTP 2.0 기반의 protocol인 gRPC를 활용해서 연동하는 방법에 대해서 알아보고자 합니다. 예제코드를 먼저 보고자 하시는 분들은 다음 포스트로 바로 다음 포스트로 넘어가서 확인하시기 바랍니다. 들어가기 전에 Rust와 Flutter를 연동하는 데 있어서 FFI와 gRPC가 어떤 차이가 있는지 차이점을 아래와 같이 표로 정리해봤습니다. 측면 gRPC FFI (Foreign Function Interface) 통합 복잡성 gRPC는 서비스 간 통신을 위한 프로토콜 중심 접근 방식을 제공하여 통합을 단순화할 수 있습니다. FFI는 낮은 수준의 바인딩과 수동 메..
Flutter 에서 Rust library 사용하기 (2): iOS + C library in Rust 이번에 소개할 내용은 Flutter(iOS) 에서 Rust 기반 library 를 사용하는 방법입니다. iOS는 Android와 다르게 dynamic library를 지원하지 않아 static library로 빌드를 해야 합니다. 그리고, C library를 그대로 사용할 수 있기 때문에 JNA용으로 library 소스가 있다면 변경없이 그대로 사용가능합니다. 다만, iOS용으로 빌드를 다시 해줘야 합니다. Xcode setup이 좀 간단하지 않아서 유투브 동영상도 올렸으니 참고해보세요. flutter에서 Rust library 사용하기 (1a): Android + JNA flutter에서 Rust library 사용하기 (1b): Android + JNI flutter에서 Rust library 사용하..
flutter에서 Rust library 사용하기 (1a): Android + JNA 이번에 소개할 내용은 지난번에 이어서 Flutter(Android) 에서 Rust 기반 library 를 사용하는 방법입니다. 지난번에 JNI 기술을 써서 연동했다면 이번에는 좀 더 진보된 JNA(Java Native Access)를 사용하는 방법을 다루겠습니다. 아래는 순서를 좀 바꿨습니다. 실제 연동을 해보니 JNI 보다 JNA 가 더 C library측의 Java의 dependency가 없어서 C library는 iOS에서도 그대로 사용가능했습니다. JNI(1b)의 포스트와 중복이 있긴 한데, 이 포스트만 보시는 분들을 위해 유지했습니다. flutter에서 Rust library 사용하기 (1a): Android + JNA (본 포스트) flutter에서 Rust library 사용하기 (1b): ..
flutter에서 Rust library 사용하기 (1b): Android + JNI 이번에 소개할 내용은 Flutter 에서 Rust 기반 library 를 사용하는 방법입니다. 원래는 iOS 까지 다뤄서 어떻게 공유하는지 한 번에 보여드리려고 했으나, 내용이 많아서 아래와 2~3회로 나눠서 다룰 예정입니다. flutter에서 Rust library 사용하기 (1a): Android + JNA flutter에서 Rust library 사용하기 (1b): Android + JNI (본 포스트) flutter에서 Rust library 사용하기 (2): iOS flutter desktop에서 Rust library 사용하기 (3): Windows, macOS 이번 포스트에 다루는 Rust library와의 연동방법은 JNI와 Flutter Method Channel을 사용합니다. Flutt..
dart ffi with rust dart ffi(foreign function interface)를 통해 rust library를 사용하는 방법을 공유합니다. 예제 app으로는 rust의 audio library의 하나인 rodio 사용해서 음악을 재생합니다. 본 글의 내용은 https://medium.com/flutter-community/how-to-call-a-rust-function-from-dart-using-ffi-f48f3ea3af2c 에서 영감을 얻어 작성하였고, 2022년 9월 기준으로 빌드 가능한 환경으로 구성했으며, rust library에 대한 내용을 추가했습니다. 준비물 dart SDK v2.18.0 rust v1.63.0 rodio에서 재생가능한 음악 파일 (wav, mp3, ...) windows or mac..
Deck CBL-87XN Francium Geobukseon 블랙에디션 키보드 F11, F12 키 활성화하기 최근 Deck CBL-87XN Francium 거북선 키보드를 구매했는데, F11, F12키가 매크로 기능이 들어가 있고, F11, F12(ESC+CTRL)는 다른 키로 매핑되어 있는 것을 구매하고 나서 알았습니다. 당근으로 보낼까 하다가 국내 지사 사이트에서 해결 방법을 찾았습니다. 방법은 의외로 간단합니다. F11, F12를 되돌리를 펌웨어로 업데이트하면 끝입니다. 다만, 이때는 매크로 기능은 사용할 수가 없게 됩니다. 그외 FN키과 연동되는 키(볼륨 조절과 같은)들은 정상동작합니다. 주의사항! 펌웨어는 알 수 없는 오동작을 일으킬 수 있으니, 펌웨어 업데이트로 인해서 생긴 문제에 대해서는 제가 책임질 수 없습니다. 만약, 문제가 생기면 덱키보드의 A/S가 잘 된다고 하니 직접 문의 바랍니다. 주의사..