Android 应用程序启动时对象框错误-未找到void io.objectbox.BoxStore.nativeDelete的实现(长)

Android 应用程序启动时对象框错误-未找到void io.objectbox.BoxStore.nativeDelete的实现(长),android,objectbox,Android,Objectbox,正如标题所说 当我启动我的Android应用程序时,我得到以下错误 No implementation found for void io.objectbox.BoxStore.nativeDelete(long) 我将在稍后添加我的完整build.gradle和应用程序代码,因为我很忙,但我认为我应该发布,以防有一个已知和明显的解决方案 我试过1.1.0和1.2.0 更新: 一些进一步的信息。我正试图在我的LibGDX项目中使用ObjectBox。LibGDX是一个跨平台的游戏库,您可以用J

正如标题所说

当我启动我的Android应用程序时,我得到以下错误

No implementation found for void io.objectbox.BoxStore.nativeDelete(long)
我将在稍后添加我的完整build.gradle和应用程序代码,因为我很忙,但我认为我应该发布,以防有一个已知和明显的解决方案

我试过1.1.0和1.2.0

更新:

一些进一步的信息。我正试图在我的LibGDX项目中使用ObjectBox。LibGDX是一个跨平台的游戏库,您可以用Java编写代码,它提供了Android、iOS和桌面版本

我没有使用ObjectBox的Android实现,而是决定尝试使用Java版本,以便理论上它可以在所有三种平台上使用。我不确定,但也许这就是问题所在。在Android平台上使用Java版本

更新2:(Stacktrace)

使用ObjectBox的DB类

private void createMyObjectBox() throws IOException {
    File tempFile = File.createTempFile("objectstorefile", "");
    tempFile.delete();
    boxStoreDir = tempFile;
    Gdx.app.error("DB","tempfile="+tempFile);
    Gdx.app.error("DB","boxstoredir="+boxStoreDir);
    store = MyObjectBox.builder().directory(boxStoreDir).build();
}

如果我没有弄错的话,您只在Java项目中定义ObjectBox依赖项。似乎缺少的是特定于Android的工件:

compile "io.objectbox:objectbox-android:$objectboxVersion"
这包括共享库(本机.so文件)

其他说明:

  • 确保所有库都具有一致的ABI支持。看起来您的LibGDX附带了armeabi,它非常旧,因此不包括在ObjectBox中。ObjectBox Android支持armeabi-v7a、arm64-v8a和x86。我建议从LibGDX设置中删除所有其他设置。否则,该应用程序可能会在某些设备上崩溃,因为它无法混合使用32位和64位库
  • 您可以通过将compile
    “io.ObjectBox:ObjectBox linux:$objectboxVersion”
    添加到linux机器的桌面项目中,尝试一下ObjectBox for desktop
  • 您正在使用的ObjectBox版本已过时。请检查以获取最新版本

请发布完整的调用堆栈-我想知道是什么原因导致了对nativeDelete的调用。嗨@Markus,我会在午餐时间添加这个。谢谢你的回复quickly@MarkusJunginger希望这足以让我们至少看一看。(很抱歉stacktrace上的格式问题)谢谢你的回复,我今晚会试试。正如我在一次更新中所说,我的库是一个跨平台的库,用Java编写,然后可以创建Android、iOS和桌面版本。我希望在Java“核心”项目中使用一个DB,因此我没有在gradle中包含Android版本。但如果我不能使用这个,我必须在Android上使用Android版本,然后在发布时可能会使用未来的iOS版本,那就这样吧。真遗憾,这是Allso,我知道这是一个旧版本。我尝试了1.2.0和1.1.0,但是当我复制粘贴这个时,我没有将它改回1.2.0:D,至于abi的东西,这很好。我知道armeabi很老了,它就放在那里,只为少数几部旧手机。但是如果ObjectBox不能使用它,我可能会删除它。至于桌面建议,这就是我在java“核心”项目中尝试的,它是纯java而不是Android。桌面项目是一个实际的桌面应用程序,这不是我要发布的,因此将它放在那里不会被使用。通常在桌面上开发会更快-libGDX和ObjectBox支持这一点。我做到了,而且它似乎可以工作:D我没有使用apply插件:“io.ObjectBox”
private void createMyObjectBox() throws IOException {
    File tempFile = File.createTempFile("objectstorefile", "");
    tempFile.delete();
    boxStoreDir = tempFile;
    Gdx.app.error("DB","tempfile="+tempFile);
    Gdx.app.error("DB","boxstoredir="+boxStoreDir);
    store = MyObjectBox.builder().directory(boxStoreDir).build();
}
compile "io.objectbox:objectbox-android:$objectboxVersion"