لینک کوتاه در کلیبرد کپی شد!http://akhr.ir/4209009
۳۹۹
۱
زوميت/ مواقعي که هنگام کار با دستگاه اندرويدي دچار مشکلاتي نظير هنگ کردن يا توقف ناگهاني برنامهها ميشويد، تنها راه پي بردن به مشکل بررسي لاگ سيستم است.
اندرويد همواره دستوراتي را که توسط برنامهها و سرويسهاي مختلف دريافت ميکند به شکل گزارش به ثبت آن ميپردازد؛ بنابراين وقتي خطايي رخ دهد، گزارش آن تحت عنوان log موجود خواهد بود. در مواقعي که هنگام کار با گوشي اندرويدي خود دچار مشکل در اجراي يک اپليکيشن ميشويد يا در هر قسمتي از گوشي خطا دريافت ميکنيد، چارهي کار گزارش خطا به توسعهدهندهي اپليکيشن يا رامي است که در حال استفاده از آن هستيد.
اگر از رامهاي کاستوم استفاده کرده باشيد، حتما تجربه کردهايد که اکثر مواقع وقتي باگ يا مشکلي نرمافزاري را گزارش ميکنيد، توسعهدهندهي رام از شما درخواست لاگ ميکند؛ چرا که بدون داشتن لاگ و اطلاع از اين که چه اتفاقي در گوشي شما افتاده و چه چيزي باعث خطا شده است، تشخيص و حل مشکل بسيار دشوار خواهد بود.
در اين مقاله از زوميت، انواع روشهاي ذخيرهي لاگ در گوشيهاي روت شده و روت نشده را آموزش ميدهيم و به نحوهي تهيهي لاگ در مواقعي که گوشي هنگ ميکند يا اساسا بالا نميآيد نيز ميپردازيم.
بخش اول: لاگ گوشيهاي روت شده
در گوشيهاي روت شده، انجام کار به سادگي نصب يک اپليکيشن و استفاده از آن است؛ يکي از اپليکيشنهاي ثبت لاگ را نصب کرده و دسترسي روت را به آن بدهيد تا به گزارش اتفاقات درون گوشي شما دسترسي داشته باشد و بتواند آن را ذخيره کند. در اين آموزش اپليکيشن aLogcat را معرفي ميکنيم؛ اما شما ميتوانيد از اپليکيشنهاي جديدتري مانند Matlog نيز استفاده کنيد. شکل کار در هر دو اپليکيشن به يک شکل خواهد بود. توجه داشته باشيد که ممکن است اپليکيشنهايي در پلي استور وجود داشته باشند که ادعا کنند بدون دسترسي روت قادر به ثبت لاگ هستند؛ اما اين اپليکيشنها براي اندرويد ۳.۰ و پايينتر طراحي شدهاند؛ اين در حالي است که طبق آمار ۹۶.۸ درصد از دستگاههاي اندرويدي از اندرويد ۴.۰ و بالاتر استفاده ميکنند؛ پس ميتوان گفت که در حال حاضر استفاده از اپليکيشن براي ذخيرهي لاگ مستلزم داشتن دسترسي روت است.
گام اول: نصب اپليکيشن
براي نصب اپليکيشن رايگان aLogcat را دانلود کنيد.
گام دوم: ذخيرهي لاگکت
پس از نصب اپليکيشن، آيکون آن را لمس کنيد تا برنامه اجرا شود. پس از اجراي برنامه پنجرهاي باز خواهد شد که به شما اطلاع ميدهد که برنامه درخواست دسترسي روت دارد. با زدن روي Grant اين مجوز را به اپليکيشن بدهيد. در نوار بالاي برنامه دکمهاي وجود دارد که شبيه دکمههاي pause و play در موزيکپليرها است. حالت پلي به معني آغاز ثبت گزارش خواهد بود. براي ثبت گزارش خطاي مورد نظر، برنامه را در حالت پلي قرار دهيد و به قسمتي که در آن دچار مشکل ميشويد رفته و به اصطلاح صحنه را بازسازي کنيد تا گزارش خطاي آن ثبت شود. سپس، به برنامهي aLogcat برگشته و ثبت گزارش را متوقف کنيد. از قسمت منوي برنامه يعني سه نقطهي بالا سمت راست، ميتوانيد طبق تصوير گزارش را save يا ذخيره کنيد.
لاگ کت Logcat
لاگکت به شکل يک فايل کمحجم با فرمت txt در فولدر aLogcatfolder در حافظهي داخلي گوشي شما ذخيره ميشود. حال کافي است هنگام گزارش مشکل خود به توسعهدهندهي رام، اين فايل را نيز براي وي ضميمه و ارسال کنيد.
روش دوم: استفاده از ADB براي تمام گوشيها (روت شده و روت نشده)
ويژگي ADB امکاني است که گوگل براي توسعهدهندگان اندرويد فراهم کرده است. براي استفاده از اين امکان وجود چند مورد الزامي است.
رايانه مجهز به درايورهاي ADB
فعال بودن گزينهي ADB و USB debugging در گوشي
کابل يو اس بي
نصب درايور ADB
اينستالر يا نصبکنندهي درايور adb و فستبوت براي ويندوز را ميتوانيد از اين لينک دريافت کنيد. سپس روي فايل دانلود شده راست کليک کرده با کليک روي Run as administrator آن را اجرا کنيد. در صفحهي آبيرنگي که پيش روي شما قرار ميگيرد، تمامي سؤالها را با زدن کليدهاي Y و اينتر پاسخ مثبت بدهيد. اين نصب کننده درايورهاي adb، فست بوت و CMD را براي شما نصب خواهد کرد. بهطوري که از تمام دايرکتوريها به دستورات آنها دسترسي داشته باشيد.
راهاندازي ADB در مک و لينوکس
اگر از مک يا لينوکس استفاده ميکنيد، خبري از اينستالر نخواهد بود؛ در عوض بايد از دستور ترمينال استفاده کنيد. با اين کار قادر خواهيد بود از تمام دايرکتوريها به adb دسترسي داشته باشيد و نيازي به وارد کردن دستور cd براي راهاندازي دستورات adb نخواهيد داشت.
براي انجام نصب نياز به اسکريپتي داريد که دانلود کردني نيست. اين وظيفه را خود ترمينال بر عهده ميگيرد. کافي است پس از اطمينان از اتصال اينترنت دستور زير را در ترمينال وارد کنيد.
bash <(curl -s https://raw.githubusercontent.com/corbindavenport/nexus-tools/master/install.sh)
در صورتي که دستور فوق به هر دليل عمل نکرد ميتوانيد از اين دستور استفاده کنيد:
cd ~ && curl -s -o ./install.sh "http://github.com/corbindavenport/nexus-tools/raw/master/install.sh" -LOk && chmod +x ./install.sh && ./install.sh && rm ./install.sh
پس از نصب موفقيتآميز درايورهاي ADB کار ما موقتا با رايانه تمام ميشود و نوبت به گوشي و تنظيمات usb debugging ميرسد.
آشکارسازي Developer options و فعال کردن USB Debugging
بسياري از برنامههاي ابزاري اندرويد از Android Debug Bridge يا همان ADB براي ارسال دستور از رايانه به گوشي يا تبلت استفاده ميکنند. در واقع ADB اين اجازه را به برنامههاي يادشده ميدهد تا بدون داشتن دسترسي روت از دستورهاي ترمينال استفاده کنند. براي برقراري اتصال ADB بين رايانه و گوشي بايد USB debugging را در دستگاه اندرويدي خود فعال کنيد.
آشکارسازي Developer Options
روش انجام اين کار ممکن است وابسته به دستگاه شما کمي متفاوت باشد؛ اما کليت کار در تمامي دستگاههاي اندرويدي به يک شکل است.
براي شروع به منوي تنظيمات گوشي يا تبلت خود برويد. معمولا پايينترين گزينه About phone ،About tablet يا About device است. روي اين گزينه بزنيد و از گزينههاي موجود Build number را هفت مرتبه پشت سر هم لمس کنيد.
developer ooptions دولوپر آپشنز
در اين لحظه پيام موقتي را روي صفحه مشاهده خواهيد کرد مبني بر اينکه به عنوان توسعهدهنده شناخته شديد؛ اين يعني بخش پنهان دولوپر آپشنز در منوي تنظيمات براي شما نمايان شد.
فعال کردن يو اس بي ديباگينگ
بعد از ظاهر شدن دولوپر آپشنز در پايين منوي اصلي تنظيمات، روي آن بزنيد و از بين گزينههاي موجود تيک مقابل USB debugging را بزنيد و در پنجرهي باز شده OK را لمس کنيد.
در اين مرحله، هم رايانه و هم دستگاه اندرويدي شما ملزومات لازم براي استفاده از ADB را پيدا کردهاند. نوبت ميرسد به اتصال يو اس بي و تنظيمات نوع اتصال.
اتصال يو اس بي در حالت USB Debugging
دستگاه اندرويدي خود را از طريق کابل يو اس بي به رايانه يا لپتاپ وصل کنيد. در اين لحظه احتمالا پيامي روي صفحهي دستگاه اندرويدي خود مشاهده ميکنيد که از شما سؤال ميکند آيا اجازهي اتصال اين رايانه به گوشي در حالت ديباگينگ را ميدهيد يا خير. با لمس خانهي مقابل عبارت Always allow from this computer و تيکدار کردن آن روي OK بزنيد تا مجوز دائم اتصال رايانه و دستگاه اندرويدي خود را تأييد کرده باشيد.
چنانچه پيامي را که به آن اشاره شد، مشاهده نکرديد، احتمالا تداخلي در قسمت اتصال به عنوان فضاي ذخيرهسازي وجود دارد. اگر چنين باشد، براي رفع آن بايد به منوي تنظيمات گوشي رفته و Storage را انتخاب کنيد. در اين قسمت طبق تصوير، روي دکمهي سهنقطه، در بالا سمت راست زده و USB computer connection را لمس کنيد.
در اين قسمت اگر (Media device (MTP فعال بود، آن را به (Camera (PTP تغيير دهيد تا مجددا پيام Allow USB debugging که دفعهي قبل موفق به مشاهدهي آن نشده بوديد، ظاهر شود.
درصورتيکه مراحل قبل را به درستي انجام داده باشيد، با فعال کردن يو اس بي ديباگينگ، همه چيز محياي گرفتن انواع لاگ خواهد بود.
بخش اول: لاگکت
در اکثر مواقع شما براي گزارش يک خطا به لاگکت نياز داريد. لاگکت به شما ميگويد که کدام برنامهها درست کار نميکنند و علت آن چيست. بايد بدانيد که سيستمعامل شما به کمک اپليکيشنها کار ميکند؛ شمارهگير، پيامک، تنظيمات و... همه توسط اپليکيشنها اجرا ميشوند. بنابراين، هر گاه توقف ناگهاني هر بخشي از سيستمعامل را مشاهده کرديد، با گرفتن لاگکت قادر به ثبت علت آن خواهيد بود.
براي گرفتن لاگکت به وسيلهي ADB پس از محيا کردن پيشنيازهايي که بالاتر توضيح داده شد، يک فولدر روي دسکتاپ ايجاد کرده و در محيط آن با گرفتن شيفت، راستکليک کنيد. سپس open command prompt را زده و دستور زير را براي اطمينان از برقراري ارتباط بين سيستم و گوشي يا تبلت وارد کنيد.
adb devices
ADB
در صورت برقراري ارتباط، سريال نامبر گوشي شما در cmd قابل رؤيت خواهد بود. در اين صورت، با وارد کردن دستور زير ميتوانيد لاگکت بگيريد.
adb logcat > logcat.txt
adb logcat
براي اتمام فرايند لاگ گرفتن از کليدهاي Ctrl به همراه C استفاده کنيد.
بخش دوم: Dmesg
اين نوع لاگ در مواقع بحرانيتر مورد استفاده قرار ميگيرد. به طور مثال، وقتي که وايفاي کار نميکند يا صفحه روشن نميشود و مشکلاتي از اين دست که به کرنل مربوط ميشوند از لاگ Dmesg براي بررسي مشکل استفاده ميشود. براي گرفتن لاگ Dmesg نيز برقراري ارتباط از طريق ADB است. به همين جهت، انجام مراحل مربوط به ADB در اين مورد نيز الزامي است.
کاري که لاگ Dmesg انجام ميدهد، ارائهي گزارشي از اتفاقات کرنل است تا توسعهدهنده بتواند متوجه شود که کدام درايور به درستي کار نميکند. از آنجايي که با لينوکس روبهرو هستيم، گزارش عملکرد کرنل در پي بردن به اينکه کدام سختافزار به درستي کار نميکند اهميت بالايي دارد.
براي گرفتن لاگ dmesg فارغ از اينکه از چه سيستمعاملي استفاده ميکنيد، ميتوانيد دستور زير را در cmd وارد کنيد.
adb shell dmesg > dmesg.txt
بخش سوم: گزارش last_kmsg
آخرين نوع لاگ گرفتن از اندرويد last_kmsg است. وقتي کرنل اندرويد کرش ميکند و دستگاه به کلي از اجرا باز ميايستد يا ناگهان ريبوت ميشود، تنها راهي که ميتوان با آن علت را پيدا کرد بررسي گزارش last_kmsg است. اين گزارش در مواقعي که گوشي شما دچار ريبوتهاي ناگهاني و هنگ کردن و ساير رفتارهاي غيرعادي ميشود مورد استفاده قرار ميگيرد. اين رفتارها معمولا به اين دليل انجام ميشوند که کرنل قصد انجام کاري را دارد؛ اما از عهدهي آن برنميآيد. توسعهدهندگان براي رفع چنين مشکلاتي شديدا به گزارش last_kmsg نياز دارند.
براي گرفتن اين گزارش کافي است ضمن اطمينان از برقراري ارتباط ADB بين رايانه و دستگاه اندرويدي، دستور زير را وارد کنيد.
adb shell cat /proc/last_kmsg > kmsg.txt
گزارش در همان مسيري که cmd را از آن اجرا کرديد ذخيره خواهد شد.
در پايان، اگر فايل متني گزارش خود را باز کنيد، خواهيد ديد که خطوط گزارش هر کدام با حرفي خاص آغاز شدهاند. اگر مايل هستيد اطلاعاتي کلي از گزارش ثبت شدهي خود به دست آوريد، ميتوانيد از جدول درج شده در بخش تصاوير به عنوان راهنما استفاده کنيد.
اميدواريم از اين آموزش استفادهي کافي برده باشيد. لطفا نظرات و تجربيات خود را در قسمت ديدگاهها با ما به اشتراک بگذاريد.
همراهان عزيز، آخرين خبر را بر روي بسترهاي زير دنبال کنيد:
آخرين خبر در سروش
http://sapp.ir/akharinkhabar
آخرين خبر در ايتا
https://eitaa.com/joinchat/88211456C878f9966e5
آخرين خبر در آي گپ
https://igap.net/akharinkhabar
آخرين خبر در ويسپي
http://wispi.me/channel/akharinkhabar
آخرين خبر در بله
https://bale.ai/invite/#/join/MTIwZmMyZT
آخرين خبر در گپ
https://gap.im/akharinkhabar