این راهنما نحوه مهاجرت از 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... فراخوانیهای سرویس FirebasegetInstance()با فراخوانیهای متد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... فراخوانیهای سرویس FirebasegetInstance()با فراخوانیهای متد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... فراخوانیهای سرویس FirebasegetInstance()با فراخوانیهای متد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.jsonconfig 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
FirebaseVisionprefix from the class name. - Remove other prefixes that start with
Firebaseprefix 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 servicegetInstance()are replaced by calls to the feature entry point'sgetClient()method. - Default instantiation for
TextRecognizerhas 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 oncom.google.android.gms:play-services-mlkit-text-recognitionand useTextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS). - Default instantiation for
ImageLabelerandObjectDetectorhas been removed, since we introduced custom model support for these two features. For example, to use default options with base model inImageLabeling, declare a dependency oncom.google.mlkit:image-labelingand useImageLabeling.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 aFragmentorAppCompatActivity, one way to do that is callLifecycleOwner.getLifecycle()on theFragmentorAppCompatActivity, and then callLifecycle.addObserver. -
processImage()anddetectInImage()in the Vision APIs have been renamed toprocess()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
xxxOptionsclasses have been removed. -
getBitmap()method in theInputImageclass (replacingFirebaseVisionImage) is not supported anymore as part of the public interface. Refer toBitmapUtils.javain ML Kit quickstart sample to get bitmap converted from various inputs. -
FirebaseVisionImageMetadatahas been removed, you can just pass image metadata such aswidth,height,rotationDegrees,formatinto theInputImage'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.
ترجمه
-
TranslateLanguagenow uses readable names for its constants (egENGLISH) 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.jsonconfig 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.