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

如何优化您 Android 应用(Go 版)

选择您应用策略 ? 许多人会问自己第一个问题是:“应该优化现有的应用程序还是创建一个新应用程序?”虽然这个问题看似简单,但答案可能会更复杂一些。...这个应用程序可能是多进制,但对于低 RAM 设备没有特定经验。我们强烈建议您使用新 Android App Bundle 来体验高达 65% 体积节省,而无需重构代码。...确定应用策略后,在优化您应用时需要考虑一些关键因素: 确保您应用没有 ANR 和崩溃 针对 Android Oreo 您安装应用程序要低于 40 MB,游戏要低于 65 MB 应用程序 PSS...确保您应用没有 ANR 和崩溃 研究表明,ANR(应用程序无响应)错误和崩溃可能会对用户保留造成重大负面影响,并可能导致高卸载率。...从那里,找到了所有的静态函数和静态变量,看看它们是否真的有必要,然后删除那些没有的东西。

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

    Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)

    ' } } ... } 在上面的代码片段中,选择一个名为 aia-proguard-rules.pro 文件用于我 Android Instant App(安卓即时应用程序)专用...窍门是使用 Android SDK 中提供工具来近乎自动化执行这个操作。 首先,准备好一个调试版本(或者没有启用 ProGuard(混淆)调试版本)。...有关于 DEX 格式和命令行 APK 分析器(一个分析 APK 中 DEX 文件工具)一些知识,我们可以很容易地找到所选模块中哪些被使用了但没有定义类。...新功能:禁用非基本模块中混淆 现在看来,指南中遗漏了一个重要(现在很明显就发现点。...遵循这些步骤应该能带你完成构建,并防止你即时应用程序崩溃

    2.6K30

    以为发现Android 14系统中一个bug,然而...

    因为没有任何错误日志可以观察到这种现象是不应该印象中用法不正确的话是会直接导致应用程序崩溃。 但其实自己也记不太清楚Android 14新特性文章已经是去年3月份发布。...唯一问题就是,所使用的上述示例,在没有明确指定当前App包名情况会崩溃,而我同事guting却反馈说是没有任何错误日志可以观察到。...现在我们已经知道,App target到Android 14之后,隐式Intent启动内部Activity和Serivce是会崩溃。 但是这个崩溃日志是什么,却从来没有仔细观察过。...那么对应到Activity、Service和BroadcastReceiver上行为当然就是崩溃崩溃和丢失。 最终证明,Android官方文档严谨性确实是滴水不漏,还是自己太稚嫩。...魏老师跟我开玩笑说,自己做Android时候觉得Android实在是太难了,各个系统版本变化新特性什么绕来绕去,根本记不住,所以才去做了AI,说AI比较简单。听后笑了笑。

    75810

    再看LayoutInflater,这次你可能又会有新认识

    我们都知道,在开发Android应用程序时候,编写布局基本都是通过xml文件来编写。当然你也完全可以在代码中纯手写布局,但是写过的人都清楚,这样编写布局会非常麻烦。...那么通过xml编写布局文件是如何转换成Android一个View对象从而显示在应用程序当中呢?这就是LayoutInflater作用了。...这里不想在文章中带着大家一步步追源码,这样文章看起来可能会又累又枯燥,因此就只贴出一些认为比较关键代码。...在写《第一行代码》时由于在很早章节就要讲RecyclerView用法,但是却又感觉很难向初学者解释清楚LayoutInflater相关内容,所以我一直都觉得这块内容没有讲好。...只能先用死记硬背方式,暂时就记着这部分代码必须这么写。 而今天,希望能将LayoutInflater真正讲讲清楚。 我们知道,Android布局结构是一种树状结构。

    62400

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

    Android 中,从后台状态恢复应用程序时可能会产生崩溃 —— 此类崩溃是意外发生,而且仅通过查看崩溃日志,我们很难理解崩溃具体原因以及解决问题,而本文讨论此类问题及其解决方法。...问题 在监视产品崩溃日志时,注意到一些问题与日俱增。该应用在正常测试条件下似乎运行良好,并且崩溃不可复现,直到应用程序从后台任务中进入前台。...当用户从后台导航回被结束应用程序时候,该应用程序将从 SplashActivity 重新启动,就像是一次新启动。 这将防止应用程序访问在进程重建过程中可能已丢失数据,从而防止应用程序崩溃。...结论 在 Android 平台上,由于进程被终止而导致应用崩溃是很常见。而如果我们使用较新 Android 版本,我们可以注意到,出于节省电源目的,大量后台应用程序被强制结束运行了。...研究此类崩溃根本原因可能会挺困难,因此希望本文能够以任何可能方式对你有所帮助。请告诉你们对文中讨论解决方案有何看法。 关注,每天分享知识干货,你要都有~~~

    1.1K10

    利用Kotlin协程实现简单异步加载详解

    前言 众所周知在android中当执行程序耗时超过5秒时就会引发ANR而导致程序崩溃。...在android中google为我们提供AsyncTask和Handler等工具来便捷实现线程间通信。有许多第三方库也为我们实现这一功能,比如现在非常流行RxJava库。...因为这是一个IO操作,如果我们在UI主线程中调用这段代码,将可能导致程序卡顿或产生ANR崩溃,所以我们需要在新开线程中调用下边代码 val bitmap = MediaStore.Images.Media.getBitmap...lauch()创建并启动了一个协程,这儿参数Background是一个CoroutineContext对象,确保这个协程运行在一个后台线程,确保你应用程序不会因耗时操作而阻塞和崩溃。...给予我们一种非常安全简便方式监听Activity和Fragment生命周期变化

    2.1K20

    Google Play 控制台指南:Google Play 控制台能为你做都不仅仅是发布应用这么简单而已

    信息中心(Dashboard)提供安装和卸载情况概要,安装排名前列国家,安装激活量,评分数量和值,崩溃简报,Android vitals 概要,以及一个发布前测试报告列表。...应用程序稳定性信息采用应用程序无响应(ANR)和崩溃率(crash rate)报告形式。正如本节中所有概要一样,按应用版本,设备和 Android 版本提供细分。...例如,如果你第一个测试发现一个更好元素添加到游戏图标中,你下一个实验可以测试一下图标背景颜色变化所带来影响。...该部分第一份报告提供收入和购买者概览。该报告显示与上一期报告相比,你收入和买家购买力是如何变化。 ? 财务报告(Financial reports)。...在分析这些数据时,需要注意两件关键事情。首先是随着时间推移而变化评分,特别是其上升或者下降时。平分降低则表明你需要查看最近更新。也许更新使得应用程序难以使用或引入了导致其更频繁崩溃问题。

    7.4K30

    使用WebRTC开发Android Messenger:第1部分

    调查流行Android消息传递应用程序中最近两个不知能否利用bug。 The Bugs 首先尝试利用两个BUG:CVE-2020-6389和CVE-2020-6387。...现代Android使用jemalloc,这是一个平板分配器,它不使用内联堆头,因此破坏堆元数据不是一种选择。相反,使用符号编译适用于AndroidWebRTC,并将其加载到IDA中。...不确定现在要进行什么操作,所以我在Android上触发了数十次CVE-2020-6389,以查看是否存在超过16位宽地址崩溃,希望它们能为提供一些方法在除了覆盖无效16位值指针之外,此错误可能会影响代码行为...最终放弃这种方法,因为认为可能既无法做到足够可靠,也无法通过合理努力将其用于BUG利用程序中。同样地,被攻击应用程序崩溃行为也很重要。...这可能可以适用于在崩溃情况下立即重生应用程序,但是对于停止重生应用程序实用性却要差很多,除非存在一定延迟,而这在Android上很常见。

    68120

    PermissionX现在支持Java!还有Android 11权限变更讲解

    然而随着第一个版本发布,根据大家反馈,意识到了另一个更加紧急需求,就是对Java语言支持。...是的,这里又要推荐新书《第一行代码 第3版》,还没有阅读过朋友可以认真考虑一下,能在很大程序上帮助你轻松上手Kotlin语言。...其中,权限相关部分有较大变化,不过大家也不用担心,需要我们开发者进行适配地方并不多,只是你应该了解这些变化。 首先,那个让无数开发者极其讨厌“拒绝并不再询问”选项没有。...Android 11中还引入了权限过期机制,本来用户授予应用程序某个权限,该权限会一直有效,现在如果某应用程序很长时间没有启动,Android系统会自动收回用户授予权限,下次启动需要重新请求授权。...以上部分就是Android 11中权限相关主要变化,你会发现,这些变化其实并没有影响到我们代码编写,也不用做什么额外适配,所以只需要了解一下就行了。

    1.6K30

    Android内存优化(四)解析Memory Monitor、Allocation Tracker和Heap Dump

    快速测试应用程序缓慢是否与过度垃圾收集事件有关。 快速测试应用程序崩溃是否与内存耗尽有关。...1.1 使用Memory Monitor 在使用Memory Monitor之前要确保手机开启开发者模式和USB调试。 使用步骤为: 1.运行需要监控应用程序。...Allocation Tracker能够做到如下事情: 显示代码分配对象类型、大小、分配线程和堆栈跟踪时间和位置。 通过重复分配/释放模式帮助识别内存变化。...首先要确保要确保手机开启开发者模式,并且开启USB调试。 使用步骤为: 1.运行需要监控应用程序。 2.点击AS面板下面的Android图标,并选择Monitors选项。...462.86KB(768.172KB-323.312KB)内存没有被回收,可能发生了内存泄漏。

    2K60

    Android性能优化(一)

    默认情况 如果我们对App没有做处理(设置默认主题),并且在 Application 初始化了其它第三方服务(假设需要加载2000ms),那么冷启动过程就会如下图 : [70] 系统默认会在启动应用程序时候启动空白窗口...Android 两种崩溃: Java 崩溃 Native 崩溃 简单来说,Java 崩溃就是在 Java 代码中,出现未捕获异常,导致程序异常退出。...ANR处理方法: 使用 FileObserver 监听 /data/anr/traces.txt 变化。非常不幸是,很多高版本 ROM,已经没有读取这个文件权限。...第三步:尝试复现 如果我们已经大概知道崩溃原因,为了进一步确认更多信息,就需要尝试复现崩溃。如果我们对崩溃完全没有头绪,也希望通过用户操作路径来尝试重现,然后再去分析崩溃原因。...虽然崩溃日志可能没有我们自己代码,但通过操作路径和日志,可以找到一些怀疑点。 尝试规避。查看可疑代码调用,是否使用了不恰当 API,是否可以更换其他实现方式规避。 Hook 解决。

    2.6K20

    Android性能优化:这是一份全面 & 详细性能优化指南(含内存优化、布局优化等)

    前言 在 Android开发中,性能优化策略十分重要 因为其决定应用程序开发质量:可用性、流畅性、稳定性等,是提高用户留存率关键 本文全面讲解性能优化中所有知识,献上一份 Android性能优化详细攻略...具体介绍如下: 更快:应用程序 运行得更加流畅、不卡顿,能快速响应用户操作 更稳定:应用程序 能 稳定运行 & 解决用户需求,在用户使用过程中不出现应用程序崩溃(Crash) 和 无响应(ANR)问题...优化方向 针对上述性能指标,本文主要讲解优化方向如下: 下面,将针对每一种性能指标,详细讲解其优化方案 4....稳定性 影响Android 应用稳定性原因有很多,主要是:应用崩溃(Crash)、应用无响应(ANR) 这2个错误结果将导致程序无法使用 下面,将主要讲解该2个优化方向:应用崩溃(Crash)、应用无响应...相关 代码质量 & 数量 日常不正确使用 具体优化方案 下面,将详细分析每项内存问题 & 给出优化方案。

    6.1K12

    如何使用IMEI号码追踪丢失安卓手机

    大部分可以通过您发送短信激活; 一些APP支持使用IMEI号码。让我们以第一个为例。...确保您手机在Android 4.4或更高版本上运行。然后,开始安装该应用程序。 步骤2:完成安装后,运行应用程序。提供IMEI跟踪器应用程序要求所有权限,包括联系人、电话、存储、SMS和位置。...1、自我修复代码 微信拥有自我修复代码相信很多小伙伴并不知晓当我们使用微信时如果遇到崩溃、假死、网络延迟等问题请不要慌张试下以下代码。...Android:在任意聊天窗口输入“//recover” 如果微信没有损坏就会出现“损坏文件不存在“提示;如果有损坏直接进入修复模式。...虽然和微信【位置】功能相同不过敲代码显得更牛逼啊。

    11.3K30

    不服来战,看Kotlin如何完爆Java

    如果今天被问到如何区别开发Android应用程序与其他领域开发时,我会毫不犹豫地回答,以原生方式在不同硬件上执行相同应用程序可能会是其中原因之一;但…这怎么可能?...想我还是通过解释Kotlin语言好处来开始这篇文章吧。 在这一点上,没有人惊讶地看到相同web应用程序运行于任何设备,任何平台(Android、iOS、 Windows、MacOS…)。...(事实上,它创建者应该为他所说“十亿美元错误”道歉),而这些检查中有多少是为了避免在我们应用程序中出现崩溃而做出补丁呢?...为什么Kotlin 会打破这一切 Java是一种非常冗长语言,它需要为任何操作编写大量代码,并生成大量文件(每个类一个)。第一个问题可能会导致我们代码维护成本更高,更容易出现错误。...Kotlin还提供安全打开那些optionals listener ?.onSuccess() 可能性,而无需检查optional有没有值,并且还提供Elvis Operator。

    1K50

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

    Google今年也发力Android Vitals监控,新增耗电,权限管理等模块。...简单来说,Java崩溃就是在Java代码中,出现未捕获异常,导致程序异常退出,Java崩溃相对来说比较容易捕获。...但是Native崩溃会比较麻烦,Native崩溃一般是在c/c++代码中访问了非法地址,也可能是地址对齐出现问题,或者发生了程序主动abort,这些都会产生signal信号,导致程序异常退出。...用户时间是应用程序执行代码消耗时间;系统时间是执行内核系统调用所消耗时间,包括I/O、锁、中断以及其他系统调用时间。...进行监控,而且性能开销非常低,但是它不支持应用程序代码耗时分析,使用起来有一定局限性。

    1.3K40

    Android-App性能优化

    如果应用程序Activity仍然驻留在内存中,那么应用程序可以避免重复对象初始化、布局加载和渲染,但系统依然会展示闪屏页,直到第一个 Activity 内容呈现为止。...你比如,用户Back退出应用程序,然后又重新启动,应用程序会再次执行ActivityonCreate(),但会从Bundle(savedInstanceState)获取数据,我们平时应用成勋崩溃,不也是通过该方法保存数据吗...当我们List集合没有时候,一定要 list.clear() list=null 针对单例引起内存泄漏,通常是由于引用context是生命周期短造成,也就是说生命周期长持有生命周期短引用...比如Toast,我们传入是MainActivity,但MainActivity没有用了,需要被销毁,但我们Tost依然持有其引用导致无法回收,这就导致内存泄漏。...使用:选择Analyze > Inspect Code .具体百度 使用 Android Profiler 查看内存,已经各个操作内存和网络变化

    2.2K40

    Android 全局广播使用

    广播作为Android一个重要组成部分,很多功能实现都依赖于广播,Android系统在发生一些重要事情时候都会发送广播(电量变化、网络变化等等)。...,但是没有动态注册那么灵活,而动态注册则是广播接收器直接在代码中完成注册,比较灵活,但是必须要等待程序运行并且注册这个广播接收器之后,这个广播接收器才能接收广播信息(其实很好理解,就是要等到广播接收器完成注册之后才能接收广播信息...别忘了在配置文件中加入检测系统启动信息权限,否则程序会崩溃: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED...运行程序,单击按钮,我们会看到两个广播接收器都接受到了广播信息,但是如果我们在第一个广播接收器onReceive方法中加入一行代码:abortBroadcast(); ?...那么第二个广播接收器就不能接收到广播信息,因为,这条广播信息已经在第一个广播接收器中被abortBroadcast方法阻拦

    2K10

    【老孟Flutter】Flutter 2 新增功能

    这使开发人员能够防止null错误崩溃,这是应用程序崩溃常见原因。通过将空检查合并到类型系统中,可以在开发过程中捕获这些错误,从而防止生产崩溃。...具有Add-to-App多个Flutter实例 从与许多Flutter开发人员交谈中我们了解到,您中许多人没有启动全新应用程序奢侈心意,但您可以通过将Flutter添加到现有的iOS和Android...此功能称为Add-to-App,是在两个移动平台上重用Flutter代码同时仍保留现有本机代码绝佳方法。但是,对于您中那些人,我们有时会听到,不清楚如何将第一个屏幕集成到Flutter中。...这些插件包括: 核 验证 云消防站 云功能 云消息传递 云储存 速溶药 另外,如果您正在寻找应用程序崩溃报告,则可能需要考虑Sentry,该公司已经发布适用于Flutter应用程序新SDK。...图片发布 Sentry崩溃报告工具现在支持Flutter 借助SentryFlutter SDK,您可以实时收到在Android,iOS或本机平台上发生错误通知。

    7.9K20

    Android 多摄像头支持

    如果你想要打开第一个摄像头,需要进行以下操作: val cameraDevice = Camera.open(0) 复制代码 但是这些是比较简单操作。...第一个并不是最好选择 上述代码目前看起来没什么问题。...如果我们所需要只是一个能够打开第一个存在摄像头应用程序,那么它在大部分 Android 手机上都有效。但是考虑到以下场景: 如果设备没有摄像头,那么应用程序崩溃。...但是当应用程序运行在没有后置摄像头设备上,比如 PixelBooks 或者其他一些 ChromeOS 笔记本电脑,将会打开唯一一个前置摄像头。 那么我们应该怎么做?...最佳实践 Android 运行在许多不同设备上。你不应该假设你应用程序总是在有一两个摄像头传统手持设备上运行,而是应该为你应用程序选择最适合摄像头。

    2.9K40
    领券