当前位置: 首页 > article >正文

安卓应用兼容新方案:Android Translation Layer(ATL)

关于 Linux 上运行安卓应用程序,我前面已经写过两篇文章:

  • Linux 系统运行 Android 应用的几种方案

  • deepin V23 下运行安卓应用程序

看起来可选的方案很多,但是,每种方案总有其局限性,比较难抉择。周末的时候,继续收集资料,又发现了一个新的方案,那就是 Android Translation Layer(ATL)。

谈到 ATL,可以和 WINE 进行类比。WINE 是一个在 Linux 和 Mac OS 等类 Unix 系统上运行 Windows 应用程序的兼容层。关于 WINE,我前面也写过几篇文章:

  • 在国产系统上安装 Windows 应用程序

  • Windows应用程序是如何在国产系统上运行的

  • Wine 10.0 发布,deepin wine 团队要加油了

  • Wine 开发系列之 —— 入门

ATL 借鉴了 WINE 的设计哲学,通过重新实现 Android 框架 API(类似 WINE 对 Windows API 的转译逻辑),试图以更轻量、更原生的方式实现安卓应用与 Linux 桌面的无缝集成。

ATL的核心特点

  1. 对内核模块无依赖:与 Waydroid 和 anbox 等容器化方案依赖 binder 内核模块或定制化内核(如 linux-zen )不同, ATL 无需任何内核级修改。它通过用户空间的兼容层直接翻译安卓应用的系统调用(syscall),直接调用 Linux 系统的原生 API,从而对内核版本无要求,适应面更广。

  2. 原生桌面集成体验:ATL 摒弃了之前介绍方案中容器内运行完整安卓系统的模式,转而让每个安卓应用以独立窗口的形式直接运行在 Linux 桌面上。这一设计使得应用窗口管理、任务切换等操作与原生 Linux 程序无异,支持与本地文件管理器、浏览器、通知系统的深度交互,可以提升用户体验的一致性。

  3. GTK驱动的原生渲染引擎:项目创新性地将安卓应用的 UI 控件(如按钮、文本框)转换为 GTK 组件进行渲染。此举不仅避免了 Waydroid 依赖 Wayland 协议可能引入的兼容性问题,还能直接利用 Linux 桌面环境的高分辨率支持和本地输入法,实现更自然的字体渲染和触控交互。

  4. 性能优化潜力:由于绕过了容器化带来的虚拟化开销, ATL 理论上能减少资源占用,尤其适用于低配置设备。其启动速度更快,输入延迟更低。此外,直接调用 Linux 图形接口(如 OpenGL / Vulkan / VA-API驱动)的特性,使其在图形密集型应用中可能表现更优。

ATL 的不足

从 ATL 代码仓库的提交记录看,项目最初创建于 2021 年初,但前两年提交很少,从 2023 年开始才提交比较频繁。目前,其代码仍处于早期实验阶段(alpha状态),不具备在产品中使用的条件。

要翻译所有 Android 框架 API,想想就会觉得工作量巨大。最为致命的是,其 GitLab 代码库活跃度不足,社区贡献者规模较小,只有三个人。可以对比一下 WINE 项目共有 2000 多位不同的开发者参与了代码贡献,累计提交代码几十万次。

看起来是一个很不错的项目,为什么参与者这么少?我猜测在于 Android 应用主要运行在移动终端上,其设计理念和桌面应用有很大差异。相较于 Windows 应用,安卓应用运行在 Linux 系统上的需求并不强烈。另外 ATL 项目起步较晚,面对 WINE 的日益成熟,越来越多的 Windows 应用可以运行在 Linux 系统上,ATL 的市场前景并不乐观。

ATL 项目的活跃度不足,也可能是由于文档尚不完善,普通用户难以参与测试或开发。若无法吸引更多开发者贡献代码,该项目可能面临弃坑风险。

小结

ATL 的创新设计为安卓应用与 Linux 桌面融合提供了新思路,但其技术成熟度与实用性仍需时间验证。对于开发者,它展现了一种降低系统层依赖的潜在路径;对于普通用户,则可能在未来成为“即装即用”的便捷工具。

作为技术爱好者,可以参与一下这个项目,为爱发电。积极参与这一项目不仅能够为开源生态贡献力量,还能深入理解其底层实现逻辑,积累宝贵经验。


http://www.kler.cn/a/600152.html

相关文章:

  • python3面试题20个(python web篇)
  • Flink实战教程从入门到精通(基础篇)(三)Flink集群部署
  • Vue+ElementUI 字符串数组标签化展示组件
  • 07_GRU模型
  • 好好学Docker:基于Docker buildx构建多平台镜像【转载】
  • 本地部署Stable Diffusion生成爆火的AI图片
  • (UI自动化测试web端)第二篇:元素定位的方法_xpath扩展(工作当中用的比较多)
  • Python022(字典02)
  • 欢迎来到未来:探索 Dify 开源大语言模型应用开发平台
  • eclipse [jvm memory monitor] SHOW_MEMORY_MONITOR=true
  • spring-security原理与应用系列:总体流程
  • RabbitMQ的高级特性介绍(二)
  • Transformer 通关秘籍2:利用 BERT 将文本 token 化
  • 基于微信小程序的短文写作竞赛管理系统
  • Windows桌面采集技术
  • 【Matlab】串口通信(serialport对象,读写、回调、删除等)
  • Java-腾讯云短信模板兼容阿里云短信模板-短信模板参数生成
  • 【JavaWeb学习Day27】
  • Windows下编译安装Qt5.15.0指南
  • 23种设计模式中的策略模式