我想知道为什么 Android 应用无法在Ubuntu Touch。我的意思是,这一切不都是 Linux 吗?
答案1
最简洁的答案是不。”
严格来说,Linux 内核只不过是为其所运行的硬件提供了直接接口。Android 应用程序依赖一整套 Android 手机专用 API、程序、应用程序等。此外,Android 并不运行在通用的 Linux 内核上,而是运行在 Google 高度定制的内核上,专门用于运行其操作系统。
即使从技术上来说可以重现 Android 应用程序在另一个系统上运行所需的整个堆栈,但它也会变得臃肿且效率极低。
答案2
Nokia n900 运行的是 maemo,它是一种 Linux 操作系统,但它可以通过为其开发的但从未投放市场或存储库的 dalvik 环境运行 Android 应用程序。为什么?只有为 n900 开发 dalvik 的团体知道。现在又有一项名为 apkenv 的计划。似乎没有太多东西可以添加,以使 n900 运行一些 Android 游戏,无论 GPU 或 CPU 功率或 maemo 桌面如何,应用程序在那里运行有些像在任何模拟中一样,但有些运行完美,有些则不行。因此,关于 ubuntu touch 不是技术问题(也许我错了,但一款官方 ubuntu 触摸手机是小米,它也用于 android,所以在这种情况下硬件不是问题)但谷歌不会乐意让 ubuntu 运行 android 应用程序并使用谷歌播放作为第二个存储库(请注意,可以将 .apk 下载为 .deb 并在之后安装)。
答案3
你的问题的答案是大不。
安卓完全不同于Ubuntu Touch虽然android基于linux内核,但这并不意味着android的原生应用程序可以在linux上运行,反之亦然。
不同操作系统之间内核的相似性并不意味着它们的应用程序可以在这些不同的操作系统上执行。内核是系统的最低软件层。内核之上是用户空间其中包括系统软件及应用程序界面。
具有相同内核的操作系统可能具有完全不同的用户空间,并且本机应用程序在特定的用户空间中执行。
此外,Android 应用程序通常使用 Java 开发,并且 Android 应用程序在运行时环境中执行(达尔维克或者艺术)需要字节码从JVM作为输入,而Linux应用程序则直接转换成机器码编译后。
使用 C++ 为 Android 开发的应用程序不能直接在 Linux 环境中执行,而是必须先针对 Linux 系统进行编译。
答案4
这是一个非常古老的帖子,所以现在情况已经不同了,是的你可以在 ubuntu touch 上运行 android 应用程序,但使用像 anbox 或 waydroid 这样的兼容层。