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

一、本地引入包流程

(一)本地引入包内容

在这里插入图片描述

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

将 【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 crashimplementation(name: 'nbs.newlens.nativecrash', ext: 'aar')// 日志回捞implementation(name: 'nbs.newlens.android.log', ext: 'aar')// 采集 OOMimplementation(name: 'tingyun-javaleak', ext: 'aar')implementation(name: 'tingyun-basemonitor', ext: 'aar')implementation(name: 'tingyun-android-base', ext: 'aar')implementation(name: 'tingyun-dump', ext: 'aar')// 探针sdkimplementation(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.rhkb.cn/news/394435.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt文件读写

Qt中文件读写类简述 包含头文件#include <QFile> 读写模式如下 枚举 文件读写步骤 1 先使用string 类型来接受打开文件的返回值 QFileDialog::getOpenFileName(this,"文件","./"); //打开一个文件 2 构建文件对象 Qfile ff (qstring)接受打…

“前缀和”专题篇一

目录 【模版】前缀和 【模版】二维前缀和 寻找数组的中心下标 除自身以外数组的乘积 【模版】前缀和 题目 思路 这道题如果使用暴力解法&#xff0c;即针对每次查询&#xff0c;先算出前r个数的总和&#xff0c;然后再算出前l-1个数的总和&#xff0c;然后相减就得出本次查…

【MYSQL】MYSQL逻辑架构

mysql逻辑架构分为3层 mysql逻辑架构分为3层 1). 连接层&#xff1a;主要完成一些类似连接处理&#xff0c;授权认证及相关的安全方案。 2). 服务层&#xff1a;在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的&#xff0c;包括权限判断&#xff0c;SQL接口&…

三数之和-Leetcode

leetcode链接&#xff1a;三数之和 题目描述 解题思路 主要要思考以下几个问题&#xff1a; 如何选取三个元素&#xff1f;— 当前节点 左指针 右指针指针开始位置&#xff1f;— 左指针 当前节点位置 i 1&#xff0c; 右指针 n - 1如何保证不重复&#xff1f; — 先把…

利用自然语言处理(NLP)技术挖掘旅游评论数据

目录 简单了解 延伸 如何使用自然语言处理技术提高旅游评论情感倾向的准确性&#xff1f; 旅游评论数据中多模态信息融合的最佳实践是什么&#xff1f; 在旅游评论数据预处理和清洗过程中&#xff0c;哪些方法最有效&#xff1f; 使用Python网络爬虫技术进行旅游评论数据的…

Python酷库之旅-第三方库Pandas(072)

目录 一、用法精讲 291、pandas.Series.dt.round函数 291-1、语法 291-2、参数 291-3、功能 291-4、返回值 291-5、说明 291-6、用法 291-6-1、数据准备 291-6-2、代码示例 291-6-3、结果输出 292、pandas.Series.dt.floor函数 292-1、语法 292-2、参数 292-3、…

关于手机中的红外遥控

在手机电路中&#xff0c;有这么不起眼的一部分&#xff0c;虽看似简单&#xff0c;但是却给我们的生活在一定程度上带来了极大的便捷-红外遥控部分。 其置于手机顶部&#xff0c;并在壳体处挖开一个小孔&#xff0c;用于红外信号对外界的传递。如果你感兴趣的话&#xff0c;不…

Go语言项目实战班04 Go语言课程管理系统项目实战 20240807 课程笔记和上课代码

预览 课程特色 本教程录制于2024年8月8日&#xff0c;使用Go1.22版本&#xff0c;基于Goland2024进行开发&#xff0c;采用的技术栈比较新。 每节课控制在十分钟以内&#xff0c;课时精简&#xff0c;每节课都是一个独立的知识点&#xff0c;如果有遗忘&#xff0c;完全可以当…

基于JSP技术的人事管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; JSP技术 Java语言 工具&#xff1a; Myeclipse 系统展示 首页 管理员功能模块 员工功能模…

攻击者劫持 Facebook 页面用于推广恶意 AI 照片编辑器

近日&#xff0c;有攻击者劫持了 Facebook 上的网页&#xff0c;诱骗用户下载一个合法的人工智能&#xff08;AI&#xff09;照片编辑器&#xff0c;但实际上他们真正下载的却是一个专门用以盗取用户的凭据信息窃取程序。 趋势科技的研究人员发现的这一恶意广告活动利用了人工…

什么是实时数据仓库?它有哪些不可替代之处?

【实时数据仓库】可以分开来理解&#xff1a; ✅【实时数据】&#xff1a;即能够快速处理数据&#xff0c;且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】&#xff1a;可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是&#xff1a;…

Stable Diffusion绘画 | 图生图-批量处理

批量处理中&#xff0c;对待处理图片的要求&#xff1a;宽高比一致 修改提示词后批量处理 调整参数&#xff1a; 确保宽高与原图一致增加一定的重绘幅度 调整提示词信息&#xff1a; 批量处理后&#xff0c;出图如下所示&#xff1a; 修改模型后批量处理 恢复提示词&#xf…

HTTP:从基础概念到协议机制,详解请求响应与状态保持

文章目录 一、HTTP概述1、HTTP的理解2、HTTP是无状态的协议 二、HTTP协议的过程1、URL&#xff08;统一资源定位符&#xff09;2、客户端3、服务器端 三、HTTP请求与响应1、HTTP请求和响应2、HTTP请求方法3、状态码 四、HTTP报文1、请求报文首部2、响应报文首部3、首部字段 五、…

Gstreamer实现udp帧数据的转发(一)

前言 最近有个项目&#xff0c;要求实现信息分发&#xff0c;大概意思是经过了各种交换机和电台&#xff0c;经过两个信息分发软件实现udp数据的转发&#xff0c;可能包括文本、指令、音视频等数据。 例如&#xff1a;设备1 《---》 设备2&#xff08;信息分发软件1&#xff09…

基于STM32的摇杆开关控制小恐龙游戏(附源码)

文章目录 一、 前言谷歌小恐龙 二、硬件三、软件3.1 摇杆开关3.2 OLED屏幕 四、展示五、总结 一、 前言 最近有看到别人在OLED屏幕上玩小恐龙&#xff0c;所幸查阅下资料&#xff0c;并下好源码。可惜他的源码的主控是STM32F103ZET6&#xff0c;用的是STM32CubeIDE&#xff0c…

vue3学习day04-provide和inject、defineOptions、defineModel、Pinia、pinia持久化

15、provide和inject &#xff08;1&#xff09;作用&#xff1a;顶层组件向任意的底层组件传递数据和方法&#xff0c;实现跨层组件通信 &#xff08;2&#xff09;语法&#xff1a; 1&#xff09;顶层组件通过provide函数提供数据 2&#xff09;底层函数提供inject获取数据…

AR眼镜:重型机械维修保养新利器

重型机械作为工业与建设领域的重要支柱&#xff0c;其稳定运行直接影响效率与成本。然而在偏远地区&#xff0c;面临复杂故障和高昂维修成本&#xff0c;传统维修方式常显得力不从心。如今&#xff0c;安宝特的AR远程协助解决方案结合Vuzix AR眼镜&#xff0c;正悄然改变这一现…

常见八股面试题:Dubbo 和 Spring Cloud Gateway 有什么区别?

大家好&#xff0c;我是鸭鸭&#xff01; 此答案节选自鸭鸭最近弄的面试刷题神器面试鸭&#xff0c;更多大厂常问面试题&#xff0c;可以点击进行阅读哈&#xff01; 目前这个面试刷题神器刚出&#xff0c;有网页和小程序双端可以阅读&#xff01; 回归面试题&#xff01; …

【每日刷题】Day96

【每日刷题】Day96 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCP 44. 开幕式焰火 - 力扣&#xff08;LeetCode&#xff09; 2. 1022. 从根到叶的二进制数之和 - …

栈和队列(数据结构)

1. 栈(Stack) 1.1 概念 栈 &#xff1a;一种特殊的线性表&#xff0c;其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO &#xff08; Last In First Out &#xff09;的原…