首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【最佳实践】巡检项:实时音视频 (TRTC) 原生平台 SDK 终端版本分布情况

问题/风险描述: 用Android 11(APIs level 30)的手机打开应用,然后调用SDK进房接口,会出现崩溃现象。...这个崩溃问题只出现Android API level 29+的设备上,根据客户分开该问题已触发40多次。...通过客户反馈的crash的堆栈信息排查,定位到TRTC SDK(version:8.3)内部一个模块在获取网络状态信息时候,调用了一个Android SDK已被移除的API,导致App崩溃。...image.pngimage.png解决方案: 通过上面的问题排查和定位,确认是老版本SDK(8.3)调用了系统过期的API导致的,针对这个问题,TRTC SDK在新的版本做了兼容安卓11兼容性的处理...因为是底层接口问题,没有其他的临时解决方案,要彻底规避这个问题,需要客户把SDK版本升级到最新版本。案例说明:某客户因为优化该隐患,避免了因为Android 11普及导致的故障率急剧上升。

45330

Android照片墙应用实现,再多的图片也不怕崩溃

照片墙这种功能现在应该算是挺常见了,在很多应用中你都可以经常看到照片墙的身影。...制作类似于这种的功能的应用,有一个非常重要的问题需要考虑,就是图片资源何时应该释放。...因为随着GridView的滚动,加载的图片可能会越来越多,如果没有一种合理的机制对图片进行释放,那么当图片达到一定上限时,程序就必然会崩溃。...今天我们照片墙应用的实现,重点也是放在了如何防止由于图片过多导致程序崩溃上面。...之后调用了setImageView()方法为ImageView设置一张图片,这个方法首先会从LruCache缓存中查找是否已经缓存了这张图片,如果成功找到则将缓存中的图片显示在ImageView上,否则就显示一张默认的空图片

1.6K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    速读原著-Android应用开发入门教程(Android SDK的开发环境)

    API 配合进行应用程序层次的开发。...),默认的内存盘映像 (ramdisk image)等等,这些映像是仿真器运行的时候需要使用的; samples/:包含一系列的应用程序,可以在 Android 的开发环境中,根据它们建立工程,编译并在仿真器上运行...that are specific to the platform version. android.jar:Android 库文件的 JAVA 程序包,在编译本平台的 Android 应用程序的时候被使用...通过扩展 Eclipse 集成环境功能,使得生成和调试 Android 应用程序既容易又快速。...提供了一个新的项目向导(New Project Wizard),帮助你快速生成和建立起新 Android 应用程序所需的最基本文件 使构建 Android 应用程序的过程变得自动化,以及简单易行。

    93320

    Android WebView 诊断与排查问题的方法和技巧

    WebView,是安卓中很重要的一个组件,我们的应用中集成WebView后,可能会遇到各种各样的问题,这里简单介绍一些Android WebView 诊断与排查问题的方法,希望对于大家有这方面的问题的朋友有所帮助...28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 package com.droidyue.webview.webviewclient import android.net.http.SslError...这其中的缘由是 我们在设备上安装的charles证书,属于用户添加的证书 出于应用安全的目的,Android 7及之后默认不信任用户添加的证书(Android 7 之前是默认信任用户添加的证书) 当我们将...所以,我们按照这篇文章解决Android手机连接Charles Unknown问题的方案,允许App在debug版本下信任用户证书就可以解决问题了。...如果想要解决上面的不足或者自定义日志输出关键字的话,可以重写实现WebChromeClient的onConsoleMessage方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

    1.8K30

    Android 11 新工具 | 提升应用私密性和稳定性

    这一 API 对于那些保留了旧代码或使用了第三方库或 SDK 的大型应用或许会十分有用。...Android 11 中的数据访问审核 API 有助于追溯您代码中私有数据的使用情况 第二个 API 针对多功能的复杂应用。...关于这些 API 的实际使用情况,请查阅 代码示例: 除了帮助您识别私有数据访问之外,Android 11 还包含了另一个新的 API,用来辅助排查无法捕捉现场的崩溃。...Android 11 引入了一个新的 ActivityManager API 来上报应用进程终止相关的历史信息。...此外,您还可以使用新的 ActivityManager.setProcessStateSummary() 方法存储自定义状态信息。您可以保存任意进程数据,这能非常有效地帮助您调试导致应用崩溃的代码段。

    71130

    Android 中意料之外的应用崩溃以及它们的解决方案

    而在应用发布后,监视应用程序中这些不断增加的崩溃是一种极其不愉快的体验。 不管应用程序的业务逻辑如何,都可能会因为运行的系统或平台问题而导致出现某些奇怪的崩溃现象。...在 Android 中,从后台状态恢复应用程序时可能会产生崩溃 —— 此类崩溃是意外发生的,而且仅通过查看崩溃日志,我们很难理解崩溃的具体原因以及解决问题,而本文讨论了此类问题及其解决方法。...复现崩溃 在模拟器或通过 USB 电缆(译者注:Android 11 也可使用 Wi-Fi 连接设备调试)连接的实际设备上使用 ADB 运行指令(如 Android Studio)运行的任何应用程序。...虽然此解决方案可以防止崩溃,但是这种方法其实就是重新启动应用程序,而不是从中断的位置恢复应用程序。如果你在发布应用后遇到此问题,并且急切地希望快速解决这个问题,则此解决方案应该能帮你大忙。...结论 在 Android 平台上,由于进程被终止而导致的应用崩溃是很常见的。而如果我们使用较新的 Android 版本,我们可以注意到,出于节省电源的目的,大量的后台应用程序被强制结束运行了。

    1.2K10

    在 Android 11 上使用第三方 SDK 向其他应用分享文件的注意事项

    隐私和安全是我们设计 Android 的核心,随着每一个新版本的发布,我们都会加大这一方面的投入。Android 11 也持续在这些领域取得重要进展。...Android 11 (API 级别 30) 进一步增强了平台功能,为外部存储中的应用和用户数据提供了更好的保护。...从 Android 11 开始,使用 分区存储模式 的应用即使拥有 READ_EXTERNAL_STORAGE 权限,也无法再访问外部存储中的任何其他应用的 专属目录 中的文件。...如果您的应用需要在 Android 11 上向其他应用分享文件,请检查您使用的第三方分享 SDK 是否支持通过 FileProvider 进行分享 (现在大部分常用的第三方分享 SDK 均已支持)。...请参阅 FileProvider 的开发者文档及相关的示例代码 如想了解更多,请参阅我们关于 Android 11 的开发者文档

    1.7K10

    记一次 android 线上 oom 问题

    sdk 并不直接加载在 App 主进程,而是隔离在一个单独进程中,然后两个进程通过 tcp 连接进行通信的,这样做的目的是减少因 sdk 的崩溃带来的主进程 crash,为用户带来更好的体验。...了解了一下情况,发现主端的全部版本崩溃率确实从 0.01% 升高到了 0.05%~0.07% 的水平,且大量新增的崩溃类型堆栈显示 oom 信息,最关键的是崩溃升高的趋势和 sdk 灰度的节奏完全吻合,...oom 问题非常不好排查,原因是崩溃时的堆栈与引入 bug 的地方已经相差了十万八千里,不能直接定位问题点。...问题根因 正当排查方向一片迷茫的时候,同事的一句话提醒了我——如果能抓到崩溃现场的日志就好办了。可是怎么抓呢?...进一步排查发现并非只有 oom 崩溃是这样,90% 的崩溃都归类在了这个版本下面,原因竟然是 App 在初始化时没有处理好先后关系,从 sdk 拿版本号时 sdk 还未初始化,所以得到了一个无效的版本值

    1.1K40

    EasyCVR对接大华SDK,视频回放无法播放的排查过程及解决方法

    EasyCVR 视频融合云平台不仅支持多协议(标准协议与私有协议)、多类型设备的接入,而且还具备优秀的视频转码、播放、录像、回看、级联等能力,在很多实际场景中均有落地项目应用,如智慧工地、智慧安防、智慧工厂...去年我们研发团队已经完成EasyCVR对大华SDK的接入,用户可以通过 EasyCVR 对接大华设备实现视频直播、录像、回放、云台控制等操作。...近期,我们接到用户的反馈,使用 EasyCVR 添加大华 SDK 用来播放视频回放,播放出来等一段时间还是黑屏,并且前端页面提示“视频加载错误”。 本文我们就针对该问题分享一下排查及解决过程。...在测试的过程中,C++ 的回调函数有数据,并且使用 ffplay 指令可以播放。这样则说明 C++ 没问题,那么接下来排查 Go 层的问题。...1)首先,需要找到回放的接口定义; 2)然后,在进入函数并打断点是否启动 C++ 回放接口调用; 排查发现在程序打断点的是 devObj.DeviceHandle,显示的是永远小于或者等于0。

    1.1K10

    拖不得了,Android11真的来了,最全适配实践指南奉上

    以下我分为两部分讲述,分别是 以Android11 为目标版本的应用(targetSdkVersion>=30才有影响)⭐ 所有应用在Android11设备上适配改动(无论targetSdkVersion...是多少,只要在Android11设备上运行的应用都有影响) 为什么先说targetSdkVersion>=30的模块呢?...Scudo 能够检测并减轻某些类型的内存安全违规行为。如果您在原生代码崩溃报告中发现与 Scudo 相关的崩溃(例如 Scudo ERROR:),请参阅 Scudo 问题排查文档。...非SDK接口限制 “Android 11 包含更新后的受限制非 SDK 接口列表(基于与 Android 开发者之间的协作以及最新的内部测试)。...” 老样子,Android11也会限制一些接口,包括灰名单和白名单,具体看非SDK接口列表 总结 一路分析下来也可以看到,如果是重要的改动,特别是涉及到崩溃的改动还是放到了targetSdkVersion

    7.1K340266

    全系统栈崩溃是什么鬼?手机管家高级工程师 jaylin,教你如何抓鬼!

    对于这个问题,我们找到了一台出现这个崩溃的机器并重现出来了,得到的崩溃堆栈信息跟上面完全一样。实际上这个问题是在程序中制造了一个ANR,系统有Bug导致在执行dump信息的方法时出现崩溃。...4 通过辅助信息缩小排查范围 在代码量比较大的项目,排查问题相对会比较困难,那么在定位一些崩溃问题时候,要尽量获取更多的辅助信息,把排查范围尽量地缩小,来看下面这个问题: 1 java.lang.RuntimeException...因为上面的崩溃堆栈信息只有系统的代码,没有跟应用层关联的代码。这时候就要考虑如何把定位问题的范围缩小。...采取的解决方法是,程序运行过程中会记录当前显示的是哪一个界面,当出现崩溃的时候就把最后显示的界面信息也一并上报上来,那么定位问题就比较容易了,基本是确定了是在哪个界面出现的,剩下的就是对这个界面相关的代码进行排查...5 根据出现崩溃的线程名排查问题 上面讲到的通过辅助信息来定位问题,而通过崩溃的线程名称也能够把问题出现的范围缩小。

    1.2K40

    Android 移动应用性能优化 之 友盟

    ANR   ANR(全称:Application Not Responding)程序无响应,要解决问题首先要知道问题出现有哪些可能性,然后在结合你当前应用的实际情况去排查,最终找到解决方法。...当时这个读者就找到我,然后我就开始排查,首先是启动App的时候做了什么,这里还会涉及到一个点,那就是App的启动优化,这个点很关键。...由于友盟的SDK需要获取手机的设备信息和网络状态,因此需要在AndroidManifest.xml中配置相应的权限 android:name="android.permission.ACCESS_NETWORK_STATE...然后就是初始化了,这里要注意一点就是需要在在《隐私政策》中向用户告知使用友盟SDK,参考条款如下: 使用SDK名称:友盟SDK 服务类型:请按SDK功能填写,如应用性能监控平台 U-APM 收集个人信息类型...② 崩溃分析   完成了SDK对接之后,即可使用Java、Native崩溃分析、ANR分析功能,无需额外其他接入操作。

    42910

    Android 安全退出应用程序的方法总结

    正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程。...android.os.Process.killProcess(android.os.Process.myPid()) 通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的...task任务栈清空 第二种方法:终止当前正在运行的Java虚拟机,导致程序终止 System.exit(0); 不会把自己的应用程序杀死 第三种方法:强制关闭与该包有关联的一切执行 ActivityManager...-->name -->app //声明该类为整个应用程序全局的实例 添加android:name=".全局实例App" 创建整个应用程序全局的实例 App.class: ArrayList应用程序全局的实例引用 app.activities.add(this); //把当前Activity放入集合中 } public void onDestory(){

    2.8K60

    Android 安全退出应用程序的方法总结

    Android 安全退出应用程序的方法总结 正常关闭应用程序: 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程。...android.os.Process.killProcess(android.os.Process.myPid()) 通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task...任务栈清空 第二种方法:终止当前正在运行的Java虚拟机,导致程序终止 System.exit(0); 不会把自己的应用程序杀死 第三种方法:强制关闭与该包有关联的一切执行 ActivityManager...-->name -->app //声明该类为整个应用程序全局的实例 添加android:name=".全局实例App" 创建整个应用程序全局的实例 App.class: ArrayList应用程序全局的实例引用 app.activities.add(this); //把当前Activity放入集合中 } public void onDestory(){

    1.2K110

    线上数据异常引发的崩溃排查记录

    android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2112) 很显然,这个是混淆后的崩溃,我们用对应的mapping文件排查,定位到了异常的代码如下...Collection contains no element matching the predicate,说明用ladderPriceList.first方法,返回的结果是null而导致的崩溃 做了下前后的代码排查...,正常情况下是不会出现这个情况的,于是怀疑是接口返回的数据异常 还原异常数据 崩溃的时候,是不会上报崩溃时候的数据的,通过代码,可以知道崩溃的是页面的商详页,所以需要定位到具体是浏览哪个商品崩溃了 /...崩溃SDK,我们同时会上报用户ID跟最后浏览的页面,通过ID,可以知道是具体哪个用户的崩溃,然后在神策统计后台,查看该用户的统计数据 神策统计数据,支持SQL查询数据,可以查到该用户所有的统计行为...(我们小程序数据跟app数据是一起的),对SQL做了精简,只展示详情页的统计数据、只展示Android端的、只展示我们需要的字段 select product_name,spu_id,time from

    70020

    【Android 应用开发】使用蒲公英 SDK 收集崩溃日志信息 ( 导入依赖 | 申请 Key | 集成代码 | 清单文件配置 | 手动上传日志 | 手动检查更新 )

    , 之后就可以对该应用进行控制 ; 进入该应用对应的控制台界面 , 内测分发页面 https://www.pgyer.com/manager/dashboard/app/ , 选择 " 应用监控 "...attachBaseContext(Context base) { super.attachBaseContext(base); //在attachBaseContext方法中调用初始化..." /> 配置之前在控制台申请的 API Key 和 FrontJS Token : <application android:name=""{当前应用的application}" android...="蒲公英后台申请的frontJSToken"> 配置检查更新 : <application android:name=""{当前应用的application...:value="true"> 五、手动上传数据 ---- 默认情况下 , 崩溃时会自动上传崩溃日志 ; 如果想要手动上传崩溃日志 , 可以调用 下面的代码

    71420
    领券