繁体   English   中英

如何为根Android编译纯本机可执行文件

[英]How to compile a pure native executable for rooted Android

我正在开发扎根的Android 2.3。 在我的应用程序中,使用jni机制,我调用了一个需要root权限才能运行的本机(c / c ++)函数,这就是为什么它总是会失败的原因(即使我的电话是root的-因为特定的进程/应用程序需要授予root权限) 。

我想将该功能移动到将通过从Java运行的命令“ sudo exec_name”在Linux上运行的外部可执行文件( Runtime.getRuntime().exec("sudo ...") ;)

所以

1)如何编译本机可执行文件? (不是通常的[.so]库)

2)在拥有独立的可执行文件之后,我必须将其放置在系统中的哪个位置并具有什么权限?

要编译本机可执行文件,请使用include $(BUILD_EXECUTABLE)而不是include $(BUILD_SHARED_LIBRARY) NDK有一个名为test-libstdc++的示例,该示例显示了如何构建最简单的本机可执行文件。

然后,您需要将其放在/data/local类的可执行位置,并调用chmod 777使其可执行。 之后,您可以通过外壳运行它。

我想将该功能移动到将通过从Java(Runtime.getRuntime()。exec(“ sudo ...”);)运行的命令“ sudo exec_name”在Linux上运行的外部可执行文件。

在这种情况下,您的工作流程将如下所示:

  • 您将代码编译为本机可执行文件,并将其放入应用程序资产中
  • 开始时,您需要将yoru可执行文件从资产复制到/system/bin
  • 允许使用chmod 777运行它
  • 实际运行您的可执行文件

前三点应该只做一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM