본문 바로가기

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..
webview_flutter 사용해보기 + url로 이동하기 새 프로젝트를 만듭니다. flutter create webapp1 pubspec.yaml 을 아래와 같이 수정합니다. dependencies: webview_flutter: ^2.0.9 home.dart 를 추가하고, webview를 추가합니다. (예제는 webview_flutter 의 기본 sample에 주석 달은 부분을 추가했습니다. https://pub.dev/packages/webview_flutter/example) import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; class HomeWidget extends..
Flutter 최신버전(v1.27.0 dev) 빌드시 에러 발생시 해결방안 최근 dev channel의 flutter v1.27.0 에서 빌드하면 아래와 같은 에러가 발생했습니다. Running "flutter pub get" in (myapp) ... Because no versions of youtube_player_flutter match >7.0.0+7 =2.0.0-rc1