我已经编译了一个本机应用程序,基本上是一个终端应用程序,使用android NDK,我的主要问题是我无法更改我的可执行文件(动态链接的)的权限,如此chmod +x executable
测试和使用该应用程序。
我需要根据我的设备进行操作吗?
我直接通过手机试用了adb shell
和随机终端应用程序。
答案 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。