【Android Studio】原生应用部署第三方插件(探针)

news2024/11/19 3:18:59

一、本地引入包流程

(一)本地引入包内容

在这里插入图片描述

(二)本地引入包操作步骤

将 【probe-android-sdk】目录里面所有的aar包复制到嵌码项目工程(App级别)的 libs 目录下
在这里插入图片描述

二、添加插件

(一)在 project 级别的 build.gradle 文件中plugins {}上下分别插入以下内容:

buildscript {
    dependencies {
        classpath fileTree(dir: 'rewriter', include: ['*.jar'])//将 sdk 的 rewriter
        //文件夹解压到 project 级别的 build.gradle 文件同级目录下,rewriter 文件夹中的 jar 包仅
        //在编译时使用,不会打包到 apk 中
    }
}

------------这两个引用中间是原配置plugins {}的位置--------------

allprojects {
    repositories {
        flatDir {
            dirs 'libs'// 集成本地 aar 包需添加此配置
        }
    }
}

(二)在 app 级别的 build.gradle 文件中添加以下内容

apply plugin:'newlens'// 放在 apply plugin: 'com.android.application' 下面
dependencies {
    // 采集natvie crash
    implementation(name: 'nbs.newlens.nativecrash', ext: 'aar')
    // 日志回捞
    implementation(name: 'nbs.newlens.android.log', ext: 'aar')
    // 采集 OOM
    implementation(name: 'tingyun-javaleak', ext: 'aar')
    implementation(name: 'tingyun-basemonitor', ext: 'aar')
    implementation(name: 'tingyun-android-base', ext: 'aar')
    implementation(name: 'tingyun-dump', ext: 'aar')
    // 探针sdk
    implementation(name: 'tingyun-ea-agent-android', ext: 'aar')
    implementation(name: 'probe-sdk-1.0.5', ext: 'aar')
}

三、初始化 SDK

在这里插入图片描述

(一)在 Application 中的 onCreate() 方法初始化 SDK

//"AppKey" 请从基调听云平台获取
//"host" 为基调听云平台「Redirect」服务器地址,无需添加协议头
NBSAppAgent.setLicenseKey("92de9f9063d5474690b68502b71767d6").setRedirectHost("203.0.105.6:10100").start(this.getApplicationContext());

在这里插入图片描述

(二)SDK 默认以 Https 上传数据,若服务端只支持 Http,需设置 「setHttpEnabled(true)」

NBSAppAgent.setLicenseKey("92de9f9063d5474690b68502b71767d6").setRedirectHost("203.0.105.6:10100").setHttpEnabled(true).start(this.getApplicationContext());

(三)初始化SDK使用HTTP无法连接服务器

SDK 默认以 HTTPS 上传数据,若服务端只支持 HTTP,需设置 「setHttpEnabled(true)」。Android 9.0 及以上版本会限制 HTTP 请求,可以通过添加 network_security_config.xml 配置解决。

  1. 在res/xml/目录,然后新建network_security_config.xml 文件。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>    
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 在清单文件的 application 中添加 networkSecurityConfig
android:networkSecurityConfig="@xml/network_security_config"

四、权限配置说明

SDK 为了与服务端交互「网络权限」为必要权限

<!--必要权限,用以与服务端交互-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--非必要权限,用以获取当前设备的网络状态和WiFi状态,如:3G、4G、5G、WiFi,建议添加-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--非必要权限,用以获取 targetSdkVersion 29 及以上、 Android 10 及以上设备的网络状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--非必要权限,用以使用「可视化操作命名功能」-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
<!--非必要权限,用以获取当前移动网络连接的基站信息-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

在这里插入图片描述

五、开启可视化命名(可选配置)

(一)获取 Scheme-在应用「设置」中的「修改设置」中选择【URL Scheme】

在这里插入图片描述

(二)在 AndroidMainfest.xml 文件的「LAUNCHER Actvitiy」中增加 scheme 配置,如下所示:

                <!--请添加这里的整个intent-filter区块,并确保其中只有一个data字段-->
                <intent-filter>
                    <data android:scheme="tingyun.7050" />
                    <action android:name="android.intent.action.VIEW"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                    <category android:name="android.intent.category.BROWSABLE"/>
                </intent-filter>
                <!--请添加这里的整个intent-filter区块,并确保其中只有一个data字段-->

在这里插入图片描述

六、首次启动开启模块功能开关

出于兼容性考虑, 首次启动 SDK 仅在调试模式下开启全部功能模块,非调试模式下仅开启崩溃模块,可通过以下接口开启 SDK 的模块开关
模块功能开关接口

/*
 SDK首次初始化由于尚未与基调听云平台交互,默认模块开关仅开启「崩溃模块」,可以通过本接口自定义首次启动开启的模块。
 @warning:调用该接口设置启动选项,SDK首次启动不受基调听云平台开关控制
 */
NBSAppAgent.setStartOption(int option);

代码示例

//在SDK初始化时调用, 首次启动全部功能模块
NBSAppAgent.setLicenseKey("92de9f9063d5474690b68502b71767d6").setRedirectHost("203.0.105.6:10100").setStartOption(16383).start(this.getApplicationContext());//首次初始化开启全部功能

七、添加 WebView 配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码规范 —— 数据库规范

优质博文&#xff1a;IT-BLOG-CN 一、建表规范 【1】表达是与否概率的字段&#xff0c;必须使用is_xxx的方式命令&#xff0c;数据类型是tinyint&#xff08;1表示是&#xff0c;0表示否&#xff09; 正例&#xff1a;表达逻辑删除的字段名is_active&#xff0c;0表示删除&a…

Missing or invalid credentials.(Git push报错解决方案)

参考博客&#xff1a;1 2 git push后报错Missing or invalid credentials的解决方案 1.右侧选择配置编辑器 2.搜索git.terminalAuthentication 把勾勾取消掉。 3.重启vscode。

3D数字人能一键生成?

最近有好多人询问数字人的情况&#xff0c;昨天遇到一个客户&#xff0c;我把数字人作品发给他看&#xff0c;他说“不像”&#xff0c;我把国际上别人做得最好的数字人发给他看&#xff0c;他还是说“不像”&#xff0c;我就知道这个客户没得谈了。后来我把网易公司做的数字人…

文件上传漏洞 思路方法总结

目录 为什么存在文件上传漏洞 一句话木马 文件上传攻击方式 前段验证 文件Content——Type绕过攻击 .htaccess文件绕过 文件后缀绕过攻击 文件截断绕过 竞争条件攻击 其余绕过方式 1 换行绕过&#xff1a;上传文件&#xff0c;在文件名后缀处添加换行 2 等号绕过&a…

气膜大棚:高价值花卉种植的理想选择—轻空间

在现代农业技术不断进步的今天&#xff0c;气膜大棚作为一种创新型的农业设施&#xff0c;逐渐被广泛应用于高价值花卉的种植。气膜大棚凭借其卓越的性能和环保特性&#xff0c;成为了花卉种植者们的理想选择。 气膜大棚通常采用PVDF膜材料&#xff08;聚偏二氟乙烯&#xff09…

书生大模型实战营-入门关卡-Python 基础知识

任务&#xff1a; https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Python/task.md 完成&#xff1a; 任务1&#xff1a;Python实现wordcount import re from collections import defaultdictdef wordcount(text):# 转换为小写并使用正则表达式分割单词words re.…

单细胞测序全基因组扩增(WGA)方法

1. 全基因组扩增&#xff08;whole-genome amplification&#xff0c; WGA&#xff09; 单细胞扩增能将pg级或fg级的单细胞DNA扩增为可满足测序要求的ug级DNA量&#xff0c;从而使单细胞测序变为可能。目前存在的主要三种扩增方法有&#xff1a;简并寡核苷酸引物PCR扩增&#…

一起学习LeetCode热题100道(32/100)

32.随机链表的复制(学习) 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应…

LLM - 使用 Ollama + OpenWebUI 在 Linux 服务器中高效部署大语言模型

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/140992533 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Ollama 是一个开源的大型语言模型(LLM)服务工具,目的是简化本地运行…

java消息队列ActiveMQ

安装 前置条件 activemq的运行依赖于jdk&#xff0c;需要提前安装jdk如果已经安装了jdk&#xff0c;需要根据jdk的版本来选择对应的版本进行安装activemq版本对应在官网上&#xff0c;使用java -version 看jdk的版本注意&#xff1a;jdk和mq的版本不一致会报错&#xff0c;电脑…

Python 异步编程:Sqlalchemy 异步实现方式

SQLAlchemy 是 Python 中最流行的数据库工具之一&#xff0c;在新版本中引入了对异步操作的支持。这为使用异步框架&#xff08;如 FastAPI&#xff09;开发应用程序带来了极大的便利。在这篇文章中&#xff0c;简单介绍下 SQLAlchemy 是如何利用 Greenlet 实现异步操作的。 什…

【计算机组成原理】2.CPU的原理

CPU的原理 为什么讲线程要讲CPU&#xff1f;因为线程和CPU有一对一的对应关系&#xff01;&#xff08;超线程除外&#xff09; 当然&#xff0c;现代的计算机的核心&#xff0c;也就是芯片&#xff0c;是由10 0000 0000 个零件构成&#xff0c;我没有办法带你走遍这里面的每…

java.nio.charset.MalformedInputException: Input length = 1

1、问题 项目启动报错&#xff1a; Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1提示原因&#xff1a; Caused by: java.nio.charset.MalformedInputException: Input length 1…

机器学习-线性回顾

线性回归 线性回归1. 简介2. 线性回归问题求解3. 欠拟合与过拟合 线性回归 1. 简介 """ 简介:定义:利用回归方程对一个或多个自变量(特征值)和因变量(目标值)之间关系 进行建模的一种分析方式公式:见下图分类:一元线性回归:目标值与一个因变量有关系多远线性回…

PMP–知识卡片--盈亏平衡分析

盈亏平衡分析是通过盈亏平衡点&#xff08;BEP&#xff09;分析项目成本与收益的平衡关系的一种方法。各种不确定因素&#xff08;如投资、成本、销售量、产品价格、项目寿命期等&#xff09;的变化会影响投资方案的经济效果&#xff0c;当这些因素的变化达到某一临界值时&…

S2S服务端上报Appsflyer和Firebase事件

S2S 服务端上报 Appsflyer 和 Firebase 事件 Appsflyer 事件上报 接口文档地址&#xff1a;Send Event 你可以在 appsflyer 注册一个测试 APP 用于测试&#xff0c;选择 Android 项目比较好创建。 必填参数及 Api Secret 获取 点击在页面左侧 “Configuration - App Setting…

CentOS 介绍

引出 Linux 系统内核与 Linux 发行套件系统的区别&#xff1f; Linux 系统内核指的是一个由 Linus Torvalds&#xff08;Linux之父&#xff0c;内核主要开发者&#xff09;负责维护&#xff0c;提供硬件抽象层、磁盘、文件系统控制及多任务功能的系统核心程序。 Linux 发行套…

【Git】VS Code 中文件右侧字母(A M U)含义

VS Code项目关联git后&#xff0c;常常会出现如下标识 其中 M Modified 已经在仓库中添加过该文件&#xff0c;然后你对这个文件进行了修改&#xff0c;就会文件后标记M U Untracked 本地新建了这个文件&#xff0c;还未提交到仓库上&#xff0c;就会标记U D Delete 本…

sourcemap使用

sourcemap是什么以及怎么生成就不过多阐述了&#xff0c;这是之前看到的一篇文章感觉介绍的很详细&#xff1a;弄懂 SourceMap&#xff0c;前端开发提效 100% 浏览器加载sourcemap 我们线上代码一般不会开启sourcemap&#xff0c;在排查线上的问题时&#xff0c;可以通过浏览器…

信创安全 | 新一代内网安全方案—零信任沙盒

在当今数字化时代&#xff0c;访问安全和数据安全成为企业面临的重要挑战。传统的边界防御已经无法满足日益复杂的内网办公环境&#xff0c;层出不穷的攻击手段已经让市场单一的防御手段黔驴技穷。当企业面临越来越复杂的网络威胁和数据泄密风险时&#xff0c;更需要一种综合的…