2016-05-31 29 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一些機器人當量)

  • 檢查
  • 二進制是不是在所有鈀外部的(不管你的客戶索賠)

調試最後兩個選項,你可能想提高冗長和或監測標準錯誤(也可能是標準輸出)你的應用也是如此。

相關問題