[Flutter] 플러그인에 안드로이드 네이티브 SDK 연동하기(.jar 라이브러리)

Tykan·2022년 7월 26일
0

네이티브 SDK를 플러터 SDK로 만들기 시리즈를 정리만 해놓고 포스팅을 못 했다...😭
먼저 .jar로 아카이브된 안드로이드 네이티브 SDK를 연동하여 플러터 플러그인으로 만들어보자.

.jar로 패키징된 네이티브SDK 사용하기

AOS, iOS SDK를 직접 프로젝트에 넣을 수도 있지만, 프로젝트가 꽤 비대해진다.
그래서 각 네이티브 SDK와 연결해주는 Flutter 플러그인을 만들고 프로젝트는 해당 플러그인을 의존하도록 했다.

많은 네이티브 라이브러리들은 해당 패키지 저장소에서 Import한다.

특정 제품의 기능을 어플리케이션과 연동해야 하는데,
해당 제조사에서 SDK를 따로 저장소(mavenCentral 등)에 올리지 않고 파일로 전달해줘서 적용시켜야 하는 일이 생겼다.

이 시리즈를 시작하게 된 이유이기도 하다.

JAR와 AAR (feat.WAR)

JAR은 Java Archive로 JAVA 애플리케이션 배포를 위한 패키지 파일 형식이다.
대부분의 JAVA 프로젝트가 JAR 형태로 패키징한다.

프로젝트에 따라 특화된 패키징 형태도 존재한다.
Java로 백엔드를 만들어 봤다면 WAR라는 이름도 들어봤을 것이다.

WAR(Web Application Archive)는 웹어플리케이션 배포에 특화된 패키지 포맷이다.

Android 프로젝트에 특화된 패키지 포맷도 있지 않을까?
그게 AAR(Anroid Archive)이다.
AAR은 JAR와 달리 리소스 파일도 포함한다.

결국 AAR, WAR도 크게 보면 JAR의 일종이다.

.jar 파일 의존성 추가

우선 네이티브 코드에서 해당 SDK를 사용해야 하므로 네이티브 의존성을 설정해줘야 한다.

  1. 플러그인 프로젝트의 android/ 경로에 lib 디렉토리 생성

  2. android/lib/ 에 해당 jar 파일 추가

  3. android/build.gradle 파일의 dependencies에 하단 내용 추가

    ...
    
    dependencies {
      ...
      // 특정 jar 파일 추가
      implementation files('lib/test-sdk-1.0.0.jar')
      // lib 디렉토리 하위의 모든 jar를 추가하고 싶다면
      implementation fileTree(include: ['*.jar'], dir: 'lib')
      ...
    }
  4. gradle 의존성을 추가했으므로 Android Studio로 플러그인 프로젝트를 열어서 Gradle Sync 실행

이제 Java 또는 Kotlin 코드로 SDK를 사용할 수 있다.
Flutter에서 해당 네이티브 메서드를 잘 호출할 수 있도록 MethodChannel를 이용해서 코드를 작성해주면 된다.
Flutter 공식 문서를 봐도 잘 나온다.

profile
개발자 Theo :: 고민은 성장의 힘

0개의 댓글