Android용 이전

Gradle 가져오기 업데이트

새 SDK에는 ML Kit API별로 종속 항목이 하나만 필요합니다. firebase-ml-vision 또는 firebase-ml-natural-language와 같은 공통 라이브러리는 지정할 필요가 없습니다. ML Kit는 Google Play 서비스에 종속된 라이브러리에 com.google.android.gms 네임스페이스를 사용합니다.

Vision API

번들 모델은 애플리케이션의 일부로 제공됩니다. 씬 모델을 다운로드해야 합니다. 일부 API는 번들 형식과 씬 형식으로 모두 사용할 수 있으며 다른 API는 한 가지 형식으로만 사용할 수 있습니다.

API번들가늘게
텍스트 인식x (베타)x
얼굴 인식xx
바코드 스캔xx
이미지 라벨 지정xx
객체 감지 및 추적x-

다음 표에 따라 모듈 (앱 수준) Gradle 파일 (일반적으로 app/build.gradle)에서 ML Kit Android 라이브러리의 종속 항목을 업데이트합니다.

번들 모델

API오래된 아티팩트새로운 아티팩트
바코드 스캔 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-barcode-model:16.0.1
com.google.mlkit:barcode-scanning:17.2.0
얼굴 윤곽 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-face-model:19.0.0
com.google.mlkit:face-detection:16.1.6
이미지 라벨 지정 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-image-label-model:19.0.0
com.google.mlkit:image-labeling:17.0.8
객체 감지 com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3
com.google.mlkit:object-detection:17.0.1

씬 모델

API오래된 아티팩트새로운 아티팩트
바코드 스캔 com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.0
얼굴 인식 com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-face-detection:17.1.0
텍스트 인식 com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-text-recognition:19.0.0

AutoMLVision Edge

API이전 아티팩트새로운 아티팩트
다운로드하지 않는 AutoML com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-automl:18.0.3
com.google.mlkit:image-labeling-custom:17.0.2
AutoML(다운로드 포함) com.google.firebase:firebase-ml-vision:24.0.1
com.google.firebase:firebase-ml-vision-automl:18.0.3
com.google.mlkit:image-labeling-custom:17.0.2
com.google.mlkit:linkfirebase:17.0.0

Natural Language API

번들 모델은 애플리케이션의 일부로 제공됩니다. 씬 모델을 다운로드해야 합니다.

API번들가늘게
언어 IDxx
스마트 답장xx (베타)

다음 표에 따라 모듈 (앱 수준) Gradle 파일 (일반적으로 app/build.gradle)에서 ML Kit Android 라이브러리의 종속 항목을 업데이트합니다.

번들 모델

API오래된 아티팩트새로운 아티팩트
언어 ID com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7
com.google.mlkit:language-id:17.0.5
스마트 답장 com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7
com.google.mlkit:smart-reply:17.0.3

씬 모델

API오래된 아티팩트새로운 아티팩트
언어 ID com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7
com.google.android.gms:play-services-mlkit-language-id:17.0.0
스마트 답장 com.google.firebase:firebase-ml-natural-language:22.0.0
com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7
com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1

클래스 이름 업데이트

클래스가 이 표에 표시되면 표시된 대로 변경합니다.

이전 클래스새 수업
com.google.firebase.ml.common.FirebaseMLException com.google.mlkit.common.MlKitException
com.google.firebase.ml.vision.common.FirebaseVisionImage com.google.mlkit.vision.common.InputImage
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector com.google.mlkit.vision.barcode.BarcodeScanner
com.google.firebase.ml.vision.labeler.FirebaseVisionImageLabel com.google.mlkit.vision.label.ImageLabeler
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector com.google.mlkit.vision.barcode.BarcodeScanner
com.google.firebase.ml.vision.automl.FirebaseAutoMLLocalModel com.google.mlkit.common.model.LocalModel
com.google.firebase.ml.vision.automl.FirebaseAutoMLRemoteModel com.google.mlkit.common.model.CustomRemoteModel
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions com.google.mlkit.vision.label.defaults.ImageLabelerOptions
com.google.firebase.ml.vision.label.FirebaseVisionImageLabel com.google.mlkit.vision.label.ImageLabel
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerOptions com.google.mlkit.vision.label.custom.CustomImageLabelerOptions
com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions

다른 클래스의 경우 다음 규칙을 따르세요.

  • 클래스 이름에서 FirebaseVision 접두사를 삭제합니다.
  • Firebase 접두사로 시작하는 다른 접두사를 클래스 이름에서 삭제합니다.

또한 패키지 이름에서 com.google.firebase.ml 접두사를 com.google.mlkit로 바꿉니다.

메서드 이름 업데이트

최소한의 코드 변경사항은 있습니다.

  • 감지기/스캐너/라벨러/번역기... 인스턴스화가 변경되었습니다. 이제 각 기능에 자체 진입점이 있습니다. 예: BarcodeScanning, TextRecognition, ImageLabeling, Translation.... Firebase 서비스 getInstance() 호출이 기능 진입점의 getClient() 메서드 호출로 대체됩니다.
  • 중국어 및 한국어와 같은 다른 스크립트를 인식하기 위한 추가 라이브러리가 도입되었기 때문에 TextRecognizer의 기본 인스턴스화가 삭제되었습니다. 라틴 스크립트 텍스트 인식 모델에서 기본 옵션을 사용하려면 com.google.android.gms:play-services-mlkit-text-recognition의 종속 항목을 선언하고 TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)를 사용하세요.
  • ImageLabeler 및 ObjectDetector의 기본 인스턴스화가 삭제되었습니다. 이 두 기능에 대한 커스텀 모델 지원을 도입했기 때문입니다. 예를 들어 ImageLabeling에서 기본 모델의 기본 옵션을 사용하려면 com.google.mlkit:image-labeling의 종속 항목을 선언하고 자바에서 ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)를 사용하세요.
  • 모든 핸들 (감지기/스캐너/라벨러/번역기 등)을 닫을 수 있습니다. 이러한 객체를 더 이상 사용하지 않을 때 close() 메서드가 호출되었는지 확인합니다. Fragment 또는 AppCompatActivity에서 이를 사용하는 경우 Fragment 또는 AppCompatActivity에서 LifecycleOwner.getLifecycle()을 호출한 다음 Lifecycle.addObserver를 호출하면 됩니다.
  • Vision API의 processImage()detectInImage() 이름이 일관성을 위해 process()로 변경되었습니다 .
  • 이제 Natural Language API에서는 '언어 코드' 대신 BCP 47 표준에 정의된 '언어 태그'라는 용어를 사용합니다.
  • xxxOptions 클래스의 getter 메서드가 삭제되었습니다.
  • InputImage 클래스의 getBitmap() 메서드(FirebaseVisionImage를 대체함)가 더 이상 공개 인터페이스의 일부로 지원되지 않습니다. 다양한 입력에서 변환된 비트맵을 가져오려면 ML Kit 빠른 시작 샘플BitmapUtils.java를 참고하세요.
  • firebaseImageMetadata가 삭제되었습니다. 너비, 높이, rotationDegrees, 형식과 같은 이미지 메타데이터를 InputImages의 생성 메서드에 전달하기만 하면 됩니다.

다음은 기존 Kotlin 메서드와 새로운 Kotlin 메서드의 몇 가지 예입니다.

변경 전

// Construct image labeler with base model and default options.
val imageLabeler = FirebaseVision.getInstance().onDeviceImageLabeler

// Construct object detector with base model and default options.
val objectDetector = FirebaseVision.getInstance().onDeviceObjectDetector

// Construct face detector with given options
val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options)

// Construct image labeler with local AutoML model
val localModel =
    FirebaseAutoMLLocalModel.Builder()
      .setAssetFilePath("automl/manifest.json")
      .build()
val autoMLImageLabeler =
    FirebaseVision.getInstance()
      .getOnDeviceAutoMLImageLabeler(
          FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel)
            .setConfidenceThreshold(0.3F)
            .build()
    )

신규

// Construct image labeler with base model and default options.
val imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
// Optional: add life cycle observer
lifecycle.addObserver(imageLabeler)

// Construct object detector with base model and default options.
val objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS)

// Construct face detector with given options
val faceDetector = FaceDetection.getClient(options)

// Construct image labeler with local AutoML model
val localModel =
  LocalModel.Builder()
    .setAssetManifestFilePath("automl/manifest.json")
    .build()
val autoMLImageLabeler =
  ImageLabeling.getClient(
    CustomImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.3F).build())
  

다음은 이전 Java 메서드와 새로운 Java 메서드의 몇 가지 예입니다.

변경 전

// Construct image labeler with base model and default options.
FirebaseVisionImageLabeler imagelLabeler =
     FirebaseVision.getInstance().getOnDeviceImageLabeler();

// Construct object detector with base model and default options.
FirebaseVisionObjectDetector objectDetector =
     FirebaseVision.getInstance().getOnDeviceObjectDetector();

// Construct face detector with given options
FirebaseVisionFaceDetector faceDetector =
     FirebaseVision.getInstance().getVisionFaceDetector(options);

// Construct image labeler with local AutoML model
FirebaseAutoMLLocalModel localModel =
    new FirebaseAutoMLLocalModel.Builder()
      .setAssetFilePath("automl/manifest.json")
      .build();
FirebaseVisionImageLabeler autoMLImageLabeler =
    FirebaseVision.getInstance()
      .getOnDeviceAutoMLImageLabeler(
          FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel)
            .setConfidenceThreshold(0.3F)
            .build());

신규

// Construct image labeler with base model and default options.
ImageLabeler imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS);
// Optional: add life cycle observer
getLifecycle().addObserver(imageLabeler);

// Construct object detector with base model and default options.
ObjectDetector objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS);

// Construct face detector with given options
FaceDetector faceDetector = FaceDetection.getClient(options);

// Construct image labeler with local AutoML model
LocalModel localModel =
  new LocalModel.Builder()
    .setAssetManifestFilePath("automl/manifest.json")
    .build();
ImageLabeler autoMLImageLabeler =
  ImageLabeling.getClient(
    new CustomImageLabelerOptions.Builder(localModel)
    .setConfidenceThreshold(0.3F).build());
  

API별 변경사항

바코드 스캔

Barcode Scanning API의 경우 이제 두 가지 방법으로 모델을 전달할 수 있습니다.

  • '얇은' Google Play 서비스 사용(권장) - 앱 크기가 줄어들고 애플리케이션 간에 모델이 공유됩니다. 그러나 개발자는 모델을 처음 사용하기 전에 모델을 다운로드해야 합니다.
  • 앱의 APK를 '번들형'이라고 하는 경우: 앱 크기는 늘어나지만 모델을 즉시 사용할 수 있습니다.

두 구현은 약간 다릅니다. '번들' 버전은 '씬' 버전에 비해 많은 개선사항이 있습니다. 이러한 차이점에 대한 자세한 내용은 Barcode Scanning API 가이드라인에서 확인할 수 있습니다.

얼굴 인식

Face Detection API의 경우 두 가지 방법으로 모델을 제공할 수 있습니다.

  • '얇은' Google Play 서비스 사용(권장) - 앱 크기가 줄어들고 애플리케이션 간에 모델이 공유됩니다. 그러나 개발자는 모델을 처음 사용하기 전에 모델을 다운로드해야 합니다.
  • 앱의 APK('번들형'이라고도 함)를 사용하면 앱 다운로드 크기가 늘어나지만 모델을 즉시 사용할 수 있습니다.

구현 동작은 동일합니다.

번역과

  • 이제 TranslateLanguage에서 언어 태그 (EN) 대신 상수에 읽을 수 있는 이름 (예: ENGLISH)을 사용합니다. 또한 @IntDef가 아닌 @StringDef이며, 상수 값은 일치하는 BCP 47 언어 태그입니다.

  • 앱에서 '기기 유휴 상태' 다운로드 조건 옵션을 사용하는 경우 이 옵션은 삭제되었으며 더 이상 사용할 수 없다는 점에 유의하세요. '기기 충전' 옵션은 계속 사용할 수 있습니다. 더 복잡한 동작을 원한다면 자체 로직 뒤에서 RemoteModelManager.download 호출을 지연하면 됩니다.

AutoML 이미지 라벨 지정

앱에서 '기기 유휴 상태' 다운로드 조건 옵션을 사용하는 경우 이 옵션은 삭제되었으며 더 이상 사용할 수 없습니다. '기기 충전' 옵션은 계속 사용할 수 있습니다.

더 복잡한 동작을 원한다면 자체 로직 뒤에서 RemoteModelManager.download 호출을 지연할 수 있습니다.

객체 감지 및 추적

앱에서 대략적인 분류와 함께 객체 감지를 사용하는 경우 새 SDK에서 감지된 객체의 분류 카테고리를 반환하는 방식을 변경했다는 점에 유의하세요.

분류 카테고리는 정수 대신 DetectedObject.Label의 인스턴스로 반환됩니다. 대략적 분류기에 사용할 수 있는 모든 카테고리는 PredefinedCategory 클래스에 포함됩니다.

다음은 이전 Kotlin 코드와 새 Kotlin 코드의 예입니다.

변경 전

if (object.classificationCategory == FirebaseVisionObject.CATEGORY_FOOD) {
    ...
}

신규

if (!object.labels.isEmpty() && object.labels[0].text == PredefinedCategory.FOOD) {
    ...
}
// or
if (!object.labels.isEmpty() && object.labels[0].index == PredefinedCategory.FOOD_INDEX) {
    ...
}

다음은 이전 자바 코드와 새로운 자바 코드의 예입니다.

변경 전

if (object.getClassificationCategory() == FirebaseVisionObject.CATEGORY_FOOD) {
    ...
}

신규

if (!object.getLabels().isEmpty()
    && object.getLabels().get(0).getText().equals(PredefinedCategory.FOOD)) {
    ...
}
// or
if (!object.getLabels().isEmpty()
    && object.getLabels().get(0).getIndex() == PredefinedCategory.FOOD_INDEX) {
    ...
}

'알 수 없음' 카테고리는 삭제되었습니다. 객체 분류의 신뢰도가 낮으면 라벨을 반환하지 않습니다.

Firebase 종속 항목 삭제 (선택사항)

이 단계는 다음 조건이 충족되는 경우에만 적용됩니다.

  • Firebase ML Kit만 사용하는 Firebase 구성요소입니다.
  • 온디바이스 API만 사용합니다.
  • 모델 서빙을 사용하지 않습니다.

이 경우 마이그레이션 후 Firebase 종속 항목을 삭제할 수 있습니다. 다음 단계를 따르세요.

  • 앱의 모듈 (앱 수준) 디렉터리에서 google-services.json 구성 파일을 삭제하여 Firebase 구성 파일을 삭제합니다.
  • 모듈 (앱 수준) Gradle 파일 (일반적으로 app/build.gradle)의 Google 서비스 Gradle 플러그인을 Strict Version Matcher 플러그인으로 바꿉니다.

변경 전

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

android {
  // …
}

변경 후

apply plugin: 'com.android.application'
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'

android {
  // …
}
  • 프로젝트 (루트 수준) Gradle 파일 (build.gradle)의 Google 서비스 Gradle 플러그인 클래스 경로를 Strict Version Matcher 플러그인의 클래스 경로로 바꿉니다.

변경 전

buildscript {
  dependencies {
    // ...

    classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
  }
}

변경 후

buildscript {
  dependencies {
    // ...

    classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1'
  }
}

Firebase 지원 사이트의 instructions에 따라 Firebase Console에서 Firebase 앱을 삭제합니다.

도움말 보기

문제가 발생할 경우 문의할 수 있는 채널이 안내된 커뮤니티 페이지를 확인하세요.