এই নির্দেশিকায় ব্যাখ্যা করা হয়েছে কীভাবে অ্যান্ড্রয়েডের জন্য এমএল কিট ফর ফায়ারবেস থেকে সরে এসে অন্য কোনো প্রযুক্তি ব্যবহার শুরু করা যায়।
গ্রেডল ইম্পোর্ট আপডেট করুন
এমএল কিট এসডিকে-তে প্রতিটি এমএল কিট এপিআই-এর জন্য শুধুমাত্র একটি ডিপেন্ডেন্সি প্রয়োজন হয়। আপনাকে firebase-ml-vision বা firebase-ml-natural-language এর মতো সাধারণ লাইব্রেরিগুলো নির্দিষ্ট করে দেওয়ার প্রয়োজন নেই। যেসব লাইব্রেরি গুগল প্লে সার্ভিসের উপর নির্ভরশীল, এমএল কিট সেগুলোর জন্য com.google.android.gms নেমস্পেস ব্যবহার করে।
ভিশন এপিআই
বান্ডেল মডেলগুলো আপনার অ্যাপ্লিকেশনের অংশ হিসেবে সরবরাহ করা হয়। থিন মডেলগুলো ডাউনলোড করতে হয়। কিছু এপিআই বান্ডেল এবং থিন উভয় রূপেই পাওয়া যায়, অন্যগুলো কেবল একটি রূপে উপলব্ধ:
| এপিআই | বান্ডিল | পাতলা |
|---|---|---|
| পাঠ্য শনাক্তকরণ | x (বিটা) | x |
| মুখ শনাক্তকরণ | x | x |
| বারকোড স্ক্যানিং | x | x |
| ছবির লেবেলিং | x | x |
| বস্তু সনাক্তকরণ এবং ট্র্যাকিং | x | - |
নিম্নলিখিত সারণি অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত 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 |
অটোএমএলভিশন এজ
| এপিআই | পুরানো নিদর্শন | নতুন নিদর্শন |
|---|---|---|
| ডাউনলোড ছাড়াই অটোএমএল | 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 |
| ডাউনলোড সহ অটোএমএল | 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 to Cloud Storage মাইগ্রেশন গাইডটি দেখুন। |
প্রাকৃতিক ভাষা এপিআই
বান্ডেল মডেলগুলো আপনার অ্যাপ্লিকেশনের অংশ হিসেবে সরবরাহ করা হয়। থিন মডেলগুলো ডাউনলোড করতে হবে:
| এপিআই | বান্ডিল | পাতলা |
|---|---|---|
| ভাষা আইডি | x | x |
| স্মার্ট উত্তর | x | x (বিটা) |
নিম্নলিখিত সারণি অনুসারে আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত 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.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 ম্যানুয়াল ডাউনলোডের প্রয়োজন। ফায়ারবেস-হোস্টেড রিমোট মডেলগুলো এখন আর ব্যবহারযোগ্য নয়। বিস্তারিত জানতে, ফায়ারবেস এমএল থেকে ক্লাউড স্টোরেজ মাইগ্রেশন গাইডটি দেখুন। |
| com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions | com.google.mlkit.vision.label.defaults.ImageLabelerOptions |
| com.google.firebase.ml.vision.label.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabel |
| com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerOptions | com.google.mlkit.vision.label.custom.CustomImageLabelerOptions |
| com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions | com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions |
অন্যান্য ক্লাসের জন্য এই নিয়মগুলো অনুসরণ করুন:
- ক্লাসের নাম থেকে
FirebaseVisionপ্রিফিক্সটি সরিয়ে দিন। - ক্লাস নেম থেকে
Firebaseপ্রিফিক্স দিয়ে শুরু হওয়া অন্যান্য প্রিফিক্সগুলো সরিয়ে দিন।
এছাড়াও, প্যাকেজের নামগুলিতে com.google.firebase.ml প্রিফিক্সটি com.google.mlkit দিয়ে প্রতিস্থাপন করুন।
পদ্ধতির নাম আপডেট করুন
কোডে সামান্য কিছু পরিবর্তন করা হয়েছে:
- ডিটেক্টর/স্ক্যানার/লেবেলার/ট্রান্সলেটর... এর ইনস্ট্যানসিয়েশন পরিবর্তন করা হয়েছে। এখন প্রতিটি ফিচারের নিজস্ব এন্ট্রি পয়েন্ট রয়েছে। উদাহরণস্বরূপ:
BarcodeScanning,TextRecognition,ImageLabeling,Translation...। ফায়ারবেস সার্ভিসেরgetInstance()কলগুলো এখন ফিচার এন্ট্রি পয়েন্টেরgetClient()মেথড কল দ্বারা প্রতিস্থাপিত হয়েছে। -
TextRecognizerএর ডিফল্ট ইনস্ট্যানসিয়েশন সরিয়ে দেওয়া হয়েছে, কারণ আমরা চীনা এবং কোরিয়ানের মতো অন্যান্য স্ক্রিপ্ট শনাক্ত করার জন্য অতিরিক্ত লাইব্রেরি চালু করেছি। ল্যাটিন স্ক্রিপ্ট টেক্সট রিকগনিশন মডেলের সাথে ডিফল্ট অপশনগুলো ব্যবহার করতে,com.google.android.gms:play-services-mlkit-text-recognitionএর উপর একটি ডিপেন্ডেন্সি ডিক্লেয়ার করুন এবংTextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)ব্যবহার করুন। -
ImageLabelerএবংObjectDetectorএর ডিফল্ট ইনস্ট্যানসিয়েশন সরিয়ে দেওয়া হয়েছে, কারণ আমরা এই দুটি ফিচারের জন্য কাস্টম মডেল সাপোর্ট চালু করেছি। উদাহরণস্বরূপ,ImageLabelingএ বেস মডেলের সাথে ডিফল্ট অপশন ব্যবহার করতে,com.google.mlkit:image-labelingএর উপর একটি ডিপেন্ডেন্সি ডিক্লেয়ার করুন এবং জাভাতেImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)ব্যবহার করুন। - সমস্ত হ্যান্ডেল (ডিটেক্টর/স্ক্যানার/লেবেলার/ট্রান্সলেটর...) বন্ধ করা যায়। নিশ্চিত করুন যে, যখন এই অবজেক্টগুলো আর ব্যবহার করা হবে না, তখন
close()মেথডটি কল করা হয়। যদি আপনি এগুলো কোনোFragmentবাAppCompatActivityতে ব্যবহার করেন, তবে তা করার একটি উপায় হলোFragmentবাAppCompatActivityটির উপরLifecycleOwner.getLifecycle()কল করা এবং তারপরেLifecycle.addObserverকল করা। - সামঞ্জস্য রক্ষার জন্য ভিশন এপিআই-এর
processImage()এবংdetectInImage()নাম পরিবর্তন করেprocess()রাখা হয়েছে। - ন্যাচারাল ল্যাঙ্গুয়েজ এপিআইগুলো এখন 'ল্যাঙ্গুয়েজ কোড'-এর পরিবর্তে 'ল্যাঙ্গুয়েজ ট্যাগ' ( বিসিপি ৪৭ স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত) পরিভাষাটি ব্যবহার করে।
-
xxxOptionsক্লাসগুলো থেকে গেটার মেথডগুলো সরিয়ে দেওয়া হয়েছে। -
InputImageক্লাসের (যাFirebaseVisionImageপরিবর্তে ব্যবহৃত হতো)getBitmap()মেথডটি এখন আর পাবলিক ইন্টারফেসের অংশ হিসেবে সমর্থিত নয়। বিভিন্ন ইনপুট থেকে বিটম্যাপ রূপান্তর করার জন্য ML Kit কুইকস্টার্ট স্যাম্পলেরBitmapUtils.javaফাইলটি দেখুন। -
FirebaseVisionImageMetadataসরিয়ে ফেলা হয়েছে, এখন থেকে আপনিInputImageএর কনস্ট্রাকশন মেথডগুলোতে সরাসরি ইমেজের মেটাডেটা যেমনwidth,height,rotationDegrees,formatপাস করতে পারবেন।
এখানে পুরানো এবং নতুন কোটলিন মেথডের কিছু উদাহরণ দেওয়া হলো:
পুরানো
// 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());
এপিআই-নির্দিষ্ট পরিবর্তন
বারকোড স্ক্যানিং
বারকোড স্ক্যানিং এপিআই-এর ক্ষেত্রে, মডেলগুলো এখন দুটি উপায়ে সরবরাহ করা যেতে পারে:
- গুগল প্লে সার্ভিসেস বা 'থিন' (প্রস্তাবিত) এর মাধ্যমে অ্যাপের আকার কমে যায় এবং অ্যাপ্লিকেশনটির মধ্যে মডেলটি শেয়ার করা হয়। তবে, ডেভেলপারদের নিশ্চিত করতে হবে যে প্রথমবার ব্যবহারের আগে মডেলটি ডাউনলোড করা হয়েছে।
- আপনার অ্যাপের APK ফাইলটি 'বান্ডেল' আকারে থাকলে অ্যাপের সাইজ বেড়ে যায়, কিন্তু এর ফলে মডেলটি তাৎক্ষণিকভাবে ব্যবহারযোগ্য হয়ে ওঠে।
দুটি বাস্তবায়ন কিছুটা ভিন্ন, যেখানে 'বান্ডেলড' সংস্করণটিতে 'থিন' সংস্করণের তুলনায় বেশ কিছু উন্নতি রয়েছে। এই পার্থক্যগুলোর বিস্তারিত বিবরণ বারকোড স্ক্যানিং এপিআই নির্দেশিকাতে পাওয়া যাবে।
মুখ সনাক্তকরণ
ফেস ডিটেকশন এপিআই-এর ক্ষেত্রে, মডেলগুলো দুটি উপায়ে সরবরাহ করা যেতে পারে:
- গুগল প্লে সার্ভিসেস বা 'থিন' (প্রস্তাবিত) এর মাধ্যমে অ্যাপের আকার কমে যায় এবং অ্যাপ্লিকেশনটির মধ্যে মডেলটি শেয়ার করা হয়। তবে, ডেভেলপারদের নিশ্চিত করতে হবে যে প্রথমবার ব্যবহারের আগে মডেলটি ডাউনলোড করা হয়েছে।
- আপনার অ্যাপের APK ফাইলটি 'বান্ডেল' আকারে থাকলে , অ্যাপ ডাউনলোডের সাইজ বেড়ে যায়, কিন্তু এর ফলে মডেলটি তাৎক্ষণিকভাবে ব্যবহারযোগ্য হয়ে ওঠে।
বাস্তবায়নগুলোর আচরণ একই।
অনুবাদ
-
TranslateLanguageএখন তার কনস্ট্যান্টগুলোর জন্য ল্যাঙ্গুয়েজ ট্যাগ (EN) এর পরিবর্তে পাঠযোগ্য নাম (যেমনENGLISH) ব্যবহার করে। এছাড়াও, এগুলি এখন@IntDefএর পরিবর্তে@StringDefএবং কনস্ট্যান্টটির মান হলো সংশ্লিষ্ট BCP 47 ল্যাঙ্গুয়েজ ট্যাগ ।
অটোএমএল ইমেজ লেবেলিং (অপ্রচলিত)
AutoML ব্যবহার করে ইমেজ লেবেলিংয়ের জন্য কাস্টম মডেল ডাউনলোড করার পদ্ধতিটি এখন আর প্রচলিত নয় এবং ১৫ই জুন, ২০২৭-এ এটি বন্ধ করে দেওয়া হবে। এর পরিবর্তে, মডেল হোস্ট করার জন্য আপনার ক্লাউড স্টোরেজ ব্যবহার করা উচিত এবং মডেলগুলো ডাউনলোড করার জন্য আপনার অ্যাপে ডাউনলোড লজিক যোগ করা উচিত। বিস্তারিত জানতে, ফায়ারবেস এমএল থেকে ক্লাউড স্টোরেজে মাইগ্রেশন গাইডটি দেখুন।
বস্তু সনাক্তকরণ এবং ট্র্যাকিং
আপনার অ্যাপ যদি কোর্স ক্লাসিফিকেশন সহ অবজেক্ট ডিটেকশন ব্যবহার করে, তবে জেনে রাখুন যে নতুন 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) { ... }
‘অজানা’ বিভাগটি সরিয়ে দেওয়া হয়েছে। যখন কোনো বস্তুর শ্রেণিবিন্যাসের নির্ভরযোগ্যতা কম থাকে, তখন আমরা কোনো লেবেলই ফেরত দিই না।
ফায়ারবেস নির্ভরতাগুলি সরান
মাইগ্রেশনের পরে ফায়ারবেস ডিপেন্ডেন্সিগুলো সরিয়ে ফেলুন। এই ধাপগুলো অনুসরণ করুন:
- আপনার অ্যাপের মডিউল (অ্যাপ-লেভেল) ডিরেক্টরিতে থাকা
google-services.jsonকনফিগারেশন ফাইলটি মুছে দিয়ে Firebase কনফিগারেশন ফাইলটি সরিয়ে ফেলুন। - আপনার মডিউল (অ্যাপ-লেভেল) Gradle ফাইলে (সাধারণত
app/build.gradle.kts) থাকা Google Services Gradle প্লাগইনটিকে 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 { // … }
- আপনার প্রোজেক্টের (রুট-লেভেল) Gradle ফাইলে (
build.gradle.kts) Google Services Gradle প্লাগইনের ক্লাসপাথটি 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") } }
ফায়ারবেস সাপোর্ট সাইটের নির্দেশাবলী অনুযায়ী ফায়ারবেস কনসোল থেকে আপনার ফায়ারবেস অ্যাপটি ডিলিট করুন।
সাহায্য পাওয়া
যদি আপনি কোনো সমস্যার সম্মুখীন হন, তাহলে অনুগ্রহ করে আমাদের কমিউনিটি পেজটি দেখুন, যেখানে আমাদের সাথে যোগাযোগের মাধ্যমগুলো উল্লেখ করা আছে।