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

Установка Altynview Android SDK — Gradle

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

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

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

2.1. Настройка зависимостей проекта

Примечание:

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

I. Откройте файл “build.gradle” (project) в корневом каталоге.

II. Добавьте следующий код в блок (closure) “buildscript”.

classpath 'com.networkbench.newlens.agent.android:agent-gradle-plugin:Altynview_Version'
                        //Altynview_Version stands for the current version of the Altynview APP
                    

III. Откройте другой файл “build.gradle” (Module) в каталоге основного модуля (main module).

IV. Добавьте в файл инструкцию “mavenCentral()”.

repositories {
                        mavenCentral()
                    }
                

V. Затем добавьте следующий код в блок (closure) “dependencies”.

compile "com.networkbench.newlens.agent.android:nbs.newlens.agent:Altynview_Version" 
                    // Altynview_Version stands for the current version of the Altynview APP
                

VI. Наконец, включите плагин таблицы символов (symbol table plugin), предоставляемый Altynview.

apply plugin:'newlens'
                

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

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

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

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

I. В стартовой “MainActivity” проекта, в который будет внедрён код, импортируйте класс NBSAppAgent:

import com.networkbench.agent.impl.NBSAppAgent;

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

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

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

Примечание:

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

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

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

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

2.4. Сборка пакета с использованием Gradle

gradle clean build

2.5. Настройка обфускации

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

# ProGuard configurationsfor NetworkBench Lens
                    -keep classcom.networkbench.** { *; }
                    -dontwarncom.networkbench.**
                    -keepattributesExceptions, Signature, InnerClasses
                    # End NetworkBench Lens
                

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

-keepattributesSourceFile,LineNumberTable

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

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

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

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

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

После завершения процесса внедрения кода итоговый вывод, записанный агентом Altynview SDK, можно просмотреть через встроенный инструмент “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 может помочь разработчикам находить потенциальные причины случайных сбоев; это делает удобным воспроизведение событий сбоя при совмещённом знании путей выполнения кода и трассировок (tracebacks).

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

//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. Пример кода

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

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

Примечание:

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

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

При настройках по умолчанию Altynview SDK собирает данные о производительности классов и методов системного уровня; однако он не может собирать аналогичные данные по пользовательским классам и методам, написанным разработчиками. Здесь на помощь приходит “Custom Trace”: она помогает разработчикам получать представление о устойчивости кода (robustness) и данных производительности. Например, если разработчикам интересно, как влияет на производительность время выполнения инициализации для конкретного метода, они могут добавить вызовы “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”; информацию о приложении можно анализировать по log-выводу при появлении ошибок; кроме того, пользовательский log-вывод может быть загружен через Altynview SDK.

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

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

III. Связанный 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. Настройка анти-обфускации при сбоях (Mapping)

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

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

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

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

Автоматическая загрузка файла “mapping” через изменение конфигурации “Altynview.properties” (Auto Upload “mapping” File by Modifying “Altynview.properties” Configuration)

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”.

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

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

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

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(){});

Приложения (Appendices)

Поддерживаемая протокольная библиотека (Supported Protocol Class Library)

HttpURLConnection

AndroidHttpClient
 4.0

Apache HttpClient ( > 4.0)

Volley+OkHttpClient

OkHttp 2.0 ( > 2.1)

OkHttp 1.0

Retrofit (> 1.9)

WebView(Native)

Поддерживаемая система устройств (Supported Device System)

Android2.0 ~ Android7.0

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

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

Application Response Time

DNS Resolution Time

TCP Connection EstablishmentTime

SSL Hand-Shake Time

Initial Packet Arrival Time

Page Views

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