2013-07-27 85 views
0

我已经编译了一个原生应用程序,基本上只有一个终端应用程序,与android NDK,我的主要问题是我无法更改我的可执行文件(一个动态链接的)的权限,如chmod +x executable来测试和使用应用。我需要root权限才能在Android下执行原生应用程序?

我需要根据我的设备来做到这一点?

我试了两个adb shell和一个随机终端应用程序直接从我的手机。

回答

1

不,您不需要根设备来使用可执行的二进制文件。你不能把它放在/ SD卡上,但是在大多数设备上有一个目录/ 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的共享库,请注意。

+0

我想没有像ldd这样的工具......? – user2485710

+0

你可以在你的电脑上运行ldd –

+0

另请参阅https://groups.google.com/forum/m/#!topic/android-developers/xYFvnBDfGu8 –

0

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

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

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

因此,您将明确需要root在最新版本的Android上运行linux exe。

相关问题