2013-10-10 3 views
7

Sto lavorando a un plug-in PhoneGap/Cordova che dovrebbe fornire un socket per l'invio e la ricezione di messaggi OSC (Open Sound Control). A tale scopo mi piacerebbe usare JavaOSC ma non sono sicuro di come includere la libreria nel mio progetto.Android/PhoneGap: utilizzo di librerie di terze parti in sviluppo plug-in

Sto utilizzando Android Studio e ho praticamente seguito this tutorial per configurare il mio progetto. Per prima cosa ho messo le classi-files RAW JavaOSC nella stessa directory come il mio OSCPlugin.class e messo le dichiarazioni d'importazione al di della mia OSCPlugin.class:

import com.illposed.osc; 

che non ha funzionato.

Come passaggio successivo, ho provato ad aggiungere la libreria di Maven alle impostazioni del modulo del progetto. Sono stato in grado di scaricare i file jar da Maven e installarli in/platforms/android/libs. All'interno delle impostazioni per il modulo 'android' posso vedere che 'Android API 17' dovrebbe essere usato come SDK, tra cui cordova-3.1.0 e com.illposed.osc: javaosc-core: 0.2 - entrambi attivati. Riesco a vedere cordova-3.1.0.jar e javaosc-core-0.2.jar, contenenti com.illposed.osc nel navigatore di Android Studio.

Tuttavia, quando si cerca di compilare il mio progetto ottengo:

Gradle: cannot find symbol class osc 

innescato da dentro OSCPlugin.class che contiene la dichiarazione di importazione di cui sopra

mi hanno poca esperienza con Java e ancor meno con Sviluppo Android. Ma sarei interessato a risolvere questo indovinello e iniziare. Ho cercato i documenti Java, ma il problema non si trova semplicemente all'interno di Java, ma piuttosto all'interno della struttura del progetto Android.

Sarei grato se qualcuno potesse far luce su questo problema. Ogni suggerimento è molto apprezzato!

risposta

4

Per uno dei miei progetti PhoneGap avevo bisogno di Apache Commons Net, cercando di seguire questi steps:

... 
<source-file src="src/android/xxx.jar" target-dir="libs" framework="true" /> 
<source-file src="src/android/MyPlugin.java" target-dir="src/com/mypackage" /> 
... 

purtroppo, senza successo. Il trucco consisteva nell'incorporare la libreria di terze parti in un altro plug-in (seguendo la stessa struttura dei plugin). Avendo l'org.apache.commons.net come directory di primo livello:

org.apache.commons.net 
    +src 
     +android(this is where the .jar is located) 
    +www (empty, not referencing any .js) 
    +plugin.xml 

Per brevità, plugin.xml come segue:

<?xml version="1.0" encoding="UTF-8"?> 

<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0" 
      id="org.apache.commons.net" 
     version="0.1.0"> 
    <name>org.apache.commons.net</name> 
    <description>org.apache.commons.net</description> 
    <license>Apache License, Version 2.0</license> 
    <keywords>org.apache.commons.net</keywords> 

    <!-- android --> 
    <platform name="android"> 
     <config-file target="res/xml/config.xml" parent="/*"> 
      <feature name="org.apache.commons.net"> 
       <param name="android-package" value="org.apache.commons.net"/> 
      </feature> 
     </config-file> 

     <source-file src="src/android/commons-net-2.2.jar" target-dir="libs" framework="true" />  
    </platform>   
</plugin> 

Supponendo che la directory org.apache.commons.net si trova nel vostro repo git locale, aggiungerlo al progetto è così banale come:

phonegap local plugin add /path/to/your/org.apache.commons.net 
1

per aggiungere libreria esterna, praticamente tutto quello che dovete fare è copiare il vaso nella cartella/libs.

Qui hai una brutta importazione nella tua fonte.

l'importazione viene utilizzata per importare una classe specificando il nome del pacchetto seguito dal nome della classe e qui si specifica solo il nome della classe, quindi l'errore "Impossibile trovare la classe di simboli osc" che si sta avendo è perché non c'è classe osc .

Si dovrebbe utilizzare

  • import com.illposed.osc.*; se si desidera importare tutte le classi dal pacchetto
  • o aggiungere un import per ogni classe dal pacchetto che si intende utilizzare.

E se si desidera rendere il plugin installabile utilizzando la CLI o la build di phonegap, è necessario aggiornare plugin.xml per aggiungere la copia del file jar.

ps nel caso non lo si sappia, non sarà possibile utilizzare classi da com.illposed.osc.ui poiché utilizzano swing e progettate per jvm e non per android.