8 (800) 551-30-75
info@appfox.ru
Since 2008
8 (800) 551-30-75
Почта:
 info@appfox.ru
8 (800) 551-30-75 info@appfox.ru

Всем доброго времени суток. Это статья будет о том, как проводить отладку приложения/игры на Android.

Альтернативные готовые решения:

1) В Android SDK входит набор инструментов, предназначенных для отладки. Самый важный инструмент при отладке - это LogCat. Класс android.util.Log позволяет разбивать сообщения по категориям в зависимости от важности.

2) Можно найти на Play Market много приложений для отлавливания логов, но 90% из них требуют Root права. Что есть не безопасно для нас.




Часто сам сталкивался с ситуацией, когда нужно было знать о состоянии приложения на данный момент, знать результат работы функций и результат условных операторов. Решений готовых особо не было. Поэтому, при отсутствии большого количества времени было принято решение, реализовать первую идею которая появилась в и без того уставшем от костылей мозгу.

Решение #1 (так делать не нужно)

Создаем на Canvas элемент Text. Растягиваем этот элемент по всей ширине экрана и в этот textbox будем выводить весь log. Данное решение в свое время мне было необходимо для отладки при интеграции рекламных сетей AdColony AppLovin.

Пример консоли был использован только в одном скрипте (AdsManager) и не требовал вызовов из вне. Так как сам скрипт имел singleton – Instance, то элемент Text в теории можно было вызвать из любого места. Но не стоит этого делать. Так как значение переменной Text может быть равно null.


Рис -1 создаем текстовый элемент


Рис -2 размещаем текстовый элемент

Рис -3 назначаем переменную скрипту в инспекторе




Пример кода

using UnityEngine;

using UnityEngine.UI;

 

public class AdsManager : MonoBehaviour {

 

    public static AdsManager Instance;

    void Awake()

    {

        Instance = this;

    }

 

    public Text consoleTxt;

 

    void Start () {

        consoleTxt.text = "";

 

        for (int i = 0; i < 10; i++)

        {

            LogToConsole(System.Math.Pow( Random.Range(0,1000),i));

        }

    }

 

    private void LogToConsole(object log)

    {

        consoleTxt.text += "\n" + log.ToString();

    }


Рис -4 Результат работы

Вывод: решение не оптимальное. Нельзя видеть полный log, так как текстовое поле не бесконечно и всему есть предел. Вторая причина – это неудобный вывод и чтение лога. Конечно можно было бы подзаморочиться и сделать вывод скролящейся панели по нажатию кнопки, НО игра не стоит свеч.

 

Решение #2 (оптимальное)

Решение простое как божий день. Будем выводить в тестовый файл весь лог с пометками LOG ERROR WARNING. Файл можно найти по исходному пути приложения или же в Streaming Assets. Файл перезаписываем после каждого запуска приложения. Так же для удобства можно после записи выводить время с момента запуска приложения и до момента лога.

Путь к файлу на Android:

.../Android/data/com.YourCompany.ProjectName/files/log.txt


Рис -5 Создаем папку StreamingAssets иначе в редакторе получим ошибку о отсутствии пути


Важно, для редактора и Android разные пути для записи файла.


         

Рис - 6 Результат работы для Win10

 


Рис -7 Результат работы для Android

 

Пример кода

using UnityEngine;

using System.IO;

 

public class AndroidLog : MonoBehaviour {

 

    static string pathFile = "";  

 

    void Start () {

 

#if UNITY_EDITOR

    pathFile = Application.dataPath + "/StreamingAssets//log.txt";

#endif

#if UNITY_ANDROID && !UNITY_EDITOR

        pathFile = Application.persistentDataPath+"//log.txt";

#endif

 

        if (File.Exists(pathFile))

            File.WriteAllText(pathFile, "LOG " + Application.productName);

        else

            File.Create(pathFile);

    }

 

    public static void LogComment(object str)

    {

        File.AppendAllText(pathFile,"\nLOG: " + str.ToString());

    }

 

    public static void LogError(object str)

    {

        File.AppendAllText(pathFile, "\nERROR: " + str.ToString());

    }

    public static void LogWarning(object str)

    {

        File.AppendAllText(pathFile,"\nWARNING: " + str.ToString());

    }

}

Вывод: Решение хорошо тем, что оно кросс платформенное. 

Заметно улучшилось качество лога, удобность чтения и можно получить развернутый лог.


Возврат к списку статей

ПОДПИШИТЕСЬ НА ОБНОВЛЕНИЯ

Осмысленное изучение обучающих материалов позволит профессионально повысить квалификацию. Подпишитесь на бесплатные советы и статьи по ключевым этапам разработки.

Ваше имя: * E-mail: * Ваш комментарий или вопрос: * - обязательные поля для заполнения ПОДПИСАТЬСЯ

Наши клиенты
tele2
роскосмос
утконос
the psycho
бенуарики
цирк чудес
river raft
gothica
heart
group
gladiators
medal
slillplanet
photo of
Appfox
улица Профсоюзная, дом 27, корпус 1
Москва , Москва , 117418 Россия
8 (800) 551-30-75

This hCard created with the hCard creator.

Онлайн заявка
Оставьте ваши контактные данные и наш консультант свяжется с вами
Ценовой диапазон
5 000 р
5 000 000 р
Нажимая на кнопку «Отправить», Вы даете согласие на обработку своих персональных данных