2012-06-05 284 views
0

我有以下疑问:访问Android操作系统根文件

我已阅读,Android操作系统是基于Linux,以及i想象它可以具有相同的结构,它的ubuntu(在文件配置的术语:/根,/dev等)。 那么,是否有可能在android中运行用C语言编写的应用程序?就像在ubuntu中可以做到的一样?如果是这样,我该怎么做?

另外,我怎样才能通过Android应用程序(用java编写)访问根文件?以及如何获得操作系统的行为(例如,在中断方面)?

在此先感谢您的答案。

GUS

+0

我支持这个问题,但你为什么要? – AedonEtLIRA

+0

如果你想开发一个杀毒软件或类似的东西,也可以像ubuntu一样对机器进行更高的控制。 – gus

回答

1

基本答案:运行Android上的一个C程序不支持,除了通过本地开发工具包(NDK)。

除生根电话外,您无法访问根文件。

您可以通过API访问某些操作系统行为。基本上,如果它不是API的一部分,则无法访问它。

在Linux上,Android操作系统是,基于,但它是一个操作系统,而不是像X或Gnome或KDE这样的桌面环境的开窗服务器。

+0

感谢您的回答,现在我更好地理解它。但现在我有以下疑问:1.当您使用应用程序添加联系人(例如电话号码)时,手机中保存的信息在哪里?我可以访问该位置吗?如果是这样,如何? 2.是否可以访问正在插入应用程序中的信息?例如:假设应用程序正在运行,并且用户在应用程序的某个字段中插入了一些信息,是否可以通过其他应用程序访问该信息? (由于它们在“不同的”虚拟机中运行)。再次感谢,古斯。 – gus

0

您可以使用的Android NDK运行C and C++代码。您也可以使用QT框架。但代码在名为Davlik的虚拟机中运行。 Android有根用户帐号,但默认不可用于用户。因此,访问目录是依赖于chmod

如果您想了解获得低级别在android系统: http://www.phrack.org/issues.html?issue=68&id=6

而关于结构本系统: https://developer.android.com/guide/basics/what-is-android.html

+0

感谢您的回答,非常有用。但挖掘一些更多的Android操作系统的结构,现在我有以下疑虑:1.当你使用应用程序来添加联系人(例如这样的电话号码),该信息保存在手机中的哪里?我可以访问该位置吗?如果是这样,如何? 2.是否可以访问正在插入应用程序中的信息?例如:假设应用程序正在运行,并且用户在应用程序的某个字段中插入了一些信息,是否可以通过其他应用程序访问该信息? (由于它们在“不同的”虚拟机中运行)。再次感谢,古斯。 – gus

+0

1.联系人和其他数据存储在SQLite数据库中2.在VM应用程序中有其他自己的进程。 2.在使用'ptrace'时,可以在linux上访问其他进程。在android也许是相似的。 – user902691

0

您可以使用Runtime.exec运行程序。例如,您可以看到运行许多不同程序(包括ssh,vim和bash)的Terminal IDE。它也是开源的,所以你可以从code了解到。您可能必须将可执行文件包含为资源或资产,然后复制到本地目录,授予执行权限,然后使用Runtime.exec运行。由于您的应用在受限帐户下运行,因此您仍然拥有有限的用户权限,除非该设备已拥有root权限并且您请求root访问权限。

0

安卓智能手机/平板电脑可以与Arm cpu一起使用,而不是x85。架构是不同的。 但你可以在android上运行一个C应用程序,如果你为arm linux交叉编译它。或者你可以在android设备中使用c编译器。人们将C编译器移植到了android。你可以尝试C4DROID和Android市场。但你只能在系统内存中运行编译的程序,因为有关sd卡的android权限。