0

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

我需要root我的设备才能做到这一点?

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

4

3 回答 3

2

这些家伙说需要root: 如何将C编译成可执行的二进制文件并从Android Shell在Android中运行?

据我了解,常规 sdcard 挂载时没有执行权限,因此您需要写入 /data/local/ 之类的内容,这确实需要 root 访问权限。

于 2013-07-27T03:02:55.213 回答
2

不,您无需 root 设备即可使用可执行二进制文件。您不能将其放在 /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? 如何在 apk 中打包本机命令行应用程序?.

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

于 2013-07-27T10:18:43.340 回答
1

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

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

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

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

于 2015-03-08T13:31:35.423 回答