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

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

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

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

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

2.1. Установка агента (Install the Agent)

Примечание:

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

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

II. Скопируйте распакованный файл “nbs-newlens-agent.jar” в подкаталог “libs” проекта, в который вы хотите внедрить код агента Altynview SDK. Если этот подкаталог отсутствует, необходимо сначала вручную создать “libs”, прежде чем копировать в него библиотеку “jar”.

2.2. Настройка переменных Java Virtual Machine для Altynview

I. Нажмите IntelliJ IDEA -> Preferences…

II. Измените параметр “Additional VM” на:

-javaagent:/path/nbs.newlens.class.rewriter.jar (the absolute directory path of the file just mentioned)

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

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

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

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

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 console
                    

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

Примечание:

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

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

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

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

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

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. Проверка целостности внедрения кода (Code Injection Integrity Check)

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”, — “Altynview”. Стандартный вывод логов должен быть в следующем формате:

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

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

//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 связности важно отметить, что этот 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”; информацию о приложении можно анализировать по 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”

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

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

TCP Connection EstablishmentTime

SSL Hand-Shake Time

Initial Packet Arrival Time

Page Views

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