【问题标题】:Can we execute make from an android app's internal storage?我们可以从 android 应用程序的内部存储中执行 make 吗?
【发布时间】:2017-06-24 12:40:43
【问题描述】:

我正在尝试从应用程序的内部存储 (/data/data/%package%/..)) 运行生成文件。生成文件由存储在内部存储中应用程序特定文件夹中的 run.sh 文件触发。

Shell 脚本

06-24 17:14:16.893 E/File Manager: Shell: #!/system/bin/sh 
06-24 17:14:16.893 E/File Manager: Shell: /data/data/com.mkmv.playground/files/appfldr/make -f /data/data/com.mkmv.playground/files/appfldr/tmp/Makefile

还有日志

06-24 17:14:16.956 E/File Manager: Execution Error: /system/bin/sh: sed: not found
                                   /system/bin/sh: sed: not found
                                   /system/bin/sh: sed: not found
                                   /system/bin/sh: sed: not found
                                   /system/bin/sh: sed: not found

appfldr中的所有文件上运行chmod 777,结果徒劳无功。

另外,尝试添加

"cd " + this.getFilesDir().getAbsolutePath() + "/appfldr \n";

到 shell 脚本,在执行 makefile 之前,什么都没有发生。

当我尝试在 root 手机上运行相同的程序时,无论是否使用 cd ing,即使不要求超级用户访问,它都可以正常工作。但在无根设备中则不然。据我对该主题的研究,该应用程序应该能够从其私有文件夹中执行。我哪里错了?

谢谢!

【问题讨论】:

  • 也许你需要一个有根设备。 Android 操作系统可能会阻止无根设备上的某些命令
  • 但是当我尝试使用有根设备时,超级用户从未请求根访问权限。即使我检查了超级用户日志,也没有找到与该应用程序相关的内容!
  • 有根安卓和非根安卓还是有区别的。即使您不请求超级用户访问权限,仍然存在差异。
  • 我们会,您是否知道从应用程序中将 pwd 更改为 appfldr。为什么不允许这样做?
  • 有关该问题的答案,请询问 google(或 AOSP 的常用修饰符)

标签: android shell makefile


【解决方案1】:

最后,回答我自己的问题。

我对终端的不熟悉是主要问题。 问题是sed 不可用。 正如我猜测的那样,应用程序访问内部目录没有问题。在 root 设备中,busybox 已将 sed 添加到 $PATH 中,因此它运行良好。还设法在无根设备中添加了sed,一切正常!

谢谢你,任何试图帮助我的人!

【讨论】:

    猜你喜欢
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多