【问题标题】:can native only code run on android as standalone application本机代码可以作为独立应用程序在 android 上运行吗
【发布时间】:2011-05-06 11:17:06
【问题描述】:

我们想将一个庞大复杂的原生程序迁移到 Android 系统,将其作为后台服务运行,接受使用 JNI 和 IPC 的 Java 程序发送的命令。但是,Android NDK 状态如下:

请注意,NDK 不允许您开发纯本机应用程序。 Android 的主要运行时仍然是 Dalvik 虚拟机。

这是否意味着我们无法在 Android 上运行独立的纯原生应用程序作为后台服务?原生代码只能以库的形式存在,通过JNI加载到虚拟机中?

【问题讨论】:

    标签: android java-native-interface android-ndk


    【解决方案1】:

    NDK 本身仅用于创建库,但如果您进行一些网络搜索,您会发现至少有两组包装脚本或指令,用于 (ab) 使用其工具链来制作链接到 android 的仿生 libc 的独立可执行文件(你不会从非 android arm 工具链中获得的东西)。

    谷歌的人不鼓励人们这样做。不幸的是,他们对 android 的看法只包括 java 应用程序,支持可选的本机库——它不包括任何安装或启动本机可执行文件的“稳定”方法,因为他们警告您今天可能使用的方法可能无法在新版本中继续工作。这实在是太糟糕了,因为这意味着要放弃该设备的大量通用计算机潜力。

    【讨论】:

    • 嗯,使用当前的 NDK 也可以构建“纯原生”应用程序,尽管这只是意味着 您的 代码只是原生的(不需要 Java 包装器),系统将提供 Java 包装器(NativeActivity)。您仍将在 VM 中运行。
    【解决方案2】:

    嗯,可以的。但老实说,我从未尝试过使用 NDK,但我已经设法使用 android 源代码提供的工具链创建了本机应用程序。

    你的手机(以防你在谈论手机)应该被植根。

    【讨论】:

    • 独立的本地应用程序不需要root手机,但是它确实为您可以在设备上存储可执行文件的位置提供了可能性(许多明显的选择是挂载noexec) .
    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 2011-01-16
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多