Altynview Справочный центр Altynview App Android Platform-Ant
Altynview App

Установка Altynview Android SDK (Ant)

1. Выбор имени приложения

Задайте легко идентифицируемое имя приложения, которое необходимо мониторить. Имя приложения будет отображаться в списке приложений и в соответствующем отчёте и будет представлять данное приложение.
Имя приложения может содержать буквы, цифры и китайские иероглифы, максимальная длина - 32 символа. При задании имени приложения рекомендуется избегать повторяющихся названий, чтобы не создавать ненужных сложностей.
Имя приложения можно изменить в любое время в настройках

2. Сборка с использованием Ant

2.1. Установка агента

Примечание:

I. Разработчики должны убедиться, что инструмент сборки Ant установлен корректно, помимо IDE ADT.
“ADT” IDE.

II. Если файл build.xml уже существует, пропустите данную настройку.

       Введите следующую команду в корневом каталоге проекта приложения, которое необходимо мониторить:

       android update project –p .

Командная строка android находится в подкаталоге tools каталога android sdk. Необходимо настроить переменную окружения PATH, чтобы команду android можно было использовать напрямую.

I. Скачайте и распакуйте архив агента nbs-newlens-android.zip.

II. Извлеките файл nbs-newlens-android.jar и скопируйте его в каталог libs проекта, в который внедряется код. Если такого каталога нет, необходимо создать и добавить новый каталог libs..

2.2. Настройка разрешений приложения

После сборки добавьте следующие разрешения в файл AndroidMainfest.xml проекта приложения, которое необходимо мониторить:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
                        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
                        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
                        <uses-permission android:name="android.permission.READ_LOGS" />
                        <uses-permission android:name="android.permission.INTERNET" />
                    

2.3. Вставка кода инициализации агента

I. В стартовой MainActivity проекта, в который выполняется внедрение кода, импортируйте класс NBSAppAgent

import com.networkbench.agent.impl.NBSAppAgent;

II. Инициализируйте агент Altynview SDK в методе onCreate() класса MainActivity (если метода onCreate() нет — создайте его вручную):

NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).
                        start(this.getApplicationContext());
                        //Please get the Appkey from Altynview console
                    

III. Инициализация (необязательно) агента Altynview SDK в методе onCreate() класса Application (также создайте onCreate(), если его нет):

Примечание

Данная настройка требуется только для мониторинга производительности многопроцессных приложений.

NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).
                        startInApplication(this.getApplicationContext());
                        //Please get the Appkey from Altynview console
                    

IV. Если сбор данных о геолокации не требуется, используйте следующую настройку:

NBSAppAgent.setLicenseKey("AppKey").start(this.getApplicationContext());
                        //Please get the Appkey from Altynview console
                    

2.4. Настройка временной переменной окружения

Примечание:

Не добавляйте временные переменные в системные переменные, чтобы избежать нежелательных проблем.

I. Настройка переменной в Mac, Linux:

export ANT_OPTS=”-javaagent:/path/to/nbs-android-agent/nbs.newlens.class.rewriter.jar”//path/to/nbs-android-agent/is the absolute directory of the current SDK
                    

II. Настройка временной переменной окружения в Windows:

SETANT_OPTS=”-javaagent:C:\path\to\nbs-android-agent\nbs.newlens.class.rewriter.jar”//path/to/nbs-android-agent/ is the absolute directory of the current SDK
                    

2.5. Сборка пакета с использованием задач Ant

ant clean release install

2.6. Настройка обфускации (Configuration Obfuscation)

I. Чтобы предотвратить случайное нарушение работы агента Altynview SDK, убедитесь, что следующие строки добавлены в конфигурационный файл обфускации proguard:

# ProGuard configurations for NetworkBench Lens
                        -keep class com.networkbench.** { *; }
                        -dontwarn com.networkbench.**
                        -keepattributes Exceptions, Signature, InnerClasses
                        # End NetworkBench Lens
                    

II. Если необходимо сохранить дополнительную информацию о номерах строк, добавьте ещё одну строку в файл proguard.cfg:

-keepattributes SourceFile,LineNumberTable

3. Проверка целостности внедрения кода

I. Проверка целостности сервера сбора данных

II. После завершения процесса внедрения кода выходные данные, записанные агентом Altynview SDK, можно посмотреть через встроенный инструмент LogCat; эти данные можно использовать для проверки целостности на сервере сбора данных. Тег для фильтрации в LogCat — “NBSAgent”. Стандартный формат логов следующий:

NBSAgent start
                        NBSAgent enabled
                        NBSAgent V “Altynview_Version” //Altynview_Version denotes the current SDK
                        connect success
                    

III. Проверка целостности функциональности данных

После завершения процесса внедрения кода выходные данные, записанные зондом Altynview SDK (SDK Probe), можно посмотреть через встроенный инструмент LogCat; эти данные можно использовать для проверки целостности функциональности данных. Тег для фильтрации в LogCat — “NBSAgent”. Стандартный формат логов следующий:

D/Altynview: Crash switch is true
                        D/Altynview: webView switch is true
                        D/Altynview: ANR monitor switch is true
                        D/Altynview: UserAction Switch  is true
                        D/Altynview: cdnSwitch Switch  is true
                    

4. Расширенные функции

4.1. Пользовательский идентификатор

I. Описание функции

Пользовательский идентификатор — это единственная информация, которая уникально идентифицирует текущего пользователя. UserID можно задавать в любом месте без влияния на функциональность.

II. Связанный API

//UserID can be composed of 64 characters at most, including English letters and Chinese characters, numbers, underscores. However, space and other escape characters are not permitted.
                        NBSAppAgent.setUserIdentifier("userIdentifier");
                    

III. Пример кода (Code Sample)

public class MainActivity extends Activity {
                            public void onCreate(BundlesavedInstanceState) {
                                    super.onCreate(savedInstanceState);
                                    String userIdentifier =getUserID();        NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).
                            start(this.getApplicationContext());
                                    NBSAppAgent.setUserIdentifier(userIdentifier);
                                  }
                        }
                    

4.2. Breadcrumb

I. Описание функции

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

II. Связанный API

//At most 100 characters are supported, including English letters, Chinese characters, numbers, and underscores.
                        NBSAppAgent.leaveBreadcrumb("keyPressed”);
                        NBSAppAgent.leaveBreadcrumb("loginDone");
                    

III. Пример кода

public MyActivity extends Activity {
                                 publicvoid onCreate(Bundle savedInstanceState) {
                                        super.onCreate(savedInstanceState);           NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).
                            start(this.getApplicationContext());
                                         NBSAppAgent.leaveBreadcrumb("login MyActivityonCreate");
                                     }
                                     publicvoid onResume() {
                                            super.onResume();
                                            NBSAppAgent.leaveBreadcrumb("login MyActivityonResume");
                                         }
                                         publicvoid logginPressed(View view) {
                                                 NBSAppAgent.leaveBreadcrumb("login MyActivitylogginPressed");
                                                 new LoginAsyncTask.execute();
                                             }
                                             publicvoid onStop() {
                                                     super.onStop();
                                                     NBSAppAgent.leaveBreadcrumb("login MyActivityonStop");
                                                 }
                                    }
                                

4.3. Пользовательское событие

I. Описание функции

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

II. Связанный API (Associated API)

//EVENT_ID supports 32 characters at maximum, including English letters, Chinese characters, numbers, and underscores; however, space and escape characters are not permitted.
                                    NBSAppAgent.onEvent(String EVENT_ID);
                                

III. Code Sample

@Override
                                    public void onClick(View v) {
                                            …………
                                                NBSAppAgent.onEvent("Add to Cart");
                                              …………
                                    }
                                

4.4. Пользовательская трассировка

Примечание:

Из-за присущей Custom Trace связности (coupling) важно учитывать, что этот API нельзя использовать через границы метода или процесса; к другим ситуациям относятся асинхронная загрузка и рекурсивные вызовы.

I. Описание функции

По умолчанию Altynview SDK собирает данные о производительности системных классов и методов, но не может собирать аналогичные данные по пользовательским классам и методам, написанным разработчиками. Здесь помогает Custom Trace: она позволяет получать сведения о надёжности кода и данных производительности. Например, если разработчика интересует время выполнения инициализации и его влияние на производительность конкретного метода, можно добавить вызовы Custom Trace в начале и в конце этого метода, чтобы достичь этих целей.

II. Связанный API

//To make it easier to distinguish from the rest of the logging output, the name is often set to the identifier of the current method (it can be set to arbitrary string value). The supported character set includes English letters, Chinese characters, numbers, underscores; space and other escape characters are not supported.
                                    NBSAppAgent.beginTracer("String Name");
                                    NBSAppAgent.endTracer("String Name");
                                

III. Пример кода

//Custom Trace can be added at the beginning or end of any method as long as the SDK is initialized.
                                    public void onCreate(Bundle savedInstanceState) {
                                              super.onCreate(savedInstanceState);
                                              setContentView(R.layout.main);
                                              init();
                                             }
                                        private void init() {
                                                 //Add beginTracer call at the beginning of a method.
                                                 NBSAppAgent.beginTracer(“这是Init方法”); 
                                                    try {
                                                            ………
                                                        } catch(NameNotFoundException e) {
                                                               e.printStackTrace();
                                                            }
                                                         //Then add endTracer al the end of a method.
                                                         NBSAppAgent.endTracer(“这是Init方法”);
                                                }
                                            

4.5. Пользовательский лог

Примечание:

Для сбора информации из LogCat требуется специальное разрешение READ_LOGS. Добавьте следующую строку в файл AndroidManifest.xml приложения. По умолчанию собирается 50 строк логов; это количество можно увеличить максимум до 100 строк.

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

I. Описание функции

Разработчики могут собирать и просматривать системный отладочный вывод через встроенный Android-инструмент логирования LogCat; информацию о приложении можно анализировать по логам при возникновении ошибок. Кроме того, пользовательский лог-вывод может быть загружен через Altynview SDK.

II. Переключатель интерфейса управления

NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).enableLogging(true).
                                                start(this.getApplicationContext());
                                            

III. Связанный API (Associated API)

NBSAppAgent.setLogging(int lineNumber);
                                                NBSAppAgent.setLogging(String filter);
                                                NBSAppAgent.setLogging(int lineNumber,String filter);
                                            

IV. Пример кода

public void onCreate(Bundle savedInstanceState) {
                                                super.onCreate(savedInstanceState);
                                                     setContentView(R.layout.main);
                                                      // Enablelogging
                                                 NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).
                                                enableLogging(true).start(this.getApplicationContext());
                                                          // Log last 100messages
                                                         NBSAppAgent.setLogging(100);
                                            }
                                        

4.6. Пользовательская дополнительная информация

I. Описание функции

Разработчики могут использовать этот API в любом месте при условии, что он вызывается после кода инициализации. Можно добавить до 10 сообщений с дополнительной информацией; каждое сообщение допускает загрузку до 100 байт при возникновении сбоя (crash).

II. Связанный API

NBSAppAgent.setUserCrashMessage(String key,Stringvalue);

III. Пример кода

public void onCreate(Bundle savedInstanceState) {
                                            super.onCreate(savedInstanceState);
                                                 setContentView(R.layout.main);              NBSAppAgent.setLicenseKey("AppKey").withLocationServiceEnabled(true).
                                            start(this.getApplicationContext());
                                                  //Custom supplementary information can be inserted at any place after the initialization code
                                                  NBSAppAgent.setUserCrashMessage(“张三”,“13700001234”);
                                        }
                                    

5. Настройка локального конфигурационного файла

5.1. Создание файла конфигурации Altynview.properties

Создайте файлы конфигурации Altynview.properties как в корневом каталоге проекта, так и в каталоге модуля (module level), в который внедряется код.

5.2. Настройка анти-обфускации для сбоев

Altynview SDK предоставляет два способа настройки анти-обфускации.

Загрузка файла mapping на странице отчётов

I. Выберите модуль “Crash” в интерфейсе отчётов и нажмите “dSYM/Mapping File Management” в “Crash History List”.

II. Сначала найдите соответствующую версию, затем загрузите локальный файл mapping.

Автоматическая загрузка mapping через изменение Altynview.properties

I. Добавьте следующие строки в файл Altynview.properties:

authKey=Altynview API authentication key, auto-generated on the reporting page
                                        appKey=Altynview AppKey
                                        mapping_file_auto_upload=true
                                    

II. Настройка кода аутентификации AuthKey

a.  После входа на страницу отчётов выберите “Authentication Code”.

b.   Скопируйте текущий код аутентификации и вставьте его в файл Altynview.properties.

III. Настройка AppKey

Это тот же AppKey, что и в файле Altynview.properties; получите его после нажатия “Change Settings”.

IV. Настройка переключателя

mapping_file_auto_upload=true

V. Включение обфускатора
Переключатель mapping_file_auto_upload будет работать корректно только при включённом обфускаторе. После включения переключателя Altynview SDK автоматически загрузит локальный файл mapping на облачный сервер Altynview. Эта настройка не будет работать, если обфускатор не включён.

5.3. Настройка переключателя управления OkHttp

Примечание:

По умолчанию Altynview SDK внедряет код в библиотеку OkHttp серии 2.0. Выберите соответствующую версию для настройки; конфигурации, затрагивающие более одной версии, не допускаются.

I. Если используется OkHttp серии 2.0 — пропустите этот шаг.

II. Если используется OkHttp серии 3.0, добавьте следующую строку в Altynview.properties:

okhttp3.0=true

III. Если используется OkHttp серии 1.0, добавьте следующую строку в конфигурационный файл “Altynview.properties”:

okhttp2.0=false

5.4. Настройка переключателя WebView

Примечание:

Данные производительности по WebView (H5) собираются через callbacks в JavaScript; включите переключатель JavaScript callback:

WebView.setWebContentsDebuggingEnabled(**true**);

Разрешение JavaScript callbacks может нарушать безопасность системы на Android 4.0; если безопасность является приоритетом, рекомендуется включать эту опцию (или не использовать её) только на Android версии 5.0 или выше.

I. Добавьте следующую строку в Altynview.properties:

webview=true

II. Сбор данных WebView требует дополнительного вызова setWebViewClient. Если приложение не вызывает этот метод, добавьте:

webview.setWebViewClient(new WebViewClient(){});

Приложения

Поддерживаемые протокольные библиотеки

HttpURLConnection

AndroidHttpClient
 4.0

Apache HttpClient ( > 4.0)

Volley+OkHttpClient

OkHttp 2.0 ( > 2.1)

OkHttp 1.0

Retrofit (> 1.9)

WebView(Native)

Поддерживаемая версия ОС устройств

Android2.0 ~ Android7.0

Поддерживаемый сбор данных

Android SDK Agent может собирать следующие метрики использования путём внедрения блоков кода в определённые методы; данные на уровне методов, а также записи вызовов можно запрашивать напрямую с серверов отчётности  

Application Response Time (время отклика приложения)

DNS Resolution Time (время разрешения DNS)

TCP Connection Establishment Time (время установления TCP-соединения)

SSL Hand-Shake Time (время SSL-рукопожатия)

Initial Packet Arrival Time (время получения первого пакета)

Page Views (просмотры страниц)

Кроме того, Android SDK Agent может использоваться для сбора дополнительных данных по пулам потоков, базам данных, пользовательским параметрам и полям HTTP Request/Response.