我想从简单的C代码创建任何可运行的文件,该代码能够在Android的库级别中运行。 我是Android新手,我发现的所有内容都是使用NDK的选项,它也需要Java代码 - 它在应用程序级别运行应用程序 - 我希望它作为系统命令行运行(有可能吗?)文件。
答案 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 emulator或adb shell
启动此可执行文件。
如果您在设备上拥有超级用户权限(或者如果您自己刷新了自己的mod),则可以通过标准Linux init.rc
或类似方式启动可执行文件。
请注意,在后一种情况下,您可以轻松授予可执行文件root
或其他权限。