2016-05-31 12 views
0

Mein Client hat eine .so vorgefertigte gemeinsame Bibliothek zur Verfügung gestellt. Was mit libpd geladen werden soll, da der libpd-Controller das Laden des m4aPlayer-Moduls erfordert. Also habe ich libm4aPlayer.so innen jniLibs (auch versucht Libs) Ordner unter app> Haupt und dann habe ich in meinem build.gradleAndroid Libpd funktioniert nicht - Fehler: ... konnte nicht erstellt werden

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

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

Und dann in meiner Klasse Audioservice (wo ich initPd() und loadPatch ()) ich versuche, nativer vorkompilierte Bibliothek aufzurufen, indem Sie diese

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

Jedesmal, wenn ich die Patch-Datei zu öffnen (_main.pd) I Fehler erhalten bereitgestellt Client von PD-Regler sagen „m4aPlayer konnte nicht erstellen ". Aber ich versuche, die Bibliothek zu laden, noch pd wirft diesen Fehler. Es spielt anderen Audio-Fein (wo libpd erfordert nicht m4aPlayer Leim.)

Stapelüberwachung

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 

Ich versuchte auch in der App zu überprüfen, um sicher Bibliothek zu machen kopiert wird oder nicht. Also ging ich zu

data/data/package_name/lib 

enter image description here

+0

Ich nehme an, die .so-Datei, die Sie verwenden möchten, ist eine reine Daten extern? In diesem Fall - können Sie die Quellen von Ihrem Client abrufen und sie als externe Komponente erstellen, wie in der Readme-Datei von PD-for-Android beschrieben, anstatt eine .so-Datei zu binden? Wird der Patch auf der Desktop-Version von pure-data vanilla richtig geladen? – kirsh300

+0

@ kirsh300 - Ja libm4aPlayer.so ist eine reine Daten externe, die ich in meiner App> Haupt> jni Verzeichnis habe. Einmal habe ich versucht, mit dem Befehl ndk-build zu bauen. Ich war auch in der Lage, .so-Datei zu erzeugen (obwohl der Client bereits vorgefertigte .so-Datei zur Verfügung gestellt hat) und versucht, diese .so-Datei zu laden, aber das ist auch fehlgeschlagen. Jedes Mal, wenn ich versuche, _main.pd aufzurufen, sucht es nach dem m4aPlayer-Modul, das zur Laufzeit geladen werden soll. Aus diesem Grund habe ich System.loadLibrary ("m4aPlayer") ausgeführt, um es zu laden. – Alex

+0

Können Sie einen Ausschnitt des Patches bereitstellen, für den m4aPlayer erforderlich ist? –

Antwort

0

Sie brauchen nicht System.loadLibrary() aufrufen reine Daten Äußerlichkeiten zu laden.

Werfen Sie einen Blick auf die auf der Pd-für-Android-Repository als Verweis darauf, wie die "helloworld.c" externe dort verwendet wird. Sie können dies als Vorlage für Ihr eigenes Projekt verwenden, um die Dinge zunächst einfach zu halten und zu überprüfen, dass der reine Daten-Patch Ihren libm4aPlayer extern korrekt laden kann.

Auch - Sie erwähnen. M-Dateien. Ich schätze, Sie erstellen dann Objective C? Ich habe niemanden gesehen, der das mit pd-for-android macht, also bin ich mir nicht sicher, ob das funktioniert.

+0

Hey, ich habe alles versucht, was mir einfällt. Also habe ich es auch mit der .h/.m-Datei versucht. Nur um zu sehen, ob es funktioniert oder nicht. Der Client hat eine vordefinierte libm4aPlayer.so-Bibliothek zur Verfügung gestellt und uns gesagt, dass sie in apk gepackt werden muss. Sehen Sie sich den Screenshot des Geräts an, der bestätigt, dass das .so in die apk kopiert wird. Aber wenn ich _main.pd (Hauptaudiocontroller) lese, bekomme ich diesen Fehler sofort. – Alex

0

gibt es drei Möglichkeiten:

  • Pd die Bibliotheksdatei nicht finden können: versuchen, einen vollständigen Pfad (oder dass andere Äußerlichkeiten bestätigen, wie [bonk~] können die binären Misses einige Abhängigkeiten mit einigen android Äquivalent ldd)

  • (überprüfen geladen)

  • werden

  • die binäre ist kein Pd-Außenüberhaupt (trotz allem, was Ihre Kundenforderungen)

die letzten beiden Optionen zu debuggen, Sie wollen Ausführlichkeit erhöhen und die stderr oder überwachen könnte (und wahrscheinlich stdout) von deiner App auch.