我正在开发一款有根据的Android 2.3。 在我的应用程序中,使用jni机制我调用一个需要root权限才能运行的本机(c / c ++)函数,这就是它总是失败的原因(即使我的手机是root的 - 因为特定的进程/ app需要授予root权限)
我想将该函数移动到将通过命令“sudo exec_name”在linux上运行的外部可执行文件,我将从java(Runtime.getRuntime().exec("sudo ...")
;)
所以
1)如何编译本机可执行文件? (不像往常那样的库[.so])
2)在我有一个独立的可执行文件之后,我必须在系统中放置它并具有哪些权限?
答案 0 :(得分:1)
要编译本机可执行文件,请使用include $(BUILD_EXECUTABLE)
而不是include $(BUILD_SHARED_LIBRARY)
。 NDK
中有一个名为test-libstdc++
的示例,它展示了如何构建最简单的本机可执行文件。
然后,您需要将其放在/data/local
之类的可执行位置,并调用chmod 777
以使其可执行。之后,您可以通过shell运行它。
我想将该函数移动到将通过命令“sudo exec_name”在linux上运行的外部可执行文件,该命令将从java运行(Runtime.getRuntime()。exec(“sudo ...”);)
在这种情况下,您的工作流程将如下所示:
/system/bin
chmod 777
前三点应该只进行一次。