编译并运行Android的C代码

时间:2014-03-23 10:08:33

标签: android c android-ndk

我想从简单的C代码创建任何可运行的文件,该代码能够在Android的库级别中运行。 我是Android新手,我发现的所有内容都是使用NDK的选项,它也需要Java代码 - 它在应用程序级别运行应用程序 - 我希望它作为系统命令行运行(有可能吗?)文件。

2 个答案:

答案 0 :(得分:1)

您可以尝试将代码编译为可执行文件,然后直接从ADB shell启动它。基本上,当您使用ndk-build编译代码(假设您有一个名为hello.cpp的cpp文件)时,请像这样编写Android.mk:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \
        hello.cpp

LOCAL_MODULE:= hello
include $(BUILD_EXECUTABLE)

然后,您可以使用ADB工具帮助您将可执行文件推送到您的设备,并通过adb shell运行,例如,

adb shell "mkdir -p /data/test"
adb push hello /data/test/
adb shell "cd /data/test & chmod 777 hello & ./hello"

上述方法要求您具有root权限,否则您无法chmod或启动本机可执行文件。

有一个名为Android Native Program Launcher的工具,它允许您在非root用户设备中运行本机代码,您可以尝试一下。

将可执行二进制文件推送到/data/local/tmp/文件夹的另一种方法,您也可以完全控制可执行文件。 `adb push you_binary / data / local / tmp /

答案 1 :(得分:0)

让我们从下往上开始。

Going C(或C ++)不会在Android下授予您的代码额外权限。

在没有Java的情况下进行所有开发有不同的选择。有纯C ++的框架(如NativeActivity),或C#(MonoDroid),或Scala,或Ruby等等。

Android NDK还允许简单地构建可执行文件 - 可以从命令行运行,并且没有GUI。您的Android应用可以通过标准Java Runtime.exec()和她的兄弟姐妹启动此类可执行文件。或者,您可以从terminal emulatoradb shell启动此可执行文件。

如果您在设备上拥有超级用户权限(或者如果您自己刷新了自己的mod),则可以通过标准Linux init.rc或类似方式启动可执行文件。

请注意,在后一种情况下,您可以轻松授予可执行文件root或其他权限。