This is a mirror of official site: http://jasper-net.blogspot.com/

Android: Получение аварийного лога

| Tuesday, May 24, 2011
Все знают, что, даже после хорошего тестирования, программы для Android иногда способны падать в самых неподходящих случаях. Может, виновато глобальное потепление, может, это проделки бессовестных китайцев, но факт остается фактом - приложение, которое вы долго разрабатывали, а потом долго и трепетно тестировали, может на некоторых устройствах работать совершенно непредсказуемо, причем воспроизвести ошибку на своих устройствах не получается. 

В таких случаях на помощь рядовому разработчику приходит какой-нибудь дамп падения наподобие аварийного минидампа в Windows. Но в Android такого механизма нет, или по крайней мере мне об этом ничего не известно.

Столкнувшись в свое время с такой проблемой, я просмотрел несколько готовых решений ( это, например ), как обычно все они чем-то не понравились. Поэтому пришлось написать простой собственный велосипед, который и хочу здесь привести.

Класс LogCatWrapperBackgroundTask работает в отдельном потоке ( AsyncTask ), и его задача сводится к запуску logcat ( см. developer.android.com ), который как раз и пишет системный лог в указанный вами файл. Для работы нужно прописать в AndroidManifest.xml разрешение

<uses-permission android:name="android.permission.READ_LOGS" />

public class LogCatWrapperBackgroundTask extends AsyncTask<ArrayList<String>, Void, StringBuilder>{

       @Override
        protected void onPreExecute(){

        }

        @Override
        protected StringBuilder doInBackground(ArrayList<String>... params){
            final StringBuilder log = new StringBuilder();
            try{
                ArrayList<String> commandLine = new ArrayList<String>();
                commandLine.add("logcat");

Read more: Plaincodesource

Posted via email from Jasper-net

0 comments: