如何编译 Dalvik 以在 Linux 上本地运行它?

Posted

技术标签:

【中文标题】如何编译 Dalvik 以在 Linux 上本地运行它?【英文标题】:How can I compile Dalvik to run it locally on Linux? 【发布时间】:2011-04-02 07:39:35 【问题描述】:

在 Linux 上编译和运行 Dalvik 虚拟机所需的最少步骤(包括检索源代码)是什么?

【问题讨论】:

您可以按照以下步骤将其移植到看不见的架构:source.android.com/porting/dalvik.html 那它根本就不能在 x86 上运行吗?抱歉,我没有意识到这一点。 此问题与以下内容重复:***.com/questions/1297678 该问题的答案包括使用“sim-eng”午餐目标构建 Linux dalvikvm 的说明。 谢谢,该问题包含指向“dvk”项目的链接,我将在这里重复以供将来参考:code.google.com/p/dvk/wiki/Installing 这个我以前没有遇到过的项目基本上回答了我的问题. 我添加了一个有效的答案。没有人告诉你编码或说这是不可能的 【参考方案1】:

实际上,我让 Dalvik 开始安装我的基本操作系统。

首先使用https://source.android.com/source/downloading.html 下载Android AOSP 源代码树。等待它下载(我只克隆当前提交和 Marshmallow 分支需要 2 小时)

在源代码树中运行build/envsetup.sh 后运行lunch full_x86-eng。然后输入make -jN(将 N 替换为核心数)。

等等。我在 AMD-4500M 笔记本电脑上花了大约 1 个小时。较新的计算机可能低至半小时,而较旧的计算机可能需要半天。

将目录更改为!!AOSP-PATH!!/out/host/linux-x86/bin/ 并运行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:!!AOSP-PATH!!/out/host/linux-x86/obj/lib/

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:!!AOSP-PATH!!/out/host/linux-x86/lib

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:!!AOSP-PATH!!/out/host/linux-x86/lib64

尝试所有这些

然后 ./dalvikvm --32。如果您尝试在没有--32 选项的情况下运行,它将崩溃(不知道为什么)

工作棉花糖达尔维克。为了让 GUI 应用程序正常工作,您需要做更多的移植和编码,这是我正在从事的另一个项目。

我花了半天时间才弄明白。

参考文献

http://milk.com/kodebase/dalvik-docs-mirror/docs/hello-world.html

【讨论】:

【参考方案2】:

使用 sabayon Linux。这是一个可以原生运行 Android 程序和所有 Linux 程序的发行版。

【讨论】:

谢谢 lee ;) 我才 13 岁,一直犯这些错误。 +1s for "Awwwwww" 因素(和好的答案)=](抱歉,如果这有点光顾) 啊,我认为这只是个玩笑——帖子是从 4 月 1 日开始的......lxnay.wordpress.com/2012/04/01/… =(【参考方案3】:

其实那是在Dalvik上运行的android,底层系统已经是linux了。

我猜想在桌面 linux 机器上运行一个裸机 Dalvik VM 只是获取源代码并编译它的问题。

图形用户界面的东西是别的东西。

【讨论】:

是的,非常正确,我做到了。我没有碰任何代码。 GUI 应用程序仍然无法工作,但 Dalvik 工作是一个很好的起点 我花了半天时间才搞定。提问者已经等了 6 年了【参考方案4】:

你不是唯一一个有这个想法的人,这在互联网社会方面很棒。

这可能就是您要查找的内容:http://www.android-x86.org/。 那些家伙将 android 移植到 x86。

它仍然可以作为操作系统运行,所以我不确定你是否可以在不使用 VirtualBox 的情况下同时运行 Linux 和 Android(Linux)。

【讨论】:

【参考方案5】:

Dalvik 在 Android 上运行。据我们所知,Dalvik 的作者只担心它在 Android 上运行。

各种团体表示他们正在努力让 Dalvik 脱离 Android。您最好找到他们并与他们交谈。

换句话说,没有您寻求的那种官方说明。

对不起!

【讨论】:

...除了 dalvik/docs/hello-world.html 在源代码树中。在 gitweb 中,请参见 android.git.kernel.org/?p=platform/… 。 该链接似乎已损坏。它也被镜像milk.com/kodebase/dalvik-docs-mirror/docs/hello-world.html【参考方案6】:

让专为 Android 设计的应用程序在 Linux 上运行会很棘手。但是,可以在 Linux 上运行 Dalvik VM。事实上,this GitHub project 有一个 Dalvik VM for Linux 的预编译二进制文件,可以使用了!查看相关联的blog post,了解有关如何编译二进制文件以及如何使用它的信息。

【讨论】:

【参考方案7】:

学习Java\C\C++等框架编程

修改Android源代码(我认为是app_process之类的),使其在Linux桌面上显示一个窗口(学习X11 / Wayland APIs)

下面是一个简单的基础供您开始

www.android-x86.org/getsourcecode

获取Android-x86源代码

首先,按照此页面配置您的构建环境。那么

mkdir android-x86
cd android-x86

repo init -u git.android-x86.org/manifest -b $branch
repo sync

其中 $branch 是上一节中描述的任何分支名称。这会将 android-x86 创建或修改的项目指向我们的 git 服务器。所有其他项目仍然指向 AOSP。 我们在 SourceForge.net 上也有一个 git 镜像服务器。要使用它,只需要将 repo init 命令更改为

repo init -u git.code.sf.net/p/android-x86/manifest -b $branch

【讨论】:

Android 和 C# 有什么关系。它是用 Java / C / C++ 制作的,与 C# 无关。

以上是关于如何编译 Dalvik 以在 Linux 上本地运行它?的主要内容,如果未能解决你的问题,请参考以下文章

编译 Qt 项目以在 Linux 系统上运行

如何反编译 android 中 /data/dalvik-cache/arm 下的文件

如何交叉编译我的 Linux 应用程序以在 Linux 中获取 Windows 可执行文件?

编译 C++ 代码以在 Windows 和 Linux 中表现相同 [关闭]

如何解决 Dalvik 编译器对 64K 方法的限制问题?

深入理解Dalvik虚拟机- 解释器的执行机制