我已经编译了一个原生应用程序,基本上只有一个终端应用程序,与android NDK,我的主要问题是我无法更改我的可执行文件(一个动态链接的)的权限,如chmod +x executable
来测试和使用应用。我需要root权限才能在Android下执行原生应用程序?
我需要根据我的设备来做到这一点?
我试了两个adb shell
和一个随机终端应用程序直接从我的手机。
我已经编译了一个原生应用程序,基本上只有一个终端应用程序,与android NDK,我的主要问题是我无法更改我的可执行文件(一个动态链接的)的权限,如chmod +x executable
来测试和使用应用。我需要root权限才能在Android下执行原生应用程序?
我需要根据我的设备来做到这一点?
我试了两个adb shell
和一个随机终端应用程序直接从我的手机。
不,您不需要根设备来使用可执行的二进制文件。你不能把它放在/ 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的共享库,请注意。
这些家伙说的是需要根: How to compile C into an executable binary file and run it in Android from Android Shell?
从我的理解,经常SD卡安装,没有执行权限,所以你需要写像/数据/本地/,这的确需要root访问权限。
如果您不将自己的本机代码打包为Android应用程序,则需要从shell运行它。
从Android KitKat/Lollipop开始,可执行文件只能从受限制的位置运行。例如安装在/ data/data中的可执行文件// ...将不允许以任何方式运行,无论是否使用root。
在KitKat之前,可以将可执行文件复制到自己的数据目录,使其可执行并运行它。在更新的KitKat版本中不再有用。
因此,您将明确需要root在最新版本的Android上运行linux exe。
我想没有像ldd这样的工具......? – user2485710
你可以在你的电脑上运行ldd –
另请参阅https://groups.google.com/forum/m/#!topic/android-developers/xYFvnBDfGu8 –