首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Libpd不工作-错误:.无法创造

Android Libpd不工作-错误:.无法创造
EN

Stack Overflow用户
提问于 2016-05-31 02:14:45
回答 3查看 240关注 0票数 0

我的客户已经提供了一个.so预构建共享库。因为libpd控制器需要m4aPlayer模块来加载。因此,我将libm4aPlayer.so放在jniLibs(也尝试过了libs)文件夹中,放在app > main下,然后将其添加到我的build.gradle中。

代码语言:javascript
复制
defaultConfig {
        ndk{
            moduleName "m4aPlayer"
        }
    }
    ...

sourceSets {
        main {
            jni {
                srcDirs = []
            }
            jniLibs {
                srcDir 'libs'
            }
        }
    }

然后在我的AudioService类(其中我是initPd()和loadPatch())中,我试图调用客户机通过这样做提供的本机预构建库。

代码语言:javascript
复制
patchFile = new File(pdFile[0].mFile.getParent(), "pd/_main.pd");

//System.loadLibrary("pd");
System.loadLibrary("m4aPlayer");

PdBase.openPatch(patchFile);
PdBase.sendFloat("fadeTime", 12f);

每次我试图打开修补程序文件(_main.pd)时,都会从PD控制器那里得到错误,上面写着"m4aPlayer无法创建“。但我正在尝试加载库,但pd仍抛出此错误。它确实可以播放其他音频( libpd不需要m4aPlayer胶水。)

堆栈跟踪

代码语言:javascript
复制
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print: 
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print: m4aPlayer
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print: 
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print: error: ... couldn't create
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print: 
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.840 6589-6589/com.test.test I/PdUiDispatcher: print: m4aPlayer
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: 
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: error: ... couldn't create
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: 
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: m4aPlayer
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: 
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: error: ... couldn't create
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: fadeTime: 12
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: fadeDelay: 3
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: curve: 30
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: musicVol: 1.5
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: voiceVol: 1.5
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: voiceGender: 1
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: isRandom: 1
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: suggestionsVO: 1
05-30 21:48:05.841 6589-6589/com.test.test I/PdUiDispatcher: print: availableSoundscapes:
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 2
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 3
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 4
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 5
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 6
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 7
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 8
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print:  
05-30 21:48:05.842 6589-6589/com.test.test I/PdUiDispatcher: print: 9
05-30 21:48:05.843 6589-6589/com.test.test I/PdUiDispatcher: print: 
05-30 21:48:05.843 6589-6589/com.test.test I/PdUiDispatcher: print: module: 2
05-30 21:48:05.843 6589-6589/com.test.test I/PdUiDispatcher: print: INTO-Q: 0
05-30 21:48:05.843 6589-6589/com.test.test I/PdUiDispatcher: print: soundscape: 5
05-30 21:48:05.843 6589-6589/com.test.test I/PdUiDispatcher: print: toApp-isThisFileOK: p5intro0

我还试着在应用程序中检查,以确保库是否被复制。所以我去了

代码语言:javascript
复制
data/data/package_name/lib

EN

回答 3

Stack Overflow用户

发布于 2016-06-01 21:05:15

您不需要调用System.loadLibrary()来加载纯数据外部。

看看pd存储库上的PdTest实例,它是如何在其中使用"helloworld.c“外部的。您可以使用它作为您自己的项目的模板,首先保持简单,并验证纯数据修补程序可以正确地加载您的libm4aPlayer外部。

还有-你提到的是.m文件。我猜你是在编目标C?我还没见过有人在安卓系统上这么做,所以我不确定这会不会奏效。

票数 0
EN

Stack Overflow用户

发布于 2016-06-05 00:07:16

这个答案可能会提供一些线索或提示:https://stackoverflow.com/a/27523384/901597

票数 0
EN

Stack Overflow用户

发布于 2016-06-06 22:08:18

有三种选择:

  • Pd找不到库文件:尝试使用完整路径(或确认可以加载其他外部文件,如[bonk~] )
  • 二进制文件遗漏了一些依赖项(使用一些相当于ldd的android )。
  • 这个二进制文件根本不是Pd-外部的(不管你的客户声称什么)。

要调试最后两个选项,您可能需要增加详细内容,或者监视应用程序的stderr (可能还包括stdout)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37535827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档