Чтение заметок - полное скрытое решение для Android
После прочтения «Android Full Buried Point Solution» я могу резюмировать его в одном предложении:
как использовать возможности, предоставляемые системой Android, для реализации полноценных скрытых точек, максимально не вторгаясь в исходную бизнес-логику. То есть реализовать разделение точки захоронения и бизнеса.
1. Краткое изложение первых трех глав
Глава 1:
Полная точка захоронения: относится к возможности автоматического сбора данных о поведении пользователей заранее без необходимости для инженеров-разработчиков писать код или писать только небольшой объем кода.
Типы событий всех скрытых точек: включают: $AppStart, $AppEnd, $AppViewScreen, $AppClick
Метод прослушивания привязки представления: 1.setOnClickListener 2.android:onClick= 3.Аннотация @OnClick 4.Прослушиватель привязки DataBinding
Глава 2: $AppViewScreen
Application.ActivityLifecycleCallbacks (API 14+)
может централизованно обрабатывать (отслеживать) все события жизненного цикла Activity.Вы
можете увеличить скрытую точку доступа к странице в методе onActivityResumed(). Следует отметить, что если на текущей странице появится всплывающее окно для подачи заявки на разрешения, а затем возврат на текущую страницу, onResume будет выполняться снова, а страницу игнорирования можно добавить через метод ignoreAutoTrackActivity.
Глава 3: $AppStart , $AppEnd
регистрирует application.registerActivityLifecycleCallbacks, запускает $AppStart в onActivityStarted и запускает таймер в onActivityPaused.
2. Краткое изложение последних восьми глав
В последних восьми главах рассказывается о схеме сокрытия кликов , которая является очень важной частью бизнеса.
Решение 1.
Зарегистрируйте Application.ActivityLifecycleCallbacks, получите VIEW (FrameLayout), соответствующий всей области содержимого R.id.content в onActivityResumed, пройдите RootView, получите mOnclickListener текущего View путем отражения, установите собственный прокси-сервер WrapperOnClickListener , и вызвать исходный прослушиватель внутри логики плюс скрытую логику.
Решение 2:
Window.Callback
регистрирует обратный вызов.В onActivityCreated Activity.getWindow() получает Window, вызывает window.getCallback() и делегирует dispatchTouchEvent в Window.Callback, находит выбранный View с помощью параметра MotionEvent и вставляет Логика скрытой точки ; Затем вызовите метод dispatchTouchEvent исходного Window.Callback.
Решение 3.
Прокси-представление View.AccessibilityDelegate
в onActivityResumed, получение RootView через activity.getWindow().getDecorView, рекурсивный обход RootView, прокси-представление mAccessibilityDelegate и оценка того, является ли тип события AccessibilityEvent.TYPE_VIEW_CLICKED.
Решение 4.
Прозрачный слой
Настройте прозрачный вид, добавьте его в верхний слой каждого действия (добавьте прозрачный слой в обратном вызове onActivityCreated) и щелкните прозрачный вид.
Перепишите onTouchEvent представления в соответствии с координатами щелчка (x, y) MotionEvent, найдите фактически щелкнутое представление в корневом представлении текущего действия, проксируйте mOnClickListener представления и вставьте скрытую точку.
Решение 5.
AspectJ
ориентирован на фасеты и вставляет встроенный код после выполнения целевого метода посредством сопоставления точек.
AspectJ — это реализация АОП-мысли.
Решение 6. Прежде чем
ASM
упакует и сгенерирует файл .dex, используйте API-интерфейс Transform для управления файлом .class, пройдите метод файла .class, измените прослушиватель и замените исходный файл.
Используйте API-интерфейс платформы ASM для загрузки и анализа файлов .class, поиска файлов .class и связанных методов, соответствующих определенным условиям, и изменения методов для вставки скрытых точек.
Решение 7. Принцип
Javassist
аналогичен принципу ASM, а среда для работы с файлами .class заменена на Javassist.
Решение 8. Общий поток обработки кода в редакторе
AST
:
JavaTXT -> лексический анализ -> создание AST -> семантический анализ -> компиляция
метода обработки пользовательских аннотаций байт-кода, обход API кадра AST, поиск целевого метода, вставка логика скрытой точки.