【问题标题】:Run native C++ code on codename one在代号一上运行本机 C++ 代码
【发布时间】:2015-12-07 19:18:10
【问题描述】:

我有一个 android 应用程序,我在其中使用 JNI(Java 本地接口)运行本地 C++ 代码。我想将它移植到代号一,以便它也可以在 iOS 上运行。代号一的 JNI 的替代方法是什么,可以让我运行我的本机 C++ 代码?

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    您可以从 Objective-C 调用 C++,我们在 iOS 端口的 ZXing 演示中就是这样做的,请参阅:http://github.com/codenameone/codenameone-demos

    对于 Android,您需要使用 NDK 包装 C++ 代码才能使用它。 Chen 不久前在一篇博文中讨论过这个问题:http://www.codenameone.com/blog/integrating-android-3rd-party-libraries-jni.html

    相关部分是这样的:

    我们最近添加了第三个选项 :aar 文件。 aar 文件是来自 Google 的二进制格式,代表 Android 库项目。 Android 库项目的问题之一是 它需要项目来源,这使第 3 方很难 厂商发布库,所以android引入了aar文件 是表示库项目的二进制格式。

    要了解有关 arr 的更多信息,您可以阅读this

    您可以通过将 aar 文件放在 native/android 和 构建服务器会将其链接到项目。

    请注意,对于 Android,您可能希望使用新的 gradle 构建系统,这也会使这更简单:http://www.codenameone.com/blog/material-icons-background-music-geofencing-gradle.html

    【讨论】:

      【解决方案2】:

      Codenameone 具有允许添加本地代码的本地界面。

      每个平台都有自己的本地代码,据我所知,C++ 不在其中。

      我建议您手动将您的代码从 C++ 转换为 Java 和 Objective-C,然后您可以使用这些代码来实现 CN1 本机接口。

      阅读本机接口here 并查看native demo

      【讨论】:

      • 我正在使用 OpenCV 和 C++ 来运行一些计算机视觉算法。所以我不能把它转换成 Java,因为 Java 的 OpenCV 没有那么强大。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 2010-12-31
      • 2011-05-06
      • 1970-01-01
      • 2013-08-02
      • 2015-09-27
      相关资源
      最近更新 更多