مهاجرت برای اندروید

این راهنما نحوه مهاجرت از ML Kit به Firebase برای اندروید را توضیح می‌دهد.

به‌روزرسانی ایمپورت‌های گرادل

کیت توسعه نرم‌افزار ML Kit فقط برای هر API کیت ML به یک وابستگی نیاز دارد. نیازی به مشخص کردن کتابخانه‌های رایج مانند firebase-ml-vision یا firebase-ml-natural-language نیست. کیت ML از فضای نام com.google.android.gms برای کتابخانه‌هایی که به سرویس‌های Google Play وابسته هستند استفاده می‌کند.

رابط‌های برنامه‌نویسی کاربردی بینایی

مدل‌های بسته‌بندی‌شده به عنوان بخشی از برنامه شما ارائه می‌شوند. مدل‌های Thin باید دانلود شوند. برخی از APIها هم به صورت بسته‌بندی‌شده و هم به صورت Thin در دسترس هستند، برخی دیگر فقط به یکی از این دو شکل:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
تشخیص متن ایکس (بتا) ایکس
تشخیص چهره ایکس ایکس
اسکن بارکد ایکس ایکس
برچسب‌گذاری تصویر ایکس ایکس
تشخیص و ردیابی اشیاء ایکس -

وابستگی‌های کتابخانه‌های اندروید ML Kit را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) طبق جداول زیر به‌روزرسانی کنید:

مدل‌های بسته‌ای

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
اسکن بارکد 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.3.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.7
برچسب‌گذاری تصویر 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.9
تشخیص شیء 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.2

مدل‌های نازک

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
اسکن بارکد com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
تشخیص چهره 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.1

لبه AutoMLVision

رابط برنامه‌نویسی کاربردی مصنوع قدیمی مصنوع جدید
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.3
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.3

برای میزبانی و دانلود مدل‌های سفارشی، مدل‌های خود را به فضای ذخیره‌سازی ابری منتقل کنید و منطق دانلود را در برنامه خود اضافه کنید تا آنها را با استفاده از LocalModel بارگذاری کنید. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به فضای ذخیره‌سازی ابری مراجعه کنید.

API های زبان طبیعی

مدل‌های بسته‌بندی‌شده به عنوان بخشی از درخواست شما ارائه می‌شوند. مدل‌های نازک باید دانلود شوند:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
شناسه زبان ایکس ایکس
پاسخ هوشمند ایکس ایکس (بتا)

وابستگی‌های کتابخانه‌های اندروید ML Kit را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) طبق جداول زیر به‌روزرسانی کنید:

مدل‌های بسته‌ای

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
شناسه زبان 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.6
پاسخ هوشمند 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.4

مدل‌های نازک

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
شناسه زبان 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.labeler.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.LocalModel

نیاز به دانلود دستی دارد. مدل‌های ریموت میزبانی‌شده توسط Firebase منسوخ شده‌اند. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به Cloud Storage مراجعه کنید.
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 جایگزین کنید.

نام متدها را به‌روزرسانی کنید

تغییرات کد حداقلی هستند:

  • نمونه‌سازی Detector/scanner/labeler/translator... تغییر کرده است. اکنون هر ویژگی نقطه ورود خاص خود را دارد. برای مثال: 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) در جاوا استفاده کنید.
  • همه دستگیره‌ها (detector/scanner/labeler/translator...) قابل بستن هستند. مطمئن شوید که متد close() زمانی فراخوانی می‌شود که دیگر از آن اشیاء استفاده نمی‌شود. اگر از آنها در یک Fragment یا AppCompatActivity استفاده می‌کنید، یک راه برای انجام این کار فراخوانی LifecycleOwner.getLifecycle() در Fragment یا AppCompatActivity و سپس فراخوانی Lifecycle.addObserver است.
  • processImage() و detectInImage() در رابط‌های برنامه‌نویسی Vision برای سازگاری بیشتر به process() تغییر نام داده‌اند.
  • رابط‌های برنامه‌نویسی کاربردی زبان طبیعی (NLP) اکنون به جای «کد زبان» از اصطلاح «برچسب زبان» (مطابق تعریف استاندارد BCP 47 ) استفاده می‌کنند.
  • متدهای Getter در کلاس‌های xxxOptions حذف شده‌اند.
  • متد getBitmap() در کلاس InputImage (جایگزین FirebaseVisionImage ) دیگر به عنوان بخشی از رابط عمومی پشتیبانی نمی‌شود. برای دریافت تبدیل بیت‌مپ از ورودی‌های مختلف، به نمونه شروع سریع BitmapUtils.java در ML Kit مراجعه کنید.
  • FirebaseVisionImageMetadata حذف شده است، شما می‌توانید به سادگی متادیتای تصویر مانند width ، height ، rotationDegrees و format به متدهای ساخت InputImage ارسال کنید.

در اینجا چند نمونه از متدهای قدیمی و جدید کاتلین آورده شده است:

قدیمی

// 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 lifecycle 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())
  

در اینجا چند نمونه از متدهای قدیمی و جدید جاوا آورده شده است:

قدیمی

// 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 lifecycle 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

اسکن بارکد

برای API اسکن بارکد، اکنون دو روش برای تحویل مدل‌ها وجود دارد:

  • از طریق سرویس‌های گوگل پلی که به آن «thin» هم می‌گویند (توصیه می‌شود) - این کار حجم برنامه را کاهش می‌دهد و مدل بین برنامه‌ها به اشتراک گذاشته می‌شود. با این حال، توسعه‌دهندگان باید قبل از اولین استفاده از مدل، از دانلود آن اطمینان حاصل کنند.
  • با فایل APK برنامه شما که به آن "bundled" هم می‌گویند - این کار حجم برنامه را افزایش می‌دهد اما به این معنی است که مدل بلافاصله قابل استفاده است.

این دو پیاده‌سازی کمی متفاوت هستند، و نسخه «بسته‌ای» نسبت به نسخه «نازک» پیشرفت‌های زیادی دارد. جزئیات این تفاوت‌ها را می‌توانید در دستورالعمل‌های API اسکن بارکد بیابید.

تشخیص چهره

برای API تشخیص چهره، دو روش برای ارائه مدل‌ها وجود دارد:

  • از طریق سرویس‌های گوگل پلی که به آن «thin» هم می‌گویند (توصیه می‌شود) - این کار حجم برنامه را کاهش می‌دهد و مدل بین برنامه‌ها به اشتراک گذاشته می‌شود. با این حال، توسعه‌دهندگان باید قبل از اولین استفاده از مدل، از دانلود آن اطمینان حاصل کنند.
  • با فایل APK برنامه شما که به آن «بسته‌ای» هم می‌گویند - این کار حجم دانلود برنامه را افزایش می‌دهد اما به این معنی است که مدل بلافاصله قابل استفاده است.

رفتار پیاده‌سازی‌ها یکسان است.

ترجمه

  • TranslateLanguage اکنون به جای برچسب‌های زبان ( EN ) از نام‌های خوانا برای ثابت‌های خود (مثلاً ENGLISH ) استفاده می‌کند. همچنین اکنون آنها به جای @IntDef ، @StringDef هستند و مقدار ثابت ، برچسب زبان منطبق BCP 47 است.

برچسب‌گذاری خودکار تصویر (AutoML) (منسوخ شده)

دانلود مدل‌های سفارشی برای برچسب‌گذاری تصویر با استفاده از AutoML منسوخ شده است و در ۱۵ ژوئن ۲۰۲۷ لغو خواهد شد. شما باید از Cloud Storage برای میزبانی مدل‌ها استفاده کنید و منطق دانلود را به برنامه خود اضافه کنید تا مدل‌ها را دانلود کنید. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به Cloud Storage مراجعه کنید.

تشخیص و ردیابی اشیا

اگر برنامه شما از تشخیص شیء با طبقه‌بندی تقریبی استفاده می‌کند، توجه داشته باشید که SDK جدید نحوه‌ی بازگرداندن دسته‌بندی برای اشیاء شناسایی‌شده را تغییر داده است.

دسته بندی به عنوان نمونه ای از DetectedObject.Label به جای یک عدد صحیح برگردانده می شود. تمام دسته بندی های ممکن برای طبقه بندی کننده تقریبی در کلاس PredefinedCategory گنجانده شده اند.

در اینجا مثالی از کد قدیمی و جدید کاتلین آورده شده است:

قدیمی

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 را حذف کنید. این مراحل را دنبال کنید:

  • فایل پیکربندی Firebase را با حذف فایل پیکربندی google-services.json در دایرکتوری module (app-level) برنامه خود، حذف کنید.
  • افزونه‌ی Google Services Gradle را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) با افزونه‌ی Strict Version Matcher جایگزین کنید:

قبل از

plugins {
  id("com.android.application")
  id("com.google.gms.google-services")
}

android {
  // …
}

بعد از

plugins {
  id("com.android.application")
  id("com.google.android.gms.strict-version-matcher-plugin")
}

android {
  // …
}
  • مسیر کلاس افزونه Google Services Gradle را در فایل Gradle پروژه (سطح ریشه) خود ( build.gradle.kts ) با مسیر مربوط به افزونه Strict Version Matcher جایگزین کنید:

قبل از

buildscript {
  dependencies {
    // ...

    classpath("com.google.gms:google-services:4.3.3")
  }
}

بعد از

buildscript {
  dependencies {
    // ...
    classpath("com.google.android.gms:strict-version-matcher-plugin:1.2.1")
  }
}

طبق دستورالعمل‌های موجود در سایت پشتیبانی Firebase، برنامه Firebase خود را در کنسول Firebase حذف کنید.

دریافت کمک

اگر با هرگونه مشکلی مواجه شدید، لطفاً به صفحه انجمن ما مراجعه کنید، جایی که کانال‌های موجود برای ارتباط با ما را شرح داده‌ایم.

،

این راهنما نحوه مهاجرت از ML Kit به Firebase برای اندروید را توضیح می‌دهد.

به‌روزرسانی ایمپورت‌های گرادل

کیت توسعه نرم‌افزار ML Kit فقط برای هر API کیت ML به یک وابستگی نیاز دارد. نیازی به مشخص کردن کتابخانه‌های رایج مانند firebase-ml-vision یا firebase-ml-natural-language نیست. کیت ML از فضای نام com.google.android.gms برای کتابخانه‌هایی که به سرویس‌های Google Play وابسته هستند استفاده می‌کند.

رابط‌های برنامه‌نویسی کاربردی بینایی

مدل‌های بسته‌بندی‌شده به عنوان بخشی از برنامه شما ارائه می‌شوند. مدل‌های Thin باید دانلود شوند. برخی از APIها هم به صورت بسته‌بندی‌شده و هم به صورت Thin در دسترس هستند، برخی دیگر فقط به یکی از این دو شکل:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
تشخیص متن ایکس (بتا) ایکس
تشخیص چهره ایکس ایکس
اسکن بارکد ایکس ایکس
برچسب‌گذاری تصویر ایکس ایکس
تشخیص و ردیابی اشیاء ایکس -

وابستگی‌های کتابخانه‌های اندروید ML Kit را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) طبق جداول زیر به‌روزرسانی کنید:

مدل‌های بسته‌ای

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
اسکن بارکد 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.3.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.7
برچسب‌گذاری تصویر 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.9
تشخیص شیء 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.2

مدل‌های نازک

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
اسکن بارکد com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
تشخیص چهره 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.1

لبه AutoMLVision

رابط برنامه‌نویسی کاربردی مصنوع قدیمی مصنوع جدید
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.3
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.3

برای میزبانی و دانلود مدل‌های سفارشی، مدل‌های خود را به فضای ذخیره‌سازی ابری منتقل کنید و منطق دانلود را در برنامه خود اضافه کنید تا آنها را با استفاده از LocalModel بارگذاری کنید. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به فضای ذخیره‌سازی ابری مراجعه کنید.

API های زبان طبیعی

مدل‌های بسته‌بندی‌شده به عنوان بخشی از درخواست شما ارائه می‌شوند. مدل‌های نازک باید دانلود شوند:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
شناسه زبان ایکس ایکس
پاسخ هوشمند ایکس ایکس (بتا)

وابستگی‌های کتابخانه‌های اندروید ML Kit را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) طبق جداول زیر به‌روزرسانی کنید:

مدل‌های بسته‌ای

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
شناسه زبان 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.6
پاسخ هوشمند 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.4

مدل‌های نازک

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
شناسه زبان 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.labeler.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.LocalModel

نیاز به دانلود دستی دارد. مدل‌های ریموت میزبانی‌شده توسط Firebase منسوخ شده‌اند. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به Cloud Storage مراجعه کنید.
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 جایگزین کنید.

نام متدها را به‌روزرسانی کنید

تغییرات کد حداقلی هستند:

  • نمونه‌سازی Detector/scanner/labeler/translator... تغییر کرده است. اکنون هر ویژگی نقطه ورود خاص خود را دارد. برای مثال: 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) در جاوا استفاده کنید.
  • همه دستگیره‌ها (detector/scanner/labeler/translator...) قابل بستن هستند. مطمئن شوید که متد close() زمانی فراخوانی می‌شود که دیگر از آن اشیاء استفاده نمی‌شود. اگر از آنها در یک Fragment یا AppCompatActivity استفاده می‌کنید، یک راه برای انجام این کار فراخوانی LifecycleOwner.getLifecycle() در Fragment یا AppCompatActivity و سپس فراخوانی Lifecycle.addObserver است.
  • processImage() و detectInImage() در رابط‌های برنامه‌نویسی Vision برای سازگاری بیشتر به process() تغییر نام داده‌اند.
  • رابط‌های برنامه‌نویسی کاربردی زبان طبیعی (NLP) اکنون به جای «کد زبان» از اصطلاح «برچسب زبان» (مطابق تعریف استاندارد BCP 47 ) استفاده می‌کنند.
  • متدهای Getter در کلاس‌های xxxOptions حذف شده‌اند.
  • متد getBitmap() در کلاس InputImage (جایگزین FirebaseVisionImage ) دیگر به عنوان بخشی از رابط عمومی پشتیبانی نمی‌شود. برای دریافت تبدیل بیت‌مپ از ورودی‌های مختلف، به نمونه شروع سریع BitmapUtils.java در ML Kit مراجعه کنید.
  • FirebaseVisionImageMetadata حذف شده است، شما می‌توانید به سادگی متادیتای تصویر مانند width ، height ، rotationDegrees و format به متدهای ساخت InputImage ارسال کنید.

در اینجا چند نمونه از متدهای قدیمی و جدید کاتلین آورده شده است:

قدیمی

// 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 lifecycle 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())
  

در اینجا چند نمونه از متدهای قدیمی و جدید جاوا آورده شده است:

قدیمی

// 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 lifecycle 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

اسکن بارکد

برای API اسکن بارکد، اکنون دو روش برای تحویل مدل‌ها وجود دارد:

  • از طریق سرویس‌های گوگل پلی که به آن «thin» هم می‌گویند (توصیه می‌شود) - این کار حجم برنامه را کاهش می‌دهد و مدل بین برنامه‌ها به اشتراک گذاشته می‌شود. با این حال، توسعه‌دهندگان باید قبل از اولین استفاده از مدل، از دانلود آن اطمینان حاصل کنند.
  • با فایل APK برنامه شما که به آن "bundled" هم می‌گویند - این کار حجم برنامه را افزایش می‌دهد اما به این معنی است که مدل بلافاصله قابل استفاده است.

این دو پیاده‌سازی کمی متفاوت هستند، و نسخه «بسته‌ای» نسبت به نسخه «نازک» پیشرفت‌های زیادی دارد. جزئیات این تفاوت‌ها را می‌توانید در دستورالعمل‌های API اسکن بارکد بیابید.

تشخیص چهره

برای API تشخیص چهره، دو روش برای ارائه مدل‌ها وجود دارد:

  • از طریق سرویس‌های گوگل پلی که به آن «thin» هم می‌گویند (توصیه می‌شود) - این کار حجم برنامه را کاهش می‌دهد و مدل بین برنامه‌ها به اشتراک گذاشته می‌شود. با این حال، توسعه‌دهندگان باید قبل از اولین استفاده از مدل، از دانلود آن اطمینان حاصل کنند.
  • با فایل APK برنامه شما که به آن «بسته‌ای» هم می‌گویند - این کار حجم دانلود برنامه را افزایش می‌دهد اما به این معنی است که مدل بلافاصله قابل استفاده است.

رفتار پیاده‌سازی‌ها یکسان است.

ترجمه

  • TranslateLanguage اکنون به جای برچسب‌های زبان ( EN ) از نام‌های خوانا برای ثابت‌های خود (مثلاً ENGLISH ) استفاده می‌کند. همچنین اکنون آنها به جای @IntDef ، @StringDef هستند و مقدار ثابت ، برچسب زبان منطبق BCP 47 است.

برچسب‌گذاری خودکار تصویر (AutoML) (منسوخ شده)

دانلود مدل‌های سفارشی برای برچسب‌گذاری تصویر با استفاده از AutoML منسوخ شده است و در ۱۵ ژوئن ۲۰۲۷ لغو خواهد شد. شما باید از Cloud Storage برای میزبانی مدل‌ها استفاده کنید و منطق دانلود را به برنامه خود اضافه کنید تا مدل‌ها را دانلود کنید. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به Cloud Storage مراجعه کنید.

تشخیص و ردیابی اشیا

اگر برنامه شما از تشخیص شیء با طبقه‌بندی تقریبی استفاده می‌کند، توجه داشته باشید که SDK جدید نحوه‌ی بازگرداندن دسته‌بندی برای اشیاء شناسایی‌شده را تغییر داده است.

دسته بندی به عنوان نمونه ای از DetectedObject.Label به جای یک عدد صحیح برگردانده می شود. تمام دسته بندی های ممکن برای طبقه بندی کننده تقریبی در کلاس PredefinedCategory گنجانده شده اند.

در اینجا مثالی از کد قدیمی و جدید کاتلین آورده شده است:

قدیمی

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 را حذف کنید. این مراحل را دنبال کنید:

  • فایل پیکربندی Firebase را با حذف فایل پیکربندی google-services.json در دایرکتوری module (app-level) برنامه خود، حذف کنید.
  • افزونه‌ی Google Services Gradle را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) با افزونه‌ی Strict Version Matcher جایگزین کنید:

قبل از

plugins {
  id("com.android.application")
  id("com.google.gms.google-services")
}

android {
  // …
}

بعد از

plugins {
  id("com.android.application")
  id("com.google.android.gms.strict-version-matcher-plugin")
}

android {
  // …
}
  • مسیر کلاس افزونه Google Services Gradle را در فایل Gradle پروژه (سطح ریشه) خود ( build.gradle.kts ) با مسیر مربوط به افزونه Strict Version Matcher جایگزین کنید:

قبل از

buildscript {
  dependencies {
    // ...

    classpath("com.google.gms:google-services:4.3.3")
  }
}

بعد از

buildscript {
  dependencies {
    // ...
    classpath("com.google.android.gms:strict-version-matcher-plugin:1.2.1")
  }
}

طبق دستورالعمل‌های موجود در سایت پشتیبانی Firebase، برنامه Firebase خود را در کنسول Firebase حذف کنید.

دریافت کمک

اگر با هرگونه مشکلی مواجه شدید، لطفاً به صفحه انجمن ما مراجعه کنید، جایی که کانال‌های موجود برای ارتباط با ما را شرح داده‌ایم.

،

این راهنما نحوه مهاجرت از ML Kit به Firebase برای اندروید را توضیح می‌دهد.

به‌روزرسانی ایمپورت‌های گرادل

کیت توسعه نرم‌افزار ML Kit فقط برای هر API کیت ML به یک وابستگی نیاز دارد. نیازی به مشخص کردن کتابخانه‌های رایج مانند firebase-ml-vision یا firebase-ml-natural-language نیست. کیت ML از فضای نام com.google.android.gms برای کتابخانه‌هایی که به سرویس‌های Google Play وابسته هستند استفاده می‌کند.

رابط‌های برنامه‌نویسی کاربردی بینایی

مدل‌های بسته‌بندی‌شده به عنوان بخشی از برنامه شما ارائه می‌شوند. مدل‌های Thin باید دانلود شوند. برخی از APIها هم به صورت بسته‌بندی‌شده و هم به صورت Thin در دسترس هستند، برخی دیگر فقط به یکی از این دو شکل:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
تشخیص متن ایکس (بتا) ایکس
تشخیص چهره ایکس ایکس
اسکن بارکد ایکس ایکس
برچسب‌گذاری تصویر ایکس ایکس
تشخیص و ردیابی اشیاء ایکس -

وابستگی‌های کتابخانه‌های اندروید ML Kit را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) طبق جداول زیر به‌روزرسانی کنید:

مدل‌های بسته‌ای

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
اسکن بارکد 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.3.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.7
برچسب‌گذاری تصویر 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.9
تشخیص شیء 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.2

مدل‌های نازک

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
اسکن بارکد com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
تشخیص چهره 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.1

لبه AutoMLVision

رابط برنامه‌نویسی کاربردی مصنوع قدیمی مصنوع جدید
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.3
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.3

برای میزبانی و دانلود مدل‌های سفارشی، مدل‌های خود را به فضای ذخیره‌سازی ابری منتقل کنید و منطق دانلود را در برنامه خود اضافه کنید تا آنها را با استفاده از LocalModel بارگذاری کنید. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به فضای ذخیره‌سازی ابری مراجعه کنید.

API های زبان طبیعی

مدل‌های بسته‌بندی‌شده به عنوان بخشی از درخواست شما ارائه می‌شوند. مدل‌های نازک باید دانلود شوند:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
شناسه زبان ایکس ایکس
پاسخ هوشمند ایکس ایکس (بتا)

وابستگی‌های کتابخانه‌های اندروید ML Kit را در فایل Gradle ماژول (سطح برنامه) خود (معمولاً app/build.gradle.kts ) طبق جداول زیر به‌روزرسانی کنید:

مدل‌های بسته‌ای

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
شناسه زبان 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.6
پاسخ هوشمند 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.4

مدل‌های نازک

رابط برنامه‌نویسی کاربردی آثار باستانی مصنوع جدید
شناسه زبان 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.labeler.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.LocalModel

نیاز به دانلود دستی دارد. مدل‌های ریموت میزبانی‌شده توسط Firebase منسوخ شده‌اند. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به Cloud Storage مراجعه کنید.
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 جایگزین کنید.

نام متدها را به‌روزرسانی کنید

تغییرات کد حداقلی هستند:

  • نمونه‌سازی Detector/scanner/labeler/translator... تغییر کرده است. اکنون هر ویژگی نقطه ورود خاص خود را دارد. برای مثال: 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) در جاوا استفاده کنید.
  • همه دستگیره‌ها (detector/scanner/labeler/translator...) قابل بستن هستند. مطمئن شوید که متد close() زمانی فراخوانی می‌شود که دیگر از آن اشیاء استفاده نمی‌شود. اگر از آنها در یک Fragment یا AppCompatActivity استفاده می‌کنید، یک راه برای انجام این کار فراخوانی LifecycleOwner.getLifecycle() در Fragment یا AppCompatActivity و سپس فراخوانی Lifecycle.addObserver است.
  • processImage() و detectInImage() در رابط‌های برنامه‌نویسی Vision برای سازگاری بیشتر به process() تغییر نام داده‌اند.
  • رابط‌های برنامه‌نویسی کاربردی زبان طبیعی (NLP) اکنون به جای «کد زبان» از اصطلاح «برچسب زبان» (مطابق تعریف استاندارد BCP 47 ) استفاده می‌کنند.
  • متدهای Getter در کلاس‌های xxxOptions حذف شده‌اند.
  • متد getBitmap() در کلاس InputImage (جایگزین FirebaseVisionImage ) دیگر به عنوان بخشی از رابط عمومی پشتیبانی نمی‌شود. برای دریافت تبدیل بیت‌مپ از ورودی‌های مختلف، به نمونه شروع سریع BitmapUtils.java در ML Kit مراجعه کنید.
  • FirebaseVisionImageMetadata حذف شده است، شما می‌توانید به سادگی متادیتای تصویر مانند width ، height ، rotationDegrees و format به متدهای ساخت InputImage ارسال کنید.

در اینجا چند نمونه از متدهای قدیمی و جدید کاتلین آورده شده است:

قدیمی

// 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 lifecycle 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())
  

در اینجا چند نمونه از متدهای قدیمی و جدید جاوا آورده شده است:

قدیمی

// 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 lifecycle 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

اسکن بارکد

برای API اسکن بارکد، اکنون دو روش برای تحویل مدل‌ها وجود دارد:

  • از طریق سرویس‌های گوگل پلی که به آن «thin» هم می‌گویند (توصیه می‌شود) - این کار حجم برنامه را کاهش می‌دهد و مدل بین برنامه‌ها به اشتراک گذاشته می‌شود. با این حال، توسعه‌دهندگان باید قبل از اولین استفاده از مدل، از دانلود آن اطمینان حاصل کنند.
  • با فایل APK برنامه شما که به آن "bundled" هم می‌گویند - این کار حجم برنامه را افزایش می‌دهد اما به این معنی است که مدل بلافاصله قابل استفاده است.

این دو پیاده‌سازی کمی متفاوت هستند، و نسخه «بسته‌ای» نسبت به نسخه «نازک» پیشرفت‌های زیادی دارد. جزئیات این تفاوت‌ها را می‌توانید در دستورالعمل‌های API اسکن بارکد بیابید.

تشخیص چهره

برای API تشخیص چهره، دو روش برای ارائه مدل‌ها وجود دارد:

  • از طریق سرویس‌های گوگل پلی که به آن «thin» هم می‌گویند (توصیه می‌شود) - این کار حجم برنامه را کاهش می‌دهد و مدل بین برنامه‌ها به اشتراک گذاشته می‌شود. با این حال، توسعه‌دهندگان باید قبل از اولین استفاده از مدل، از دانلود آن اطمینان حاصل کنند.
  • با فایل APK برنامه شما که به آن «بسته‌ای» هم می‌گویند - این کار حجم دانلود برنامه را افزایش می‌دهد اما به این معنی است که مدل بلافاصله قابل استفاده است.

رفتار پیاده‌سازی‌ها یکسان است.

ترجمه

  • TranslateLanguage اکنون به جای برچسب‌های زبان ( EN ) از نام‌های خوانا برای ثابت‌های خود (مثلاً ENGLISH ) استفاده می‌کند. همچنین اکنون آنها به جای @IntDef ، @StringDef هستند و مقدار ثابت ، برچسب زبان منطبق BCP 47 است.

برچسب‌گذاری خودکار تصویر (AutoML) (منسوخ شده)

دانلود مدل‌های سفارشی برای برچسب‌گذاری تصویر با استفاده از AutoML منسوخ شده است و در ۱۵ ژوئن ۲۰۲۷ لغو خواهد شد. شما باید از Cloud Storage برای میزبانی مدل‌ها استفاده کنید و منطق دانلود را به برنامه خود اضافه کنید تا مدل‌ها را دانلود کنید. برای جزئیات بیشتر، به راهنمای مهاجرت Firebase ML به Cloud Storage مراجعه کنید.

تشخیص و ردیابی اشیا

اگر برنامه شما از تشخیص شیء با طبقه‌بندی تقریبی استفاده می‌کند، توجه داشته باشید که SDK جدید نحوه‌ی بازگرداندن دسته‌بندی برای اشیاء شناسایی‌شده را تغییر داده است.

دسته بندی به عنوان نمونه ای از DetectedObject.Label به جای یک عدد صحیح برگردانده می شود. تمام دسته بندی های ممکن برای طبقه بندی کننده تقریبی در کلاس PredefinedCategory گنجانده شده اند.

در اینجا مثالی از کد قدیمی و جدید کاتلین آورده شده است:

قدیمی

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 را حذف کنید

Remove the Firebase dependencies after the migration. Follow these steps:

  • Remove the Firebase configuration file by deleting the google-services.json config file at the module (app-level) directory of your app.
  • Replace the Google Services Gradle plugin in your module (app-level) Gradle file (usually app/build.gradle.kts ) with the Strict Version Matcher plugin:

قبل از

plugins {
  id("com.android.application")
  id("com.google.gms.google-services")
}

android {
  // …
}

بعد از

plugins {
  id("com.android.application")
  id("com.google.android.gms.strict-version-matcher-plugin")
}

android {
  // …
}
  • Replace the Google Services Gradle plugin classpath in your project (root-level) Gradle file ( build.gradle.kts ) with the one for the Strict Version Matcher plugin:

قبل از

buildscript {
  dependencies {
    // ...

    classpath("com.google.gms:google-services:4.3.3")
  }
}

بعد از

buildscript {
  dependencies {
    // ...
    classpath("com.google.android.gms:strict-version-matcher-plugin:1.2.1")
  }
}

Delete your Firebase app at the Firebase console according to the instructions on the Firebase support site.

دریافت کمک

If you run into any issues, please check out our Community page where we outline the channels available for getting in touch with us.

،

This guide explains how to migrate away from ML Kit for Firebase for Android.

Update gradle imports

The ML Kit SDK only requires one dependency for each ML Kit API. You don't need to specify common libraries like firebase-ml-vision or firebase-ml-natural-language . ML Kit uses the com.google.android.gms namespace for libraries that depend on Google Play services.

Vision APIs

Bundled models are delivered as part of your application. Thin models must be downloaded. Some APIs are available in both bundled and thin form, others only in one form or the other:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
تشخیص متن x (beta) ایکس
تشخیص چهره ایکس ایکس
اسکن بارکد ایکس ایکس
برچسب‌گذاری تصویر ایکس ایکس
Object detection and tracking ایکس -

Update the dependencies for the ML Kit Android libraries in your module (app- level) Gradle file (usually app/build.gradle.kts ) according to the following tables:

Bundled models

رابط برنامه‌نویسی کاربردی Old Artifacts New Artifact
اسکن بارکد 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.3.0
Face contour 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.7
برچسب‌گذاری تصویر 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.9
تشخیص شیء 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.2

Thin models

رابط برنامه‌نویسی کاربردی Old Artifacts New Artifact
اسکن بارکد com.google.firebase:firebase-ml-vision:24.0.1 com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
تشخیص چهره 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.1

AutoMLVision Edge

رابط برنامه‌نویسی کاربردی Old Artifact New Artifact
AutoML without downloading 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.3
AutoML with downloading 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.3

To host and download custom models, move your models to Cloud Storage and add download logic in your app to load them using LocalModel . For details, see the Firebase ML to Cloud Storage migration guide .

Natural Language APIs

Bundled models are delivered as part of your application. Thin models must be downloaded:

رابط برنامه‌نویسی کاربردی بسته‌بندی شده نازک
Language ID ایکس ایکس
پاسخ هوشمند ایکس x (beta)

Update the dependencies for the ML Kit Android libraries in your module (app- level) Gradle file (usually app/build.gradle.kts ) according to the following tables:

Bundled models

رابط برنامه‌نویسی کاربردی Old Artifacts New Artifact
Language 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.6
پاسخ هوشمند 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.4

Thin models

رابط برنامه‌نویسی کاربردی Old Artifacts New Artifact
Language 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

Update class names

If your class appears in this table, make the indicated change:

Old class New class
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.LocalModel

Requires manual download. Firebase-hosted remote models are deprecated. For details, see the Firebase ML to Cloud Storage migration guide .
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

For other classes, follow these rules:

  • Remove the FirebaseVision prefix from the class name.
  • Remove other prefixes that start with Firebase prefix from the class name.

Also, in package names replace the com.google.firebase.ml prefix with com.google.mlkit .

Update method names

There are minimal code changes:

  • Detector/scanner/labeler/translator... instantiation has been changed. Each feature now has its own entry point. For example: BarcodeScanning , TextRecognition , ImageLabeling , Translation ... Calls to Firebase service getInstance() are replaced by calls to the feature entry point's getClient() method.
  • Default instantiation for TextRecognizer has been removed, since we introduced additional libraries for recognizing other scripts like Chinese and Korean. To use default options with the Latin script text recognition model, declare a dependency on com.google.android.gms:play-services-mlkit-text-recognition and use TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS) .
  • Default instantiation for ImageLabeler and ObjectDetector has been removed, since we introduced custom model support for these two features. For example, to use default options with base model in ImageLabeling , declare a dependency on com.google.mlkit:image-labeling and use ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS) in Java.
  • All handles (detector/scanner/labeler/translator...) are closeable. Ensure that the close() method is called when those objects will no longer be used. If you are using them in a Fragment or AppCompatActivity , one way to do that is call LifecycleOwner.getLifecycle() on the Fragment or AppCompatActivity , and then call Lifecycle.addObserver .
  • processImage() and detectInImage() in the Vision APIs have been renamed to process() for consistency.
  • The Natural Language APIs now use the term "language tag" (as defined by the BCP 47 standard ) instead of "language code".
  • Getter methods in xxxOptions classes have been removed.
  • getBitmap() method in the InputImage class (replacing FirebaseVisionImage ) is not supported anymore as part of the public interface. Refer to BitmapUtils.java in ML Kit quickstart sample to get bitmap converted from various inputs.
  • FirebaseVisionImageMetadata has been removed, you can just pass image metadata such as width , height , rotationDegrees , format into the InputImage 's construction methods.

Here are some examples of old and new Kotlin methods:

قدیمی

// 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 lifecycle 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())
  

Here are some examples of old and new Java methods:

قدیمی

// 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 lifecycle 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-specific changes

Barcode Scanning

For the Barcode Scanning API, there are now two ways the models can be delivered:

  • Through Google Play Services aka "thin" (recommended) - this reduces the app size and the model is shared between applications. However, developers will need to ensure that the model is downloaded before using it for the first time.
  • With your app's APK aka "bundled" - this increases the app size but it means the model is immediately usable.

The two implementations are slightly different, with the "bundled" version having a number of improvements over the "thin" version. Details on these differences can be found in the Barcode Scanning API guidelines.

تشخیص چهره

For the Face Detection API, there are two ways the models can be delivered:

  • Through Google Play Services aka "thin" (recommended) - this reduces the app size and the model is shared between applications. However, developers will need to ensure that the model is downloaded before using it for the first time.
  • With your app's APK aka "bundled" - this increases the app download size but it means the model is immediately usable.

The behavior of the implementations are the same.

ترجمه

  • TranslateLanguage now uses readable names for its constants (eg ENGLISH ) instead of language tags ( EN ). They are also now @StringDef , instead of @IntDef , and the value of the constant is the matching BCP 47 language tag .

AutoML Image Labeling (deprecated)

Downloading custom models for image labeling using AutoML is deprecated and will be turned down on June 15, 2027. You should use Cloud Storage to host models and add download logic to your app to download the models instead. For details, see the Firebase ML to Cloud Storage migration guide .

Object Detection and Tracking

If your app uses object detection with coarse classification, be aware that the new SDK has changed the way it returns the classification category for detected objects.

The classification category is returned as an instance of DetectedObject.Label instead of an integer. All possible categories for the coarse classifier are included in the PredefinedCategory class.

Here is an example of the old and new Kotlin code:

قدیمی

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) {
    ...
}

Here is an example of the old and new Java code:

قدیمی

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) {
    ...
}

The "unknown" category has been removed. When the confidence of an object's classification is low, we just don't return any label.

Remove Firebase dependencies

Remove the Firebase dependencies after the migration. Follow these steps:

  • Remove the Firebase configuration file by deleting the google-services.json config file at the module (app-level) directory of your app.
  • Replace the Google Services Gradle plugin in your module (app-level) Gradle file (usually app/build.gradle.kts ) with the Strict Version Matcher plugin:

قبل از

plugins {
  id("com.android.application")
  id("com.google.gms.google-services")
}

android {
  // …
}

بعد از

plugins {
  id("com.android.application")
  id("com.google.android.gms.strict-version-matcher-plugin")
}

android {
  // …
}
  • Replace the Google Services Gradle plugin classpath in your project (root-level) Gradle file ( build.gradle.kts ) with the one for the Strict Version Matcher plugin:

قبل از

buildscript {
  dependencies {
    // ...

    classpath("com.google.gms:google-services:4.3.3")
  }
}

بعد از

buildscript {
  dependencies {
    // ...
    classpath("com.google.android.gms:strict-version-matcher-plugin:1.2.1")
  }
}

Delete your Firebase app at the Firebase console according to the instructions on the Firebase support site.

دریافت کمک

If you run into any issues, please check out our Community page where we outline the channels available for getting in touch with us.