Plugin 프로젝트 만들기
Package란?
일반적으로 프로그래밍에서 패키지란 다음과 같은 뜻을 가진다.
"일반적으로 많이 사용되는 기법이나 특수한 목적만을 위해 미리 프로그램으로 작성하여 다른 사람이 실제 프로그램을 작성하지 않고도 손쉽게 문제를 해결할 수 있도록 도와주는 프로그램의 집합"
자주 사용하는 혹은 특정 기능들을 미리 만들어둔 프로그램의 집합으로 새로운 프로그램을 제작할 때 가져와 사용할 수 있도록 모듈화 시켜둔 것이라고 생각할 수 있다.
Plugin이란?
기존 응용 소프트웨어에 특정 기능을 추가하기 위한 요소로써 기능 확장용 소프트웨어라고 말할 수 있다. 플러그인은 자체적인 실행능력은 없지만 특정한 프로그램 속에서 함께 실행되어 기능을 발휘한다.
주로 응용 프로그램을 확장하는 기능을 만들게 하거나, 특정 기능을 지원하는 역할을 수행한다. 종종 응용 프로그램의 크기를 줄이기도 하고, 특히나 호환되지 않는 소프트웨어 혹은 코드를 응용 프로그램에서 분리하여 제작하기 위해 사용한다.
Package와 Plugin의 차이
우선 위에서 살펴본 바에 따르면 Package과 Plugin 모두 특정 부가 기능을 사용하기위해 별도로 제작된 프로그램 혹은 특정 기능의 집합이라고 볼 수 있다.
Flutter 공식 문서에는 이렇게 표현되어 있다
A plugin is a type of package—the full designation is plugin package, which is generally shortened to plugin.
플러그인은 패키지 중 하나의 타입이고 정식 명칭은 Plugin Package이다. 이를 축약하여 Plugin이라고 부른다.
즉 Plugin은 Package에 속하는 부분이라고 생각할 수 있다. Package가 Plugin을 포함하는 큰 영역이랄까...? 그럼 어떤 세부적인 차이로 인해 Plugin으로 분류되느냐 하면 아래와 같다.
A plugin package is a special kind of package that makes platform functionality available to the app. Plugin packages can be written for Android (using Kotlin or Java), iOS (using Swift or Objective-C), web, macOS, Windows, Linux, or any combination thereof.
플러그인 패키지는 플랫폼 기능을 앱에서 사용할 수 있도록 하는 특별한 종류의 패키지이다. 플러그인 패키지는 Android(Kotlin 또는 Java 사용), iOS(Swift 또는 Objective-C 사용), 웹, macOS, Windows, Linux 또는 이들의 조합용으로 작성할 수 있다.
고로 Plugin은 특정 기능은 기능이나, 우리가 Flutter에서 사용할 수 없는 Android, iOS, macOS, Windows, Linix 등 다른 플랫폼에서만 사용가능한 특별한 기능들을 가져와 사용할 수 있도록 제작하는 Package 종류라고 설명할 수 있을 것 같다.
Flutter에서의 Package 사용
Flutter 및 Dart는 공식적으로 패키지를 제공한다. 또한, 해당 패키지 저장소에 모든 사용자들이 직접 패키지를 올려 공유하거나 사용할 수 있도록 지원하고 있다.
Package는 프로젝트를 생성하면 같이 생성되는 pubspec.yaml 파일을 이용하여 사용할 수 있으며, 자세한 사용방법은 공식 문서에 잘 나와 있다 :)
참고