2016-05-31 24 views
0

我的客户已经提供了一个.so预建的共享库。其中应该加载libpd,因为libpd控制器需要加载m4aPlayer模块。所以我把libm4aPlayer.so文件夹内jniLibs(也试过库)下的应用程序>主,然后我说这在我的build.gradleAndroid Libpd不工作 - 错误:...无法创建

defaultConfig { 
     ndk{ 
      moduleName "m4aPlayer" 
     } 
    } 
    ... 

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

然后在我的AudioService类(其中我initPd()和loadPatch( ))我试图调用客户端做这个

patchFile = new File(pdFile[0].mFile.getParent(), "pd/_main.pd"); 

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

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

enter image description here

每次提供的本地预建图书馆我尝试打开该补丁文件(_main.pd)我从PD控制器错误说“m4aPlayer无法创造“。但我试图加载库仍然pd抛出这个错误。 它播放其它音频罚款(其中libpd犯规需要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: 
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 

我也试着检查应用程序内,以确保库被复制或没有。于是我去

data/data/package_name/lib 

enter image description here

+0

我假设你正在尝试使用的.so文件是纯数据外部?在这种情况下 - 你可以从你的客户端获得源代码,并将其构建为pd-for-android README中描述的外部代码,而不是绑定.so文件?该补丁是否在桌面版纯数据香草中正确加载? – kirsh300

+0

@ kirsh300 - 是libm4aPlayer.so是一个纯数据外部,我在我的应用> main> jni目录中有。一旦我尝试使用ndk-build命令进行构建。我也能够生成.so文件(即使客户端已经提供了预先构建的.so文件)并尝试加载.so文件,但那也失败了。每次我尝试调用_main.pd时,它都会查找应该在运行时加载的m4aPlayer模块,这就是为什么我要使用System.loadLibrary(“m4aPlayer”)来加载它。 – Alex

+0

您能否提供需要m4aPlayer的修补程序片段? –

回答

0

你并不需要调用的System.loadLibrary()加载纯数据的外部。

查看pd-for-android存储库上的PdTest example,作为如何使用“helloworld.c”外部参考的参考。你可以使用它作为自己项目的模板,以便首先保持简单,并验证纯数据补丁可以正确加载你的libm4aPlayer外部。

另外 - 你提到.m文件。那么我猜你正在编译Objective C?我还没有见过任何人使用pd-for-android来做这件事,所以我不确定这是否可行。

+0

嘿,我正在尝试我能想到的一切。所以我也试着用.h/.m文件。只是为了看看它是否有效。客户端提供了一个预先构建的libm4aPlayer.so库,并告诉我们它需要在apk中进行打包。看看设备的屏幕截图,确认它是在apk中复制.so。但是当我读取_main.pd(主音频控制器)时,我马上就知道了这个错误。 – Alex

0

有三个选项:

  • 钯找不到库文件:尝试使用全路径(或确认其他的外部,像[bonk~]可装载)

  • 二进制遗漏一些依赖(具有ldd一些机器人当量)

  • 检查
  • 二进制是不是在所有钯外部的(不管你的客户索赔)

调试最后两个选项,你可能想提高冗长和或监测标准错误(也可能是标准输出)你的应用也是如此。

相关问题