Ale*_*Wih 10 shell android g++ android-ndk
我想运行hello world在C++上编写并编译Android toolchain 9,但我遇到了问题:默认情况下我没有权限启动它,我无法使用chmod`更改权限.
我用了 Android 2.3.3 - Api Level 10
应用程序由交叉编译器编译 API level 9
程序:
编译应用程序:
〜/ toolchain_andr9/bin/arm-linux-androideabi -g ++ helloworld.cpp
然后在模拟器上将应用程序发送到SDCARD:
>adb push a.out /mnt/sdcard
Run Code Online (Sandbox Code Playgroud)
然后去SHELL尝试运行a.out:
>adb shell
>
>/mnt/sdcard/a.out
Run Code Online (Sandbox Code Playgroud)
结果是:
>`/mnt/sdcard/a.out: permission denied`
Run Code Online (Sandbox Code Playgroud)
命令ls -l显示以下权限a.out:
>`----rwxr-x system sdcard_rw 863656 2012-04-12 22:42 a.out`
Run Code Online (Sandbox Code Playgroud)
我试图更改权限:
>chmod 777 /mnt/sdcard/a.out
Run Code Online (Sandbox Code Playgroud)
但权利不会改变:
>`----rwxr-x system sdcard_rw 863656 2012-04-12 22:42 a.out`
Run Code Online (Sandbox Code Playgroud)
我想我已经使用android留下了一些重要的东西.
有人可以帮助我,并给我一个如何在`Android SHELL中运行应用程序的方法?
非常感谢.
对不起我的英文=)
Sam*_*een 13
默认情况下,SD卡上安装了选项noexec,无论它的权限是什么(偶数-rwxrwxrwx),都不允许执行卡上的任何文件,因此您需要将文件移动到另一个位置然后执行它.
最简单的方法是将文件移动到/data/local/tmp/并使用完整路径执行它(通常是POSIX PATH语义).
> adb push a.out /data/local/tmp/a.out
> adb shell
> chmod 755 /data/local/tmp/a.out
> /data/local/tmp/a.out
Run Code Online (Sandbox Code Playgroud)
这并不需要root访问权限和生存 重启.