Mohsen Abedini
Mohsen Abedini
خواندن ۵ دقیقه·۳ سال پیش

کرش لیتیکس با اپ متریکا (yandex-AppMetrica)

اگر اندروید دولوپر باشید قطعا کرش لیتیکس (crashlytics) به گوشتون خورده یا حتی ازش استفاده کردید و میدونید که چه قدر مهمه که بعد از لانچ شدن محصول ، از کرش های اپ روی گوشی یوزر ها مطلع باشیم .

وقتی در مورد کرش لیتیکس صحبت میکنیم اکثرا یاد سرویس معروف فایربیس (firebase) می افتیم

اما اگر با فایربیس کار کرده باشید میدونید که اکثر سرویس هاش برای ما تحریمه و همین تحریم ها مشکلات زیادی رو در راه اندازی و استفاده از خدماتش برای ما ایجاد میکنه .

شاید براتون پیش اومده باشه که زمان زیادی رو برای کانفیگ مثلا (فایربیس کرش لیتیکس) گذاشته باشید چون که فقط دیوایسی که باهاش تست میکنید vpn درست و حسابی نداشته .

یا حتی لاگ کرش ها درست ارسال نشده و مشکلات دیگه ای که در کانفلیکت لایبرری ها ممکنه پیش بیاد.

البته در قدرت فایربیس شکی نیست ، اما برای بیزینس های ما احتمالا گزینه ی مطمئنی نیست ...

خب حالا چه کار میشه کرد ؟

برای ردیابی کرش ها سرویس ها زیادی وجود داره که میشه ازشون استفاده کرد مثل اینستاباگ ،سنتری ، آماروید و...
هر کدوم از این سرویس ها مزایا و شاید معایبی داشته باشن که با توجه به بیزینس خودتون باید گزینه مناسب رو انتخاب کنید .

در این مقاله من به معرفی App Metrica میپردازم که به نظرم برای کرش لیتیکس گزینه ی مناسب و بی دردسریه.


معرفی App Metrica

اپ متریکا یه سرویس روسیه (پس احتمال تحریم شدنش کم تره ?) که کار تیم قدرتمند یاندکسه (yandex) که موتور جستجوی yandex رو توسعه دادن .

طبق توضیحات خود سایت :

AppMetrica covers the three key features for discovering your app's performance - ad tracking, usage analytics and crash analytics.

ویژگی های App Metrica

اگر بخوام به طور خلاصه ویژگی های این سرویس رو معرفی کنم

  • اپ متریکا رایگانه (نیازی نیست خودتون سرور تهیه کنید)
  • محدودیت نداره (هر تعداد کرش رو بدون محدودیت ریپورت میکنه )
  • به جز کرش لیتیکس قابلیت های زیادی داره (مثل ابزار های انالیز ، کمپین ، فروشگاه و پروفایل یوزر ها )
  • کانفیگ کرش لیتیکسش بسیار راحته و ارور هایی که میده خوانایی بالایی داره و بسیار کمک کنندست
  • مالتی پلتفرمه


راه اندازی Crashlytics

خب تا اینجای کار با اپ متریکا آشنا شدیم حالا بریم سراغ هدف اصلی مقاله یعنی کرش لیتیکس

اول باید یه اکانت در یاندکس درست کنید . برای ساختن اکانت به این لینک برید .

حالا باید پروژتون رو در اپ متریکا ایجاد کنید . برای ساختن پروژتون به این لینک برید .


خب اینجا که توضیخ خاصی نداره

در صفحه بعد هم ایمیلتون رو وارد کنید تا نوتیف ها برای ایمیلتون ارسال بشه

اما صفحه بعدی

همون طور که میبینید یه Api key به ما داد . (حتما کپی کنیدش بعدا لازمش داریم) و پروفایل اپ ما ساخته شد.

خب حالا نوبت اضافه کردن لایبرری ها به پروژه اندرویدمونه .

کد زیر رو به گردل (سطح پروژه - build.gradle ) اظافه کنید.

dependencies { classpath ‘com.yandex.android:appmetrica-build-plugin:0.2.4’ }


حالا به سراغ گردل (سطح اپلیکیشن - ماژول app ) میریم .

اول پلاگین زیر رو اظافه کنید

apply plugin: 'appmetrica-plugin'


حالا خیلی آروم دیپندنسی رو هم اظافه می کنیم

dependencies { implementation ‘com.yandex.android:mobmetricalib:3.15.0’ }


داخل بلاک اندروید کد زیر رو هم اظافه کنید (دیگه تمومه)

//groovy android { appmetrica { postApiKey =&quotPOST_API_KEY&quot mappingBuildTypes = ['release'] } }

// kotlin appmetrica { setPostApiKey( &quot Post_Api_Key&quot ) setMappingBuildTypes(listOf()) }


سوال اول : post api key رو از کجا بیاریم ؟

در اپ متریکا ما دوتا کلید داریم یکی api key (که هنگام تعریف پروژه بهمون داد و بعدا ازش استفاده میکنیم)

یکی هم post api key که باید داخل گردل ازش استفاده کنیم .

حالا این کلید ها کجان؟

داخل پروفایل اپتون در اپ متریکا به منوی setting برید اونجا میتونید هر دوتا کلید رو مشاهده کنید .

راستی مواظب کلید ها باشید ...

حالا در گردل post api key خودتون رو وارد کنید .

سوال دوم : mappingBuildTypes چیه ؟

اگر که از ابزار هایی مـثل پروگارد استفاده می کنید (در واقع minifyEnabled =true)
حتما باید بیلد تایپ رو به mapping BuildTypes بدید . مثل این

mappingBuildTypes = ['release']

و اگر از پروگارد استفاده نمیکنید نیاز نیست که به mapping BuildTypes مقدار بدید .مثل این

mappingBuildTypes = ['']

اما چرا ؟ وقتی که از ابزار هایی مثل پروگارد استفاده میکنید کد اصطلاحا در هم ریخته میشه و هنگامی که کرش اتفاق می افته اپ متریکا احتیاج داره که کد رو مپ کنه تا لاگی که برای شما ارسال میشه خوانا باشه .

نکته مهم اینکه اگر پروگارد فعال باشه و یادتون بره mapper رو مقدار دهی کنید اپ متریکا بهتون ارور میده .

کار ما با گردل تموم شد حالا پروژه رو سینک کنید .


فعال سازی Crashlytics

داخل پروژتون یه کلاس اپلیکیشن تعریف کنید (یادتون باشه که در manifest معرفیش کنید)

کد های زیر رو به onCreate کلاس اضافه کنید تا هنگام اجرای برنامه این کد ها هم اجرا بشن

override fun onCreate() { super.onCreate() // init AppMetrics and Activate for Crashlytics val config = YandexMetricaConfig.newConfigBuilder(Your_Api_Key) .withNativeCrashReporting(false) .withLocationTracking(false) .withAppVersion(Your_App_version) .build() YandexMetrica.activate(this, config) YandexMetrica.enableActivityAutoTracking(this) }



val config = YandexMetricaConfig.newConfigBuilder(Your_Api_Key)

تو این خط باید api key خودتون که هنگام تعریف اپ بهتون داد رو وارد کنید

.withNativeCrashReporting(false)

اگر از کد ها نیتیو استفاده می کنید مقدار true و در غیر این صورت false بدید

.withLocationTracking(false)

اگر که میخواهید از امکان لوکیشن ترک برای مشخص کردن موقعیت مکانی دیوایس هایی که کرش روی اونا اتفاق افتاده استفاده کنید true و در غیر این صورت false بدهید

اگر true دادید یادتون باشه که permission location رو هم باید در منیفست تعریف کنید

<manifest> <uses-permission android:name=&quotandroid.permission.ACCESS_COARSE_LOCATION&quot/> <application>...</application> </manifest>
.withAppVersion(Your_App_version)

ورژن اپ خودتون رو هم اینجا وارد کنید .


کار ما تموم شد ...
حالا اپ خودتون رو اجرا کنید ...
لاگ برنامه رو چک کنید اگر با اروری مواجه نشدید یعنی کارتون رو درست انجام دادید .


اگر api key یا post api key رو اشتباه وارد کنیم چی میشه ؟

(اتفاق های خیلی بد . بدجورررررررررر ?)

اگر کلید هارو اشتباه یا جا به جا وارد کنید حین اجرای برنامه بهتون ارور میده و باید اصلاحشون کنید .

از کجا مطمئن بشیم که درست کار میکنه ؟


خیلی راحته یه اکسپشن در برنامه ایجاد کنید تا حین اجرا کرش کنه بعد پروفایل اپتون رو چک کنید تا ببینید کرش ریپورت میشه یا نه

راستی یه نکته مهم اینکه بعضی وقت ها یه مدتی طول میکشه تا کرش ها ریپورت بشه پس عجله نکنید ..



امیدوارم که این مقاله براتون مفید بوده باشه . سعی کردم بیش تر نکاتی که لازمه رو بگم ، اگر شما هم دیتایی داشتید که نگفته بودم تو کامنت برامون بنویسید .

اندرویدبرنامه نویسی
I am Android Developer
شاید از این پست‌ها خوشتان بیاید