পোস্টটি পড়া হয়েছে 4,355 বার
fabric crashlytics android tutorial in bengali

Fabric Crashlytics for Android – অ্যাপের ক্র্যাশ রিপোর্টিং ও টেস্ট APK ডিসট্রিবিউশন

Post updated on 6th February, 2018 at 10:29 am

সেই দিনটার কথা মনে পড়ছে, যখন একটা অ্যাপের ফাইনাল রিলিজের আগে বন্ধু-বান্ধব ও পরিচিতজনদেরকে অ্যাপের APK ফাইল মেইল করতাম। একটা মেইলের লিস্টই ছিল, যাদেরকে নিয়মিত অ্যাপ টেস্ট করার জন্য মেইল করতাম। কোথাও ক্র্যাশ করলে তারা মেইলে বা ফেসবুকে নক দিয়ে বলত “অমুক বাটনে ক্লিক করে তমুক পেজে গেলাম। সেখানে গিয়ে তিন বার চোখের পলক ফেলার পরই অ্যাপ ক্র্যাশ!”। আমি আমার ডিভাইসে একই রকম করে নির্দিষ্ট পেজে গিয়ে তিন বার না, ছয়বার পলক ফেললাম। তাও ক্র্যাশ করলো না! একবার হলো কী! ক্লায়েন্টের একটা কাজ করছিলাম। মনে হয় সেটাই প্রথম ক্লায়েন্টের কাজ করা। আমাদের সব ডিভাইসে অ্যাপ চলে, ক্লায়েন্টের ফোনে রান করলে ক্র্যাশ করে! কী বিপদ!!! তখন ক্লায়েন্টের অফিসে গেলাম ল্যাপটপ নিয়ে। USB debugging অন করে ক্লায়েন্টের ফোনে অ্যাপ রান করার পর ক্র্যাশ করলো। আমি Android Studio-র লগক্যাটে দেখলাম রানটাইমে জিপিএসের পারমিশন নিই নাই, তাই অ্যাপ ক্র্যাশ করেছে। ভাগ্যিস ক্লায়েন্ট ঢাকাতেই থাকতেন! তিনি যদি অন্য জেলা বা অন্য দেশে থাকতেন তখন কিভাবে ম্যানেজ করতাম আল্লাহই জানেন!

তখন মনে মনে ভাবছিলাম “ইশ! যদি এমন একটা সিসটেম থাকত যে, অ্যাপ ক্র্যাশ করলে আমার মেইলে ক্র্যাশের কারণটা চলে আসবে!” চিন্তা করছিলাম “সব জায়গায় try-catch টাইপের জিনিস ইউজ করব। catch এ গেলেই আমার সার্ভারে একটা রিকোয়েস্টে কিছু ডেটা পাঠায় দিবে!”

এসব কিছু করা লাগে নাই। কারণ আমি মনে মনে যেটুকু চিন্তা করতে পেরেছিলাম তার চেয়ে অনেক বেশি ফিচার সমৃদ্ধ একটা টুলের সন্ধান  পেলাম – Fabric. ২০১৪ সাল থেকে এই ডেভেলপার প্ল্যাটফর্মটি চালিয়ে আসছিল টুইটার। পরে ২০১৭ এর জানুয়ারিতে Google টুইটারের থেকে Fabric কে কিনে নেয় এবং Firebase এর একটা ফিচার হিসাবে একে যুক্ত করে। Fabric এর সাইটে গেলে দেখা যাবে শুধু Crashlytics নয়, Android-iOS উভয় প্ল্যাটফর্মের জন্য বেশ কিছু ফিচার রয়েছে। আমি এখন পর্যন্ত শুধু Crashlytics-ই ব্যবহার করেছি। আর আজকের পোস্টের বিষয় এই Crashlytics-ই।

Some Key Features of Fabric Crashlytics

  • আপনার Android বা iOS প্রোজেক্টে ২-৩ লাইন কোড যুক্ত করেই Crashlytics enable করে নিতে পারেন। এতে অ্যাপের যাবতীয় ক্র্যাশের রিয়েলটাইম আপডেট পাবেন
  • অ্যাপ ক্র্যাশ করলে শুধু ফ্যাবরিকের ড্যাশবোর্ডেই নয়, সঙ্গে সঙ্গে আপনার কাছে মেইল চলে আসবে
  • Android Studio-তে অ্যাপ টেস্টিংয়ের সময় ক্র্যাশ করলে যত ইনফরমেশন আপনি লগক্যাটে দেখতে পান তার প্রায় সবই ফ্যাবরিকে দেখতে পাবেন
  • প্রতিটা ক্র্যাশের রিপোর্টে আপনি পাবেন কত তারিখে, কয়টার সময়, অ্যাপের কোন ক্লাসের কত নাম্বার লাইনে কেন ক্র্যাশ করেছে তার বিস্তারিত
  • পাশাপাশি পাওয়া যাবে অ্যাপটা কোন কোম্পানির ফোনে রান হচ্ছিল, সেই ফোনে কোন কোম্পানির সিমকার্ড ইউজ করা হচ্ছে, ক্র্যাশ করার সময় মেমরি কত পার্সেন্ট ফ্রি ছিল, ডিস্ক কত পার্সেন্ট ফ্রি ছিল, অ্যান্ড্রয়েডের কোন অপারেটিং সিসটেম সেই ফোনে চলছিল ইত্যাদি
  • ক্র্যাশের বিভিন্ন অ্যানালিটিক্স দেখা যাবে। যেমন এই একই ক্র্যাশ আর কতজনের ক্ষেত্রে ঘটেছে, কত পার্সেন্ট ইউজার এর দ্বারা অ্যাফেক্টেড হয়েছে
  • আপনার ভাগ্য সুপ্রসন্ন হলে (crash এর কারণটা বেশ common হলে) কালেভদ্রে হয়ত “ক্র্যাশ হইতে পরিত্রাণের উপায়” সম্বলিত StackOverFlow এর লিংকও ফ্যাবরিকের ড্যাশবোর্ডে পেয়ে যাবেন!
  • চমকপ্রদ আরেকটা ফিচার হচ্ছে আপনার অ্যাপ এই মুহূর্তে কতজন ইউজ করছেন সেটা লাইভ দেখতে পাবেন!
  • Android Studio তে Fabric এর plugin ইউজ করে আপনার ক্লায়েন্ট বা টেস্টারদেরকে অ্যাপ টেস্ট করে দেখার ইনভাইটেশন পাঠাতে পারবেন। জাস্ট APK টা আপলোড করে টেস্টারদের ইমেইল এড করে দিতে হবে। প্রত্যেকের কাছে Crashlytics থেকে একটা মেইল চলে যাবে। সেখানে ২টা অ্যাপের লিংক থাকবে। একটা হচ্ছে Crashlytics Beta অ্যাপের লিংক অপরটা আপনার অ্যাপের লিংক। Beta অ্যাপকে তুলনা করতে পারেন Google Play Store App এর মত। Beta’র মাধ্যমে ঐ টেস্টার তাকে অ্যাসাইন করা সকল অ্যাপ দেখতে পারবে। কোনো অ্যাপ আপডেট হলে বেটা অ্যাপ নোটিফিকেশন দিয়ে জানিয়ে দিবে। তখন টেস্টার ঐ অ্যাপ আপডেট করে টেস্ট করতে পারবেন। তাই আপনাকে আর কষ্ট করে সবাইকে মেইল করতে হবে বা সবার সাথে গুগল ড্রাইভের লিংকও শেয়ার দিতে হবে না!

Integration Fabric in Your App

অাপনার অ্যাপে ক্র্যাশলাইটিক্স অ্যাড করার জন্য চাইলে ম্যানুয়াল্যি কোড লিখতে পারেন। অথবা কয়েকটা ক্লিক করেও কাজটা করতে পারেন। দ্বিতীয়টার জন্য আপনাকে Android Studio-তে Fabric এর প্লাগিন ইন্সটল করতে হবে। আর App distribution এর জন্যেও এই প্লাগিনটা দরকার হবে।

Install Fabric Plugin in Android Studio

প্রথমে অ্যান্ড্রয়েড স্টুডিওতে একটা নতুন প্রজেক্ট খুলে ফেলুন। ২ টা অ্যাক্টিভিটি রাখতে পারেন। বাটন ক্লিকে প্রথম অ্যাক্টিভিটি থেকে দ্বিতীয় অ্যাক্টিভিটিতে যাওয়া যাবে।

Fabric plugin install করার জন্য Android Studio এর মেনুবার থেকে যান Files > Settings > Plugins.

সার্চবারে Fabric লিখে সার্চ দিন। কোনো রেজাল্ট শো না করলে Search on Repositories এ ক্লিক করুন। প্লাগিনটা তখন পাওয়া যাবে। ইন্সটল করে Android Studio রিস্টার্ট দিন। ঠিকঠাক ইন্সটল হয়ে থাকলে নিচের ছবির মত ২ টি পরিবর্তন চোখে পড়বে।

Integrate Fabric Crashlytics in Android App Project

আগের ছবিতে থাকা লাল চিহ্নিত যে কোন একটায় ক্লিক করলে লগিন করার অপশন পাওয়া যাবে। লগিন করার জন্য তো আগে রেজিস্ট্রেশন করতে হবে! তাহলে এক ফাঁকে Fabric এ রেজিস্ট্রেশন করে ফেলুন। রেজিস্ট্রেশনের শেষ স্টেপ হচ্ছে ই-মেইল ভেরিফিকেশন। ফ্যাবরিক থেকে আসা ই-মেইলের ইনস্ট্রাকশন ফলো করুন। ভেরিফিকেশন হয়ে গেলে ওয়েবের ড্যাশবোর্ডে ঢুকতে পারবেন। এরপর Android Studio তে এসে লগিন করুন। দেখবেন ALL KITS এর একটা লিস্ট আছে।

যেহেতু আমরা Crashlytics ইমপ্লিমেন্ট করতে চাচ্ছি তাই প্রথম অপশনটা সিলেক্ট করুন। পরের স্ক্রিনে Crashlytics install করার বাটন দেখা যাবে। সেখানে ক্লিক করলে আপনার সামনে কিছু কোড দেখাবে। কিছু জাভা কোড আর gradle dependency. আপনি Apply বাটনে ক্লিক করলে এগুলো সব ঠিকঠাক জায়গা মত বসে যাবে। Gradle Sync করলে দেখবেন আপনার MainActivity ক্লাসে নতুন একটা লাইন যুক্ত হয়েছে। আর গ্র্যাডল ফাইলেও কিছু যুক্ত হয়েছে। আপনার অ্যাপের ক্র্যাশ রিপোর্ট সার্ভারে পাঠানোর জন্য নেট কানেকশন ইউজ করতে হবে। তাই Manifest এ ঢুকলে দেখবেন ইন্টারনেট ইউজ করার জন্য পারমিশন অ্যাড করা হয়েছে। Meta tag এর ভিতরে আরো দেখতে পাবেন Fabric এর API Key. আপনি বাটন ক্লিক করে এক বারে ক্র্যাশলাইটিক্স ইন্সটল না করে নিজে নিজে লিখেও পুরোটা ইমপ্লিমেন্ট করতে পারবেন। গ্র্যাডল সিংক হয়ে গেলে অ্যাপটা রান করুন।

রান করার আগ পর্যন্ত ফ্যাবরিকের ওয়েব ড্যাশবোর্ডে আপনার ঢুকতে পারার কথা না (যদি আগে থেকে কোনো প্রোজেক্ট ফ্যাবরিকে না থেকে থাকে)। কিন্তু অ্যাপটা রান করার কয়েক সেকেন্ড পরই দেখবেন আপনি ড্যাশবোর্ডে ঢুকতে পারছেন। ড্যাশবোর্ডে দেখতে পাবেন আপনার সদ্য রান করা অ্যাপের নাম। আপনার অ্যাপ রান করার সাথে সাথেই অ্যান্ড্রয়েড স্টুডিও থেকে ফ্যাবরিকের কাছে আপনার অ্যাপের ইনফরমেশন পাঠিয়ে দেয়া হয়। তাই আপনি রান করার পরই ড্যাশবোর্ডে আপনার অ্যাপের নাম দেখতে পাচ্ছেন।

এবার টেস্ট করার জন্য জোর করে আপনার অ্যাপকে ক্র্যাশ করানোর জন্য কোনো বাটন ক্লিকে বা MainActivity’র onCreate এর ভিতর থেকে এই মেথড কল করতে পারেন। বুঝার সুবিধার জন্য পুরো কোডটা দেয়া হলোঃ

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Fabric.with(this, new Crashlytics());
        setContentView(R.layout.activity_main);

        forceCrash();
    }

    public void forceCrash() {
        throw new RuntimeException("This is a force crash");
    }
}

সফল ভাবে আপনার অ্যাপটি ক্র্যাশ হবার কয়েক সেকেন্ডের মধ্যেই আপনার কাছে মেইল চলে আসার কথা। আর আপনি ফ্যাবরিকের ওয়েব ড্যাশবোর্ডে ঢুকলেও দেখতে পাবেন একটা টাটকা ক্র্যাশ রিপোর্ট! সেখান থেকে রিপোর্টটা ডাউনলোড করে উপরে থাকা ফিচারের যেই ফিরিস্তি দিয়েছি তার সত্যতা যাচাই করে নিতে পারেন। এছাড়াও Android Studio তে ফ্যাবরিকের প্লাগিনের মাধ্যমেও ক্র্যাশ রিপোর্ট দেখা যাবে।

উপরের কোড থেকে দেখা যাচ্ছে Activity তে Fabric ক্লাসের একটা static method call করা হয়েছে। সচেতন পাঠকমাত্রই প্রশ্নটা মাথায় আসবে “অ্যাপে ২০ টা অ্যাক্টিভিটি থাকলে প্রত্যেকটিতেই এই একই জিনিস লিখা লাগবে?” উত্তর হচ্ছে “না”। এজন্য যে কাজটা করতে হবে তা হচ্ছে অাপনার অ্যাপ Application class কে extend করে একটা subclass বানাতে হবে। সেই সাবক্লাসের onCreate() মেথডের ভিতর একবার ঐ কাজটা করতে হবে। Application class নিয়ে এখানে বিস্তারিত বলছি না। আগ্রহী হলে গুগল করে দেখে নিতে ভুলবেন না যেন!

public class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Fabric.with(this, new Crashlytics());
    }

}

Application class এর subclass টা Manifest এ name tag এর under এ define করে দিতে হবে (নিচের কোডের প্রথম দ্বিতীয় লাইন android:name=”.MyApp”).

<application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="io.fabric.ApiKey"
            android:value="your_api_key" />
    </application>

Distribute Android App to test using Fabric

এ তো গেল ক্র্যাশ রিপোর্টিং যুক্ত করার কথা। এখন দেখি কিভাবে আমাদের টেস্টারদেরকে বা ক্লায়েন্টকে অ্যাপ টেস্ট করার জন্য ডিস্ট্রিবিউট করতে পারি। আপনার অ্যান্ড্রয়েড স্টুডিওতে ইন্সটল করা ফ্যাবরিকের প্লাগিনে ঢুকে আপনার অ্যাপের লিস্ট দেখতে পারবেন। যেই অ্যাপটা ডিস্ট্রিবিউট করতে চান সেটাকে সিলেক্ট করলে নিচের মত একটা স্ক্রিন দেখতে পাবেনঃ

শেয়ার আইকনে ক্লিক করে আপনার APK file টা drag and drop করুন। এরপর Upload File এ ক্লিক করে পরের স্ক্রিনে গিয়ে আপনার টেস্টারদের ইমেইল অ্যাড্রেস ইনপুট দিন। এরপরের স্ক্রিনে গেলে ইনপুর দিতে পারবেন অ্যাপের এই ভার্সনের Release Notes. অর্থাৎ এই আপডেটে আপনি কী কী চেঞ্জ করেছেন আপনার টেস্টারদের জানানোর জন্য বলে দিতে পারেন। তারা যখন মেইল পাবে সেখানে এই রিলিজ নোটটাও থাকবে। ডিস্ট্রিবিউশন ঠিকঠাক হলো কিনা সেটা বুঝার জন্য আপনার নিজের ইমেইলও টেস্টার লিস্টে অ্যাড করে দিতে পারেন।

একই অ্যাপের নতুন কোনো ভার্সন আপডেট দেয়ার জন্য build.gradle ফাইলে versionName এর ভ্যালুটা আপডেট করে অ্যাপটা বিল্ড করুন। যেমন আমাদের বর্তমান অ্যাপের ভার্সন 1.0, পরবর্তী ভার্সনের নাম আমরা দিতে পারি 1.1. এটা আপডেট দিয়ে gradle sync করে নিন। এরপর মেনুবার থেকে Build > Build APK(S) এ ক্লিক করে নতুন APK ফাইলটি ফ্যাবরিকের শেয়ার আইকনে ক্লিক করে drag and drop করুন। একই ভাবে টেস্টার অ্যাড করুন। প্রতিবার আপনাকে টেস্টার অ্যাড করতে হবে না। আগে অ্যাড করা টেস্টারদের ইমেইল সেখানে শো করবে। চাইলে সেখান থেকে বাদ দিতে পারবেন বা নতুন টেস্টার অ্যাড করতে পারবেন। একই ভাবে নতুন ভার্সনের রিলিজ নোট ইনপুট দিয়ে আপলোড দিয়ে দিন।

আপনি চাইলে টেস্টারদের নিয়ে গ্রুপ বানাতে পারেন। টেস্টার অ্যাড করার সময় একজন একজন করে অ্যাড না করে পুরো গ্রুপকে একসাথে অ্যাড করতে পারেন। কিভাব করবেন সেটা? একটু গুগল করুন। আশা করি পেয়ে যাবেন।

আপনার অ্যাপ এই মুহূর্তে ঠিক কতজন ব্যবহার করছেন সেটা দেখার জন্য Fabric এর web dashboard থেকে Runtime Analytics enable করতে হবে। ড্যাশবোর্ডে ঢুকে আপনার অ্যাপ সিলেক্ট করুন। বামের মেনু থেকে Retention বা Growth এ ক্লিক করলে পপ আপ মেসেজ আসবে রানটাইম অ্যানালিটিক্স এনাবল করার জন্য। সেখান থেকে এনাবল করে কয়েক মিনিট অপেক্ষা করুন। নিশ্চিত হবার জন্য ২-৩ টা ডিভাইসে অ্যাপ ইনস্টল করে ওপেন করে রাখতে পারেন।

এত বড় পোস্ট শেষ পর্যন্ত পড়ার জন্য ধন্যবাদ। আপনার সুচিন্তিত মতামত ও পরামর্শ একান্ত কাম্য।

5 thoughts on “Fabric Crashlytics for Android – অ্যাপের ক্র্যাশ রিপোর্টিং ও টেস্ট APK ডিসট্রিবিউশন

  1. আমার ডাউনলোড ম্যানেজারের এপ ক্রাশ করছে কিনা চেক করার জন্য implement করলাম । দারুণ লাগছে জিনিস টা ।। ধন্যবাদ এত সুন্দর একটা জিনিসের খোজ দেওয়ার জন্য ।।

  2. google play store এ আপলোড দেয়ার পরও কি fabric এ crash দেখতে পারব?
    ধন্যবাদ ।

    1. জ্বি পারবেন। সাথে রিয়েলটাইম মনিটরিংও করতে পারবেন। মানে কতজন ইউজার আপনার অ্যাপ এই মুহূর্তে ইউজ করছে।

Leave a Reply

Your email address will not be published. Required fields are marked *