Flutter/Flutter 개발 기록

[Flutter] flutter plugin 만들기

딸기케잌🍓 2024. 5. 26. 16:13

flutter의 앱 관리 기능을 외부에서도 가져다 쓸 수 있게 패키지화 했던 개발 기록기이다.

 

문제점

일반적으로 IDE에서 만드는 New Flutter Project로 프로젝트를 생성할 경우

flutter를 이용해서 Running하는 애플리케이션을 만드는 용도로 생성이 된다.

이 구조로 flutter plugin을 만들려고 시도해서 꽤나 삽질을 했다.😂

 

pub.dev에서 가져온 플러그인도 내가 만드는 앱 관리 패키지에서 쓸 수 있어야 하고, 직접 만든 Plugin도 쓸 수 있어야 했는데

pub.dev에서 가져온 플러그인은 잘 실행이 되고, 직접 만든 플러그인은 MainActivity.kt 파일에서 코드가 실행되지 않는 문제점이 있었다.

 

 

 

해결 과정

내가 삽질했던 프로젝트의 구조(일반적인 방법으로 Flutter 프로젝트를 생성했을 때의 디렉터리 구조)는 다음과 같다.

 

 

이 구조로 flutter plugin을 만들지 말고 다음의 명령어로 프로젝트를 생성해야 한다.

flutter create --template=plugin --platforms=android -a kotlin app_management

 

명령어에 대한 더 자세한 설명은 공식 doc을 참고한다.

https://docs.flutter.dev/packages-and-plugins/developing-packages#step-1-create-the-package-1

 

Developing packages & plugins

How to write packages and plugins for Flutter.

docs.flutter.dev

 

 

 

위 명령어로 프로젝트 생성시 구조는 다음과 같다.

얼핏보면 비슷한데 plugin 프로젝트 구조에서는 LICENSE, CHANGELOG.md 파일, example 폴더등이 추가로 더 보인다.

pub.dev에 올라간 repo들에도 example 폴더가 있는데 개발자가 직접 example이란 폴더를 만든 것이 아니고, 이렇게 플러그인용 프로젝트를 기반으로 했기 때문이라고 추측된다.

 

android 폴더를 열어보면 다음과 같다.

예리한 분은 눈치챘을 수도 있는데 android 폴더 밑에 app폴더가 없다!! 

 

 

왼쪽이 flutter plugin용 프로젝트, 오른쪽이 일반 Flutter 프로젝트이다. 비교해보자.

앱을 만드는 것이 아니고 라이브러리를 만드는 것이기 때문에 debug, profile과 같은 폴더들도 plugin용 프로젝트에는 없고,

자동으로 [프로젝트이름Plugin]이라는 코틀린 파일이 생성된 것이 보인다.

 

루트 build.gradle 파일도 보면

플러그인용 프로젝트에는 다음과 같이 library라고 되어 있고

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

 

일반적인 앱 프로젝트에는 아래와 같이 application이라고 되어있는 것을 확인할 수 있다.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

 

 

 

pubspec.yaml에도 다음과 같은 추가적인 코드가 필요했다.

  plugin:
    platforms:
      android:
        package: com.example.flutter_plugin_example
        pluginClass: FlutterPluginExamplePlugin

 

 

 

위 설정들을 적용하고

example 폴더 안의 lib/main.dart에서 테스트용 앱을 만들면 된다.

 

모르면 어렵고 아니까 쉽다🤓

'Flutter > Flutter 개발 기록' 카테고리의 다른 글

[flutter] Isolate를 이용한 동시성 제어  (0) 2024.05.15