【问题标题】:Execute a pure binary file on Android在Android上执行一个纯二进制文件
【发布时间】:2011-10-22 16:23:02
【问题描述】:

有没有办法在 Android 上运行二进制可执行文件(使用 NDK 编译)?

/* #includes #defines ... */

int main(){
    // Do something when this is executed
    return 0;
}

我希望它独立于 VM 运行。就像不在活动中一样,只是一个直接在 proc 上运行的二进制文件

【问题讨论】:

    标签: c++ android-ndk exe


    【解决方案1】:
    adb push exename /data/bin/exename
    #next line might be needed if you are developing on Windows
    adb shell chmod 777 /data/bin/exename
    adb shell /data/bin/exename
    

    但您的设备必须植根。 (它也适用于模拟器。)

    【讨论】:

    • 好的,这会编译成可以直接安装的APK,还是打包成Davlik格式的exe只是为了初始化?
    • 没有也没有。纯二进制文件只是一个二进制文件。您可以在 Android.mk 中使用 include $(BUILD_EXECUTABLE) 而不是 include $(BUILD_SHARED_LIBRARY) 来使用 NDK 构建此类可执行文件。
    • 有没有办法从 java 文件中执行二进制文件(即在运行时)。
    • 这仍然适用于果冻豆吗?问题Run native ARM executable on Jelly Bean 似乎暗示这不再有效。
    【解决方案2】:

    我在安德烈提到的第一个答案中回答你的疑问。

    试试他给出的代码。

    adb push exename /data/bin/exename
    

    用于将名为“exename”的二进制文件推送到Android上的可执行路径。

    adb shell chmod 777 /data/bin/exename
    

    在 linux 中不需要此行。它用于更改模式。 前 7 个代表“用户”,接下来代表“组”,最后一个代表“其他”。 更改数字将更改上述每个组的模式。 7 代表——读、写和执行。 6 代表 - 读、写和不执行。

    adb shell /data/bin/exename
    

    此代码用于执行二进制文件。这反过来意味着它正在终端中使用。

    【讨论】:

    • 谢谢阿努普!看起来这一切都通过 shell 命令运行得非常顺利。你不能通过手机上的交互来执行吗?有什么方法可以建立某种指向 shell 脚本的链接,从而导致二进制文件的执行(如在实际的移动设备上 - 据说这必须通过 Java 完成)?
    • 哦,恐怕我帮不了你。我没有完全理解你的问题,无论我理解什么,我都不知道。你能说得清楚一点,我也可以试着搜索一下。
    • 对不起。我的意思是,你可以通过 shell 命令在 Android 上执行二进制文件(adb shell chmod 777 是在内核 shell 上运行的命令)。 Shell 脚本是基本上包含大量 shell 命令的文件。有什么方法可以在 Android 设备上执行 shell 脚本,而不必自己键入 shell 命令...?
    • 好的。我不知道是否有办法在 android 设备中执行 shellscript。一定有办法的,会研究的。为了减少输入所有这些命令,我​​通常做的是在 pc 中创建一个包含所有脚本命令的文本文件,然后在终端中运行该文件。它符合我的目的。这有帮助吗?
    • 请注意对您认为对自己有用的答案进行投票。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-12-02
    • 2016-04-02
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 2011-01-05
    相关资源
    最近更新 更多