2017-10-28 102 views
0

我写了一个NNAPI演示。但该应用程序崩溃的错误“java.lang.UnsatisfiedLinkError:dlopen失败:无法找到符号'ANeuralNetworksModel_identifyInputsAndOutputs'”。在我删除了包含ANeuralNetworksModel_identifyInputsAndOutputs(并保留其他关于NNAPI的行,如ANeuralNetworksModel_addOperation等)的行后,该应用程序不再崩溃。ANeuralNetworksModel_identifyInputsAndOutputs在Android 8.1预览版NNAPI中的UnsatisfiedLinkError

我的minSdkVersion,compileSdkVersion,targetSdkVersion都是27

它是一个错误,或者只是我的错吗?你可以帮我吗?提前致谢。


得益于优秀的解决方案之后,我写了NNAPI包装库和演示,并发表了GitHub,只需要四行部署在手机的典范。我希望我的项目能够帮助那些对NNAPI感兴趣的开发人员

回答

3

不幸的是,在NDK发布之前请求的NN API发生了一些变化,并没有及时将其转换为O MR 1 Beta 1。换句话说,NDK比测试图像更新。当下一个O测试版(或发行版?我实际上不确定时间轴是什么)启动时,这将自行解决。

与此同时,该功能在测试版中的名称是ANeuralNetworksModel_setInputsAndOutputs。像下面这样的东西应该可以工作,并且会在您可以删除解决方法时通知您(请注意:我没有测试过这个功能,因为我没有运行测试版的设备,所以可能需要稍作修改)。

// TODO: Remove when O MR1 Beta 2 is available. 
__attribute__((weak)) 
extern "C" int ANeuralNetworksModel_setInputsAndOutputs(
    uint32_t inputCount, const uint32_t* inputs, uint32_t outputCount, 
    const uint32_t* outputs); 

extern "C" int ANeuralNetworksModel_identifyInputsAndOutputs(
    uint32_t inputCount, const uint32_t* inputs, uint32_t outputCount, 
    const uint32_t* outputs) { 
    if (ANeuralNetworksModel_setInputsAndOutputs == nullptr) { 
    __android_log_print(ANDROID_LOG_ERROR, 
     "ANeuralNetworkdModel_setInputsAndOutputs not found. Remove workarounds."); 
    abort(); 
    } 
    return ANeuralNetworksModel_setInputsAndOutputs(
    inputCount, inputs, outputCount, outputs); 
} 
0

由于SDK包不正确,所以发生此问题。将SDK包更新到最新版本。 如果SDK管理器没有显示任何更新,那么在Android Studio中,从File菜单中选择Invalidate Caches and Restart选项。 完成此操作后,Android工作室将询问是否有任何未决的SDK更新。 安装更新后,使用AVD管理器重新创建新的虚拟设备(如果使用的是虚拟设备)。 而你的程序已经准备好去...

SDK \系统图像\ Android的27 \ google_apis \ 86 \ source.properties

Pkg.Desc=System Image x86 with Google APIs. 
    ****Pkg.Revision=2**** 
    Pkg.Dependencies=emulator#26.1.3 
    ****AndroidVersion.ApiLevel=27**** 
    SystemImage.Abi=x86 
    SystemImage.TagId=google_apis 
    SystemImage.TagDisplay=Google APIs 
    SystemImage.GpuSupport=true 
    Addon.VendorId=google 
    Addon.VendorDisplay=Google Inc.