【问题标题】:How would I use a Realm database on Android from Objective-C?如何从 Objective-C 在 Android 上使用 Realm 数据库?
【发布时间】:2015-12-07 17:16:34
【问题描述】:

我们正在尝试使用 CrystaX NDK 将我们的 Objective-C 代码移植到 Android。这是一个替代 NDK,它支持 Objective-C 以及扩展的 C++ 功能。到目前为止,除了 Realm 之外,一切看起来都很容易使用,因为它非常依赖于您制作数据库表的方式。 Realm 的 Objective-C 端已经有一个编译好的 iOS 库,我们不能在 Realm 上使用,显然用 Java 制作我们所有的表然后将它们桥接到 Objective-C 会很痛苦。这里有解决办法吗?

【问题讨论】:

  • 此链接显示 Realm 适用于 Android:stackoverflow.com/tags/realm/info
  • @RichardCritten - 是的,我知道,但它使用 Java。我们的代码在 Objective-C 中,它需要一个广泛的桥接层来使用它并在我们所有的平台上使用相同的源代码
  • 据我所知,有用于 Objective-C 的 Realm 的源代码 - github.com/realm/realm-cocoa,因此(理论上)它可以使用 CrystaX NDK 为 Android 构建。
  • @DmitryMoskalchuk - 我知道以前核心数据库技术是闭源的,我认为仍然是这样,但现在我没有看到闭源库。我们将进一步研究这一点。谢谢!
  • @David 快速提问 - 实验进展如何?端口是否与 Crystal NDK 配合良好?

标签: android c++ objective-c android-ndk realm


【解决方案1】:

Realm 的核心数据库仍然是封闭源代码,虽然从技术上讲,您可以使用绑定使用的相同 C++ API,但我不推荐它,因为它们不适合该用例,也没有很好地记录在片刻。

您也许可以在两个平台上使用动态 API,但这样做会失去很多类型安全性。

现在恐怕最好等到我们发布合适的 C++ API。

【讨论】:

  • 您目前正在寻找什么样的 C++ API 时间范围?我们将在 2016 年第一季度发布产品,并且确实需要确保 Realm 能够长期使用和发布。
  • 另外,澄清一下,您是说可以将开源 Objective-c 代码链接到 Android 上的 Android Realm-Core 库?
  • 目前,明年第一季度可能会进行早期测试,但仍可能发生变化,因此我不会围绕它制定产品策略。
  • 关于将Object-C代码链接到Android Core库,那么不,这真的不可能。原因是Android不能直接执行native cod,而是必须通过一个自定义的JNI层,该层使用Objective-C不知道的其他方法名称。
  • 一旦 C++ API 出来了,理论上是否可以跨 windows/android/ios/mac 使用相同的 C++ 代码接口(来自 obj-c++)?另外,您是否会猜测 db 格式会相同,以便您可以移动到 c++ 接口并使用由 Obj-C 版本编写的相同 db?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 2016-10-05
相关资源
最近更新 更多