我需要root权限才能在Android下执行本机应用程序?

时间:2013-07-27 02:49:55

标签: android c++ android-ndk native

我已经编译了一个本机应用程序,基本上是一个终端应用程序,使用android NDK,我的主要问题是我无法更改我的可执行文件(动态链接的)的权限,如此chmod +x executable测试和使用该应用程序。

我需要根据我的设备进行操作吗?

我直接通过手机试用了adb shell和随机终端应用程序。

3 个答案:

答案 0 :(得分:2)

这些家伙说根需要: How to compile C into an executable binary file and run it in Android from Android Shell?

根据我的理解,常规SD卡安装时没有执行权限,因此您需要编写类似/ data / local /的内容,这确实需要root权限。

答案 1 :(得分:2)

不,您不需要根设备来使用可执行二进制文件。您不能将它放在/ sdcard上,但在大多数设备上都有一个目录/ data / tmp或/ data / local / tmp,您可以使用adb推送文件并使用adb shell执行。

强大的选项是将APK中的可执行文件打包并通过安装APK将其置于设备上,请参阅Is it possible to run a native arm binary on a non-rooted android phone?How to package native commandline application in apk?

请注意,您无法更改LD_LIBRARY_PATH,因此请注意,如果您的可执行文件依赖于某些不属于/ system / lib的共享库。

答案 2 :(得分:1)

如果您不将本机代码打包为Android应用,则需要从shell运行它。

从Android KitKat / Lollipop开始,只能从受限制的位置运行可执行文件。例如,安装在/ data / data //中的可执行文件将不允许以任何方式运行,无论是否有root。

在KitKat之前,可以将可执行文件复制到自己的数据目录,使其可执行并运行它。不再是最新版本的KitKat。

因此,您最终需要root才能在最新版本的Android上运行linux exe。