【问题标题】:port native C++ non static binary on Android在 Android 上移植原生 C++ 非静态二进制文件
【发布时间】:2010-11-17 07:56:53
【问题描述】:

我是 Android 的新手,我有一些问题想请教各位专家! 好吧,我的问题... 我实现了一个基于套接字编程的客户端-服务器应用程序。服务器对一些数据包进行编码,通过套接字将它们发送到客户端,然后客户端对它们进行解码。 我用两台 linux 机器测试了代码,它运行良好,但在我的实验中,它需要包含另一个节点(这将是 Android)。所以服务器(linux机器)将对数据包进行编码并通过socket发送到client1(linux机器)和client2(Android)。 出于这个原因,我想将我的代码(在 C++ 中)的本机二进制文件移植到 Android。 我可以通过哪种方式做到这一点?

请给我一些帮助! 真的我完全卡住了!

谢谢,

泽尼亚

【问题讨论】:

    标签: c++ android native port


    【解决方案1】:

    当你想将原生代码 C/C++ 移植到 android 时,你想查找 android ndk 和 jni

    http://developer.android.com/sdk/ndk/index.html

    http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html

    ndk 中有一些示例说明如何执行此操作。

    请注意,C 完全受支持,但 C++ 支持 api 在 android 上非常有限(列表在 ndk 的文档中),因此您可能在移植代码时遇到问题。

    如果可以的话,我建议直接使用 java,因为使用 JNI 很乏味,哈哈

    【讨论】:

      【解决方案2】:

      你还能怎么移植这个?开始学习 android 我做了一个快速检查发现它的 sdk 使用 java 你可以从查看开始

      http://developer.android.com/reference/java/net/Socket.html

      【讨论】:

        【解决方案3】:

        感谢回复,

        我首先尝试使用套接字完全在 java 中编写我自己的代码,但是我必须将一些优化的库移植到 Android 并且我可以弄清楚如何做到这一点(我可以移植一个简单​​的小型库,但不是我的那个通缉)。我放弃了,我现在正在尝试使用 jni 和 ndk。但是我不知道我是否真的可以移植我的二进制文件,因为它是非静态的(比如你好世界)。这就是我问的原因。如果其他人对此有一些经验,请告诉我。非常感谢,

        泽尼亚

        【讨论】:

        • 这似乎不是一个答案;您是否打算添加评论?
        【解决方案4】:

        您可能应该做的是安装 SDK 和 NDK 并构建 hello-jni ndk 示例。

        然后查看如何从 C 访问 android logcat 输出,并为自己编写一个类似 printf 的漂亮包装器(可能使用底层函数的 vargs 版本),以便您可以轻松地从本机代码生成调试输出.

        然后将您的本机可执行文件移植到 hello-jni 示例代码中,这样您将拥有一个 java 包装器,它除了调用本机代码来启动之外几乎没有什么作用。请记住不要在 UI 线程或在该线程下调用的本机代码中进行太多处理,否则您将面临应用程序不响应超时的风险。

        也可以(ab)使用 ndk 的 gcc 来生成没有 java 包装器的独立本机可执行文件,但不鼓励这样做。很难找到一个可靠的地方将它们安装在非 root 手机上,而且 android 的进程管理对未知的原生进程并不满意。换句话说,这是一条适合在您自己的设备上进行个人实验的路径,但对于部署到其他人的应用程序来说,这是一条困难且非面向未来的路径。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-01
          • 1970-01-01
          相关资源
          最近更新 更多