从终端仿真器运行应用程序


8

我有一个扎根的Nexus 7 Jelly Bean平板电脑,每当我尝试在chmod 777将其使用chmod 777并使用语法(“ ./applicationName”)后从终端仿真器应用程序运行应用程序时,它都会坚持要求我没有执行权限,即使我使用(“ su”)授予了我自己的superUser特权。之后,我进行了一些研究,并了解到,如果将文件复制到(/ data / local / temp /)目录,则应该能够执行该应用程序。因此,当我尝试说文件不存在时,即使使用(“ ls”)列出目录内容时也显示该文件

我不知道要采取什么步骤,如果可以帮助我尝试运行(scp)作为测试,但是我希望能够运行dns2tcp的自定义编译版本。我知道我可以使用更好的应用程序,例如在设备上本地编译的hello world,但是我无法使用gcc之类的Android C编译器。

感谢您的任何建议


2
您可以添加您所做的成绩单吗?/ sdcard带有“ noexec”功能,该功能可防止运行可执行文件。您是否用第二次尝试指定了完整路径(/ data / local / tmp / yourprogram)?
ce4 2012年

@ ce4我已经尝试过您在评论第二部分中提到的内容。这是成绩单:pastebin.com/RkuMHuBj 编辑:是的,我忘了按shift + enter :)我的错了
Andrei0427 '20

您是否尝试指定执行的完整路径-例如/data/local/tmp/scp?并确保scp在不进行任何调用时文件没有文件扩展名吗?
伊齐

@Izzy我有,是的。这里的任何人都可以在Android设备上从终端本身运行自定义C应用程序吗?
2012年

如果该应用未针对Android进行编译,则将无法正常工作。
马修(Matthew)

Answers:


3

尝试放在sh命令前面,例如:

sh ./scp

要么

sh -c ./scp

我在运行该应用程序时收到语法错误,我猜是因为它不是为平板电脑本身编译的,因为我从手机上撕下了它,所以发生了这种错误。las,这一定意味着它起作用了。
2012年

您收到什么错误?
EsOsO 2012年

第一个命令肯定不起作用(./scp的格式不是可由Shell解释的格式),第二个命令则过大(仅在子shell中运行./scp)。两者都不会解决不适当的执行权限和/或其他不兼容性。
ce4 2012年

2

模拟器应用程序应该能够从其自己的目录中运行另一个应用程序。该目录称为/data/data/com.super.emulator。尝试在模拟器中提供想要的应用程序的完整路径。

如果要获取Android的编译器,可以使用NDK。易于获取,免费使用。

您还/system/bin不能通过adb将文件推送到吗?我不知道您启动设备时是否获得该许可。但是,如果是这样,它将使您的生活更加轻松。


1

您很可能由于运行了该程序的设备上的库而无法运行该程序,从而避免了该程序从复制到的设备中丢失。

由于您的最终目标是编译程序并在手机上本地运行,因此我建议您使用Android NDK吗?NDK文档包括STANDALONE-TOOLCHAIN.HTML说明如何交叉编译本机程序以在您的Android设备上运行的文档。


0

如果您已扎根(我明白了),请使用su命令,然后运行原始脚本。如果问题是权限,则应解决此问题。而且,如果您使用的是Shell脚本,则可以在顶部将其添加到该行中。您可能需要检查您的superSu设置(或具有root用户的任何超级用户应用程序),并确保您的终端模拟器具有root权限。

如果您不是root用户(或者由于某种原因不能以root用户身份运行),建议您研究XBMC的运行方式,因为我相信它可以在用户模式下运行应用程序。

祝好运。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.