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

Anbox:在 Linux 上运行 Android 应用程序的简单方式

Anbox 是 “Android in a box” 的缩写。Anbox 是一个基于容器的方法,可以在普通的 GNU/Linux 系统上启动完整的 Android 系统。 它是现代化的新模拟器之一。...Anbox 可以让你在 Linux 系统上运行 Android,而没有虚拟化的迟钝,因为核心的 Android 操作系统已经使用 Linux 命名空间(LXE)放置到容器中了。...Android 容器不能直接访问到任何硬件,所有硬件的访问都是通过在主机上的守护进程进行的。 每个应用程序将在一个单独窗口打开,就像其它本地系统应用程序一样,并且它可以显示在启动器中。...因此,我们需要手动下载每个应用程序(APK),并使用 Android 调试桥(ADB)安装它。 ADB 工具在大多数的发行版的软件仓库是轻易可获得的,我们可以容易地安装它。...Success $ adb install 'org.mozilla.focus_9.0-330191219_minAPI21(x86)(nodpi)_apkmirror.com.apk' Success 我已经在我的

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

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

    与此同时,我一直在与 Google Play 团队合作,与 Android 社区开发人员合作,确保开发人员在适当的情况下优化他们对这些设备的应用体验。...选择您的应用策略 ? 许多人会问自己的第一个问题是:“我应该优化现有的应用程序还是创建一个新的应用程序?”虽然这个问题看似简单,但答案可能会更复杂一些。...确定应用策略后,在优化您的应用时需要考虑一些关键因素: 确保您的应用没有 ANR 和崩溃 针对 Android Oreo 您安装的应用程序要低于 40 MB,游戏要低于 65 MB 应用程序的 PSS...“ 在诊断 ANR 时有一些常见的模式用于查找: 该应用程序在主线程上执行涉及 I/O 的耗时操作。...最后,我搜索了不明确的 SQL 语句以取代更高效的 SQL 语句。所有这些项目以及其他一些项目共同帮助我将 PSS 降低了近 60%。 保持冷启动时间在 5 秒以下 感知是关键。

    1.8K20

    Android性能优化(一)

    视觉优化 应用程序启动有三种状态,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动和温启动。 在冷启动时,应用程序从头开始。在其他状态下,系统需要将正在运行的应用程序从后台运行到前台。...我们建议您始终根据冷启动的假设进行优化。这样做也可以改善热启动和温启动的性能。 在冷启动开始时,系统有三个任务。这些任务是: 加载并启动应用程序。 启动后立即显示应用程序空白的启动窗口。...在屏幕上执行View的绘制过程.measure -> layout -> draw 应用程序进程完成第一次绘制后,系统进程会交换当前显示的背景窗口,将其替换为主活动。...启动后立即显示应用程序空白的启动窗口。 创建应用程序进程。 所谓的主题优化,就是应用程序在冷启动的时候(1~2阶段),设置启动窗口的主题。...Android 的两种崩溃: Java 崩溃 Native 崩溃 简单来说,Java 崩溃就是在 Java 代码中,出现了未捕获异常,导致程序异常退出。

    2.7K20

    Android-App性能优化

    及时反馈,点击事件,滑动,系统事件 UI 这个涉及到android的系统显示原理,我们简单了解一下: Android 显示过程可以简单概括为:Android 应用程序把经过测量,布局、绘制后的 surface...这些任务是: 1、加载并启动应用程序 2、启动后立即显示应用程序的空白启动窗口 3、创建应用程序进程 当系统为我们创建了应用进程之后,会执行以下的操作: application的初始化 启动UI线程...此时至此启动完成,用户可以使用程序(app)了,那么这里就会有两类创建: Application的创建 当Application启动时,会有一个空白的启动窗口保留在屏幕上,直到系统首次完成绘制应用程序...你比如,我用户Back退出应用程序,然后又重新启动,应用程序会再次执行Activity的onCreate(),但会从Bundle(savedInstanceState)获取数据,我们平时应用成勋崩溃,不也是通过该方法保存数据的吗...匿名内部类或非静态内部类导致的内存泄漏,这个我们可以采用合理使用JAVA的引用机制来解决,我上一篇文章有详解,参考Android-强,软,弱,虚引用. 4.资源未关闭导致的内存泄漏就比较好说了,我们平时要多检查

    2.2K40

    App 启动优化

    这其中的道理简单说就是学习用户的使用习惯,提前将App进程创建好,当用户打开APP时不会出去冷启动。...Android APP启动时会出现白屏 由于应用程序启动时冷启动,系统会默认在启动时启动空白窗口 应用程序启动有三种状态,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动和温启动。...在冷启动时,应用程序从头开始。在其他状态下,系统需要将正在运行的应用程序从后台运行到前台。我们建议您始终根据冷启动的假设进行优化。这样做也可以改善热启动和温启动的性能。...在冷启动开始时,系统有三个任务。这些任务是: - 加载并启动应用程序。 - 启动后立即显示应用程序空白的启动窗口。 - 创建应用程序进程。...- 填充加载布局Views - 在屏幕上执行View的绘制过程measure -> layout -> draw 应用程序进程完成第一次绘制后,系统进程会交换当前显示的背景窗口,将其替换为主活动。

    1.4K10

    配置Android项目 - 一些重要的事情

    在模板项目中查看gitignore文件。 tools folder 如果你有一些第三方脚本,规则集或其他与您的项目相关的文件不要只是简单的把它们放在根目录 —它会造成混乱。...在模板项目中查看 productFlavors。 keystore keystore是一个二进制文件,其中包含一个或多个用于签署应用程序的私钥。...使用本地调试keystore时有几个问题: 到期日365天 从多台计算机安装应用程序需要先卸载 google服务需要密钥库SHA-1指纹 这就是为什么我通常生成调试密钥库并提交到版本控制系统。 ?...strict mode Android StrictMode可帮助您检测不同类型的问题: 可关闭对象没关闭 在主线程中读写文件或者访问网络 uri 暴露 … 每当检测到这样的问题,它可以显示适当的日志或应用程序崩溃...我建议你只在调试的时候打开它并且使用detectAll方法来检测所有类型的问题。 ? 这里是当你忘记关闭SQLiteCursor的日志的例子: ? 在模板代码中查看StrictMode。

    66820

    Android Hook与简单的xposed模块开发实例

    Android Hook与此类似,允许开发者在Android应用程序运行时修改或扩展现有功能。...在快写完这篇博客的时候,我才发现我想要实现的功能不需要Android Hook即可实现…不过不耽误我对这方面做一些了解,所以接着写完了。补充知识前几天刷机的时候基本算是闷头跟着教程走,中间还险些变砖。...在高版本Android系统上的兼容性问题。...Xposed通过替换核心文件app_process工作,这种方式在新的Android系统中容易冲突,导致不稳定甚至崩溃。...晚上的很多类似的教程,但有一点不好,就是不解释为什么要怎么写,我比较呆,写完之后会搜搜为什么要这么做,这里也一并附上,所以后面的内容会有点啰嗦。

    7200

    Android 性能优化—— 启动优化提升60%

    应用启动速度 一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意图下降,或者卸载放弃该应用程序 本文将从两个方向优化应用的启动速度 : 1.视觉体验优化...但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动 在冷启动时,应用程序从头开始。...这些任务是: 1.加载并启动应用程序 2.启动后立即显示应用程序空白的启动窗口 3.创建应用程序进程 一旦系统创建应用程序进程,应用程序进程就会负责下一阶段,这些阶段包括: 1.创建app对象...2.启动主线程(main thread) 3.填充加载布局Views 4.在屏幕上执行View的绘制过程.measure -> layout -> draw 应用程序进程完成第一次绘制后,系统进程会交换当前显示的背景窗口...,直到 App 应用程序的入口 Activity 创建成功,视图绘制完毕 解决方法可查看Android启动界面SplashActivit的实现方法 代码优化 Android中如何计算 App 的启动时间

    2K20

    Flutter为什么使用Dart?

    Dart在以下主要标准上赢得了高分: 开发人员的生产力。Flutter的主要价值主张之一是,它可以让开发人员使用相同的代码库为iOS和Android创建应用程序,从而节省了工程资源。...特别是,JIT编译器的启动时间较慢,因为在程序开始运行时,JIT编译器必须在执行代码之前进行分析和编译。研究表明,如果开始执行需要花费几秒钟的时间,那么很多人就会放弃该应用程序。...不仅比跨平台应用程序更好,而且与最佳本机应用程序一样好: 用户界面非常流畅……我从未见过如此流畅的Android应用。...这是开发人员在题为“ 为什么本机应用程序开发人员应认真看待Flutter ” 的文章中写的。...最后,文章“ 我们为什么选择Flutter以及它如何使我们的公司变得更好 ”来自一家将大型企业应用程序迁移到所有三个平台(iOS,Android和Web)上的Dart的公司。

    1.5K20

    Android性能优化(一)—— 启动优化,冷启动,热启动,温启动

    如果应用程序的所有activity存在内存中,则应用程序可以避免重复对象初始化、渲染、绘制操作。...如果由于内存不足导致对象被回收,则需要在热启动时重建对象,此时与冷启动时将界面显示到手机屏幕上一样。...空白window问题 app启动时,会短暂的一瞬间白屏,这个动图是我在Application的oncCreate里线程休眠1s实现。虽然如此,但是实际项目中确实存在启动时白屏时间过长的问题。...要看怎么解决,先问▲为什么会有白屏? 在上面讲冷启动第一阶段,启动app之后,立即展示一个空白的window,那么具体怎么展示,为什么要展示空白的window呢?...两种方法: 禁用app启动时window预览的功能 在主题中为首屏activity添加一个注意,禁用window预览的功能,并在manifest中使用 <!

    26410

    Debezium教程翻译01:概览

    Debezium是一个分布式平台,它将您现有的数据库转换为事件流,这样应用程序就可以立即看到并响应数据库中的每一行更改。...即使您的应用程序停止(或崩溃),在重新启动时,它将从上次停止的地方开始,这样它就不会遗漏任何东西。 Debezium是一个开源分布式平台,用于捕获数据库的更改。...用你的数据做更多的事情 你的数据总是在变化。Debezium允许应用程序在每次数据更改时做出响应,而不必更改修改数据的应用程序。...事实上,将该功能从应用程序中提取出来,放到单独的服务中。 简化你的应用程序 既然Debezium可以监控你的数据,为什么要让一个应用程序更新数据库、更新搜索索引、发送通知和发布消息呢?...当事情出问题时,做出正确的处理,是很困难的,如果你做错了,那些系统中的数据可能会变得不一致。保持简单,并将额外的功能转移到Debezium的独立服务中。

    3.4K20

    如何用 Android vitals 解决应用程序的质量问题

    不仅如此,用户还会更加投入,并愿意在这些应用程序上花费更多的时间和金钱。 因此,解决应用程序的稳定性问题可以在很大程度上决定它有多成功。...这个模块可以告诉你应用程序的性能和稳定性问题,而不需要在代码中添加仪器或库。当你的应用程序运行在众多设备上的时候,Android vitals 会收集关于应用程序性能的匿名指标。...即使在使用硬件实验室进行测试时,它也会以其他方式难以获得的规模为你提供信息。 Android vitals 可以提醒你的问题包括崩溃、应用程序无响应(ANR)和渲染时间。...在应用程序启动时使用 StrictMode#setThreadPolicy 可以自定义你想要检测的内容,包括磁盘和网络读写,甚至可以通过 StrictMode#noteSlowCall 在应用程序中触发自定义的慢速调用...我将在 5 月 8 日星期二下午 3 点,在 Google I/O 2018 大会上和同事 Fergus Hurley 以及 Joel Newman 一起演示 “Android vitals:调试应用程序性能和收获奖励

    2.3K10

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

    现在我们明白了为什么 ProGuard(混淆)会失败了,是时候解决这个问题了:确保我们为项目配置添加必要的保留规则,以防止在不同模块(在一个模块中定义,在另一个中使用)之间的类被移除或混淆。...我建议在处理 ProGuard(混淆)错误前熟读 Android Studio 文档,ProGuard (混淆)手册 以及我的上一篇文章 。...新功能:禁用非基本模块中的混淆 现在看来,我在我的指南中遗漏了一个重要的(现在很明显就发现了)的点。...更好的方法是在完整的,可安装的应用程序中重新使用 ProGuard(混淆)映射文件,但设置和维护起来很困难。更简单的方法是简单地禁用非基本特征中的混淆。...请记住通过运行应用程序并检查所有可能的情况来彻底进行测试,因为某些错误只能在运行时发生。 ---- 希望本指南能够让你更好地理解为什么 ProGuard(混淆)可以使你的即时应用程序崩溃。

    2.6K30

    你的 APP 为何启动那么慢?

    这其中的道理简单说就是学习用户的使用习惯,提前将App进程创建好,当用户打开APP时不会出现冷启动。...进程启动后系统还有一个工作就是:进程启动后立即显示应用程序的空白启动窗口。 一旦系统创建应用程序进程,应用程序进程就会负责下一阶段。...image.png 这里很明显有两个优化点: 1.Application OnCrate()优化 当APP启动时,空白的启动窗口将保留在屏幕上,直到系统首次完成绘制应用程序。...3.可以通过在代码中增加log来计算启动时间 4.使用systrace Application OnCrate()优化 1.第三方SDK初始化的处理 Application是程序的主入口,很多三方SDK...冷启动白屏.gif 为什么启动时会出现短暂黑屏或白屏的现象?

    1.9K20

    为什么Flutter会选择 Dart ?

    不仅仅比跨平台的应用程序好,而且和最好的原生应用程序一样好: UI像黄油一样顺滑……我从来没有见过这样流畅的Android应用程序。...竞态条件具有双重不利,因为它可能会导致严重的错误,包括应用程序崩溃并导致数据丢失,而且由于它取决于独立线程的时序,所以它特别难以找到并修复。在调试器中运行应用程序时,竞态条件常常消失不见。...实际上,可视化编辑器就变得多余了。我一点都不怀恋XCode的自动重布局。 Dart创建的布局简洁且易于理解,而“超快”的热重载可立即看到结果。这包括布局的非静态部分。...一个程序员在名为“为什么Flutter 2018年将起飞”的文章中写到: Dart是用于开发Flutter应用程序的语言,很易学。谷歌在创建简单、有文档记录的语言方面拥有丰富的经验,如Go。...最后,一家将三种平台(iOS、Android和Web)上的大型企业应用程序都迁移到Dart的公司,有一篇文章“我们为什么选择Flutter以及它如何改变我们的公司”。他们的结论: 招人变得容易多了。

    2.1K30

    谈一谈Android内存

    而有些人是心有余而力不足,“我也想优化,可是怎么去优化呢?”。本篇文章将给你带来一点启示,让你从力不从心到知道怎么去入手优化。 01 一、为什么需要做内存优化?...02 二、讲内存之前不得不讲虚拟机 Android在4.4之前一直用的都是Dalvik虚拟机(以下以DVM简称),在Android 4.4的时候推出可选择的ART虚拟机并且在5.0的时候全面抛弃DVM而完全使用...在windows上的指令可能是010101(举例,并非真实指令),而在Linux上定义警告弹窗是101111(同样为举例,以下所有涉及的指令仅为举例需要)。...为什么Android抛弃了DVM而选择ART 我们都知道Android最终是将Java代码编译成.dex文件装载到虚拟机中去的,DVM是基于JIT(Just In Time),即在执行的时候实时的将部分...每当我们的一个应用程序启动时,zygote进程就会folk一个进程作为应用程序的进程,并且与zygote进程共享分配内存的堆。

    63620

    ❤️Android 性能优化之启动优化❤️

    这些任务是: 加载和启动应用程序。 启动后立即显示应用程序的空白启动页面。 创建应用程序进程。 一旦系统创建了应用程序进程,应用程序进程就负责接下来的阶段: 创建应用的实体。...创建 Application 当应用程序启动时,空白启动页面保留在屏幕上,直到系统首次完成应用程序的绘制。...查询的启动时间 初始显示时间(Time to initial display) 在 Android 4.4(API 级别 19)及更高版本中,logcat 包含一个输出行,其中包含一个名为 Displayed...在应用程序执行延迟加载的情况下,这可能很有价值。在延迟加载中,应用程序不会阻止窗口的初始绘制,而是异步加载资源并更新视图层次结构。 这里我在Activity.onCreate()中加了个工作线程。...代码优化 不必要的初始化还是磁盘I/O,延迟初始化 资源初始化分类,以便应用程序可以在不同的线程上延迟执行。 动态加载资源和Bitmap 关于这两块的优化后续会有单独的文章去写。

    91860

    移动开发界囚徒现身说法,审查困境与控制权探讨

    开始我并没有惊慌,因为问题看起来跟应用更新没啥关系。但在第一次使用 Android 实机(我之前只在模拟器上测试过)检查了登录流程后,发现应用会崩溃并关闭。...这个问题会导致应用在登录后立即崩溃,而使用较旧 Android 版本则不受影响。我们的最大疏忽,就是没有在模拟测试时使用最新的 Android 版本,所以没能及时问题隐患。...我还算幸运,因为同样的崩溃状况在最新 Android 模拟器上成功复现,而且修复起来并不需要做太多代码变更。...但熬夜加班还是很容易出错误,在把修复版本摆上 Play Store 前也实在没有多少时间能做全面测试。但毕竟之前的问题是应用在登录后立即崩溃,所以我觉得这次更新再怎么差也比之前要好。...简单来讲,我想达成的效果就是修复所有已知的崩溃问题、发布新版本,然后在逐步完成全面测试后再更新一个包含后续修复的新版本。所以在向 Play Store 提交了新版本后,我就在焦急地等待谷歌完成审核。

    13410

    OpenStack上NFV组件的自动化

    [这篇文章最初是由Shay Naeh写的] 在我之前的文章中,我讨论了在云上虚拟化网络功能的必要性。在这篇文章中,我将深入探讨一个真实的场景,比方说可以在家里尝试。(我们也支持本地云,还记得吗?)...我做了个实验,单独取了个制作视频流的软件在Tomcat Web容器上运行,使用了Tomcat和一个虚拟软件负载均衡器来实现弹性。Tomcat依次登记了我使用Apache创建的虚拟负载均衡器。...这里我使用了一个简单的循环策略,将请求均匀地直接发送到Tomcat服务器中。...同时我还使用了一个Tomcat连接器,每当有一个新的Tomcat启动时,它就会连接到负载均衡器上,并声明这有一个额外的视频流,表明我是可以用的并且你可以直接引导流量给我。...我上传了各种MP3和MP4文件(音频和视频),并能够使用从Google Play和Apple App Store下载的客户端应用程序分别在桌面浏览器和Android以及iPhone移动设备上播放。

    1.9K100
    领券