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

如何打造一款高质量的Android移动应用

移动APM质量平台好处 1、统一管理,所有阶段的异常数据都汇总到一个平台; 2、统一三端,现在大部分应用都由Android,IOS,H5多个端组成,随着技术的发展还可能增加React Native,Flutter...移动应用的质量主要包括稳定性和性能,像崩溃,卡死,白屏这些问题对于用户而言是致命的,另一大类问题就是性能问题,安装包大小,启动,耗时,耗电,流量等范畴,具体分类如下: ?...简单来说,Java崩溃就是在Java代码中,出现了未捕获异常,导致程序异常退出,Java崩溃相对来说比较容易捕获。...但是Native崩溃会比较麻烦,Native崩溃一般是在c/c++代码中访问了非法地址,也可能是地址对齐出现了问题,或者发生了程序主动abort,这些都会产生signal信号,导致程序异常退出。...2、Native崩溃的捕获流程: 1、编译阶段:编译c/c++的时候需要把符号信息保留下来; 2、客户端,捕获到异常的时候,尽可能地将有用的信息保存到本地,然后选择适当的时机上报服务器

1.3K40

使用 React Native 重写大型 Ionic 应用后,我们想分享一下这八个经验

在看到 React Native 0.43+ 之后,便升级到了 React Native 0.44。...尽早尝试 Release 0.0.1 我的意思是,你要早点出一个 React Native 的 MVP 版本。...由于,我日常用的手机是 Android 系统,而 React Native 的 Web 资源问题,实际上在 Android 和 iOS 上都会出现的。...记得记录崩溃问题 我在 release Growth 3.0 的早期版本 2.9.9 的时候,漏掉了一个对 Null 值的判断,结果造成了大量的闪退问题(三十几个用户)。...除此,在一些未知的机型也会出现问题,尽管是个问题,但是由于数量较少就没有在意了。 对于写原生代码来说,这几乎是必备的手段。对于 WebView 来说,并不会存在太大的崩溃问题,除非使用了原生组件。

1.8K60
您找到你想要的搜索结果了吗?
是的
没有找到

15个你必须知道的Facebook开源项目

Stetho提供C/S协议,使强大的Chrome开发者工具能在应用程序中使用该协议。你的应用程序整合之后,只需访问chrome://inspect ,点击“检查”即可开始。...Infer工具也有助于防止系统崩溃和性能下降。Infer的目标是空指针异常、资源漏洞、内存溢出之类的致命缺陷。...Web开发 React Js React Js是个用于构建用户界面的JavaScript库,高效且灵活。...很多人把React当作MVC中的V来用,因为React不依赖你技术栈里的其它技术,因此很容易把它用在一些已有项目的小特性上。...设计目的是为了在整个公司为工程师提供一套标准的开发者经验——无论他们从事纯iOS应用,ReactReact Native代码,或者在Hack运行我们的HHVM网络服务。

1.8K20

Electron 常见问题收录

前言 由于 Windows 和 Mac 原生的应用程序开发难度比较大,所以使用 Electron 版 TRTC 的能力就成了一个不错的选择。...应用路径 应用路径,一般情况下指的是使用 .dmg 或 .exe 安装程序完成安装后,存放应用程序的路径,在本例使用的是打包过程中生成的缓存目录,其效果是一样的: mac: [项目目录]/bin/mac...安装过程看似很快就完成了,没报任何错误,而实际上 Electron 安装失败,只生成了 node_modules/electron 目录,目录中的文件不完整,脚本中的 "path.txt" 也不存在,导致运行时抛出异常...问题2:调用摄像头或麦克风时直接崩溃 使用 vscode 终端启动项目,当 trtc-electron-sdk 启动摄像头和麦克风时,程序直接崩溃: [崩溃] 问题分析 这个问题在新升级至 mac 10.15...的苹果电脑上出现,因为 mac 10.15 默认启动了保护机制,导致由 vscode 启动的 Electron 进程无权使用摄像头和麦克风,所以 Electron 进程会直接崩溃

18.1K165

React-Native私服热更新的集成与使用

二、CodePush 2.1 介绍 CodePush 是微软的一项云服务,使 Cordova 和 React Native 开发人员能够将移动应用程序的更新直接部署到他们用户的设备上。...'0.64.2' 工具: react-native-cli:react-native命令行工具,安装后可以在终端使用 react-native 命令。...发布新更新 release-react 此命令用于一键发布,其实是将react-native bundle命令和code-push release命令结合起来使用。...客户端回滚:为了确保您的最终用户始终拥有您的应用程序的正常运行版本,该插件会维护一个先前更新的副本,以便在您不小心推送包含崩溃的更新时,它可以自动回滚。...官方文档 原生 API(Objective-C 和 Java),它允许 React Native 应用程序主机使用正确的 JS 包位置引导(bootstrap启动)自身。

7.6K10

React Native调试心得

在做React Native开发时,少不了的需要对React Native程序进行调试。调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率。...Developer Menu Developer Menu是React Native给开发者定制的一个开发者菜单,来帮助开发者调试React Native应用。...Errors React Native程序运行时出现的Errors会被直接显示在屏幕上,以红色的背景显示,并会打印出错误信息。 你也可以通过 console.error()来手动触发Errors。...Warnings React Native程序运行时出现的Warnings也会被直接显示在屏幕上,以黄色的背景显示,并会打印出警告信息。...有一种断点叫全局断点 全局断点的作用是,当程序出现异常时,会在异常的地方暂停,这对快速定位异的常位置很方便。

5K70

TRTC Electron SDK 常见问题收录

前言 由于 Windows 和 Mac 原生的应用程序开发难度比较大,所以使用 Electron 版 TRTC 的能力就成了一个不错的选择。...应用路径 应用路径,一般情况下指的是使用 .dmg 或 .exe 安装程序完成安装后,存放应用程序的路径,在本例使用的是打包过程中生成的缓存目录,其效果是一样的: mac: [项目目录]/bin/mac...安装过程看似很快就完成了,没报任何错误,而实际上 Electron 安装失败,只生成了 node_modules/electron 目录,目录中的文件不完整,脚本中的 "path.txt" 也不存在,导致运行时抛出异常...问题2:调用摄像头或麦克风时直接崩溃 使用 vscode 终端启动项目,当 trtc-electron-sdk 启动摄像头和麦克风时,程序直接崩溃崩溃 问题分析 这个问题在新升级至 mac 10.15...的苹果电脑上出现,因为 mac 10.15 默认启动了保护机制,导致由 vscode 启动的 Electron 进程无权使用摄像头和麦克风,所以 Electron 进程会直接崩溃

4.9K20

跨平台解决方案的技术分析

图片来源:Cordova 官网 Cordova 应用程序由几部分组成: Web App 应用程序代码的实现地方,采用的是 Web 技术,应用运行在原生控件 WebView 中 HTML Rendering...下面以 React Native 为例,具体展开讲解一下原生渲染方案,React Native 的整体架构图如下: React 层 最顶层是 React 层,利用 React 框架进行 UI 的数据描述...虽然原生渲染方案有上述的优势,但是有一个致命的弱点就是 Native 层和 JS 层的通信所带来的性能瓶颈。...Dart 业务代码在 Release 模式下采用 AOT 的方式进行编译,并运行在 Dart VM 中。...Dart 在 Release下采用 AOT 的 编译模式 Dart 代码在 Release 采用 AOT 的编译模式转化为二进制代码,从而在 Dart 运行时环境中执行效率更高,性能也更为卓越。

1.1K20

弃坑 RN,入坑 Flutter,同程旅行架构师给了这四点理由

目前,Flutter 和 React Native 当属此领域的佼佼者。Facebook 在 2015 年推出了 React Native,它的目标是创建移动应用程序,而不会影响应用程序的外观和感觉。...从这时起,新创业公司和企业就为他们选择其中哪个框架开发应用程序而陷入困境,这也推动了 Flutter vs React Native 的辩论。...体验方面等同于 React Native,需要掌握 Vue 相关知识体系。...Native 效率高很多,React Native 基于 dom 树绘制修改原生组件,性能的瓶颈也在于此; 第三,Dart 支持静态监测,可以在编译前发现很多编译问题,排除潜在问题(天生具备)而 React...目前同程旅行 App 使用的是混合开发模式,Native 开发无感知集成到 App 中,目前分为上线集成模式和开发调试模式,分别用来集成 debug 产物和 release 产物,都以 Native 组件的方式集成进来

80910

跨平台解决方案的技术分析

图片来源:Cordova 官网 Cordova 应用程序由几部分组成: Web App 应用程序代码的实现地方,采用的是 Web 技术,应用运行在原生控件 WebView 中 HTML Rendering...下面以 React Native 为例,具体展开讲解一下原生渲染方案,React Native 的整体架构图如下: React 层 最顶层是 React 层,利用 React 框架进行 UI 的数据描述...虽然原生渲染方案有上述的优势,但是有一个致命的弱点就是 Native 层和 JS 层的通信所带来的性能瓶颈。...Dart 业务代码在 Release 模式下采用 AOT 的方式进行编译,并运行在 Dart VM 中。...Dart 在 Release下采用 AOT 的 编译模式 Dart 代码在 Release 采用 AOT 的编译模式转化为二进制代码,从而在 Dart 运行时环境中执行效率更高,性能也更为卓越。

1.3K20

JVM 致命错误日志(hs_err_pid.log)解读

致命错误出现的时候,JVM 生成了 hs_err_pid.log 这样的文件,其中往往包含了虚拟机崩溃原因的重要信息。...tmp 这样的临时目录下面去),当然,文件格式和路径也可以通过参数指定,比如: java -XX:ErrorFile=/var/log/java/java_error%p.log 这个文件将包括: 触发致命错误的操作异常或者信号...; 版本和配置信息; 触发致命异常的线程详细信息和线程栈; 当前运行的线程列表和它们的状态; 堆的总括信息; 加载的本地库; 命令行参数; 环境变量; 操作系统 CPU 的详细信息。...:线程当前状态,状态枚举包括: _thread_uninitialized:线程还没有创建,它只在内存原因崩溃的时候才出现 _thread_new:线程已经被创建,但是还没有启动 _thread_in_native...这些信息是虚拟机崩溃时的虚拟内存列表区域。在定位崩溃原因的时候,它可以告诉你哪些类库正在被使用,位置在哪里,还有堆栈和守护页信息。

1.6K20

【Hybrid开发高级系列】ReactNative(四) —— 基础开发技巧

(例如上面的代码会屏蔽掉所有以Warning开头的警告内容)         红屏和黄屏在发布版(release/production)中都是自动禁用的。...打开有异常时暂停(Pause On CaughtExceptions)选项,能够获得更好的开发体验。         ...甚至一个舍入误差会造成致命性的错误,因为一个像素边界可能会消失或者变成两倍那么大。         在React Native里,在JS和布局引擎里的一切值都是以一个任意精度的数来进行工作的。...Native上的应用程序出现致命性问题的主要原因是由于一个组件被卸载后计时器就会被触发。...为了解决这个反复出现的问题,我们引入了TimerMixin。

32220

JVM致命错误日志(hs_err_pid.log)分析

致命错误出现的时候,JVM 生成了 hs_err_pid.log 这样的文件,其中往往包含了虚拟机崩溃原因的重要信息。...这样的临时目录下面去),当然,文件格式和路径也可以通过参数指定,比如: 1 java -XX:ErrorFile=/var/log/java/java_error%p.log 这个文件将包括: 触发致命错误的操作异常或者信号...; 版本和配置信息; 触发致命异常的线程详细信息和线程栈; 当前运行的线程列表和它们的状态; 堆的总括信息; 加载的本地库; 命令行参数; 环境变量; 操作系统 CPU 的详细信息。...:线程当前状态,状态枚举包括: _thread_uninitialized:线程还没有创建,它只在内存原因崩溃的时候才出现 _thread_new:线程已经被创建,但是还没有启动 _thread_in_native...这些信息是虚拟机崩溃时的虚拟内存列表区域。在定位崩溃原因的时候,它可以告诉你哪些类库正在被使用,位置在哪里,还有堆栈和守护页信息。

1.2K20

去公司的第一天老大问我:内存泄露检测工具你知道几个?

如果应用程序的执行时间越来越长,或者操作系统的执行速度越来越慢,这可能是内存泄漏的迹象。换句话说,正在分配虚拟内存,但在不再需要时不会返回。最终应用程序或系统内存不足,应用程序异常终止。...线程线程名中出现异常:Java.Lang.OutOfMemoryError:请求的数组大小超过VM限制 原因:详细信息“请求的数组大小超过VM限制”表示应用程序(或该应用程序使用的API)试图分配大于堆大小的数组...操作:当抛出此错误消息时,VM调用致命错误处理机制(即,它生成一个致命错误日志文件,其中包含有关崩溃时线程、进程和系统的有用信息)。在本机堆耗尽的情况下,日志中的堆内存和内存映射信息可能很有用。...请参阅致命错误日志。 如果引发这种类型的OutOfMemoryError异常,则可能需要使用操作系统上的故障排除实用程序来进一步诊断该问题。...线程线程名中出现异常:Java.Lang.OutOfMemoryError:reason Stack_trace_with_native_方法 原因:如果错误消息的详细信息部分是“reason stack_trace_with_native_method

29320

Flutter 开发实战与前景展望 - RTC Dev Meetup

image 2、React Native 和 Flutter 之间的对比 Flutter 作为后来者,难免会被用来和 React Native 进行对比,在这个万物皆是 JS 的时代,Dart 和 Flutter...支持上 Flutter 和 React Native , 都存在第三方包质量参差不齐的问题,而目前在这一块 Flutter 是弱于 React Native 的 ,毕竟 React Native 发展已久...稳定性:Flutter 中大部分异常是不会引起应用崩溃 ,更多会在 Debug 上体现为红色错误堆栈,Release 上 UI 异常等等。...在 React Native 0.59.x 版本开始,React 已经将许多内置控件和库移出主项目,希望模糊 ReactReact Native 的界线,统一开发,这里的理念和 Flutter 很像...如果开发过 React Native 的应该知道,在原生插件安装时会需要执行 react-native link ,而这时候会修改项目的gradle 和java代码。

1.9K20

React Native性能优化:应该做和不应该做的

React Native默认情况下的性能是没有问题的,但是在实际开发React Native的时候,我们也可能会遇到一些性能相关的问题。 这些问题是很难通过组件本身修复去解决的。...在这篇文章中,我们会提供一些建议来优化开发React Native遇到的一些性能问题。 使用Image缓存解决方案 React Native在自带的组件库中提供了Image组件,可以用例展示图片。...这可能会导致APP崩溃 一些可以在React Native中有效优化图片的方案包括: 使用PNG格式的图片而不是JPG 使用尺寸更小的图片 使用WEBP格式的图片。...避免不必要的渲染 React Native是基于React的库并且处理组件渲染的形式类似于React.js。因此在React中可用的优化方法也适用于React Native。...它使用原生插件生态系统来调试iOS和Android应用程序。这些插件可用于设备日志、崩溃报告、检查网络请求、检查应用程序的本地数据库、检查缓存的图像等。

4K30

「音视频直播技术」JNI编程常见问题

它们被保证有效,直到调用Release,这意味着当native方法返回时它们不会自动释放。 传递给NewStringUTF的数据必须使用修改过的UTF-8格式。...扩展检查 JNI几乎没有错误检查,错误通常会导致崩溃。Android提供了一种称为CheckJNI的模式,在调用标准实现之前,将JavaVM和JNIEnv函数表指针切换到执行扩展系列检查的函数表。...常见问题 FAQ: 为什么会出现 UnsatisfiedLinkError在处理Native代码时,看到这样的失败并不罕见: java.lang.UnsatisfiedLinkError: Library...失败的具体信息在异常的信息中可以找到。 您可能遇到“库未找到”异常的常见原因: 库不存在或应用程序无法访问。使用adb shell ls -l 来检查其存在和权限。...对于显式注册,输入方法签名时会出现较小的错误。确保您传递到registration 调用的内容与日志文件中的签名相匹配。记住'B'是字节,'Z'是布尔值。

1.5K20
领券