2015-12-18 10 views
13

Sto lavorando a un progetto Libgdx che utilizza l'Universal Tween Engine. Ho seguito tutti i passaggi di questa pagina: https://github.com/libgdx/libgdx/wiki/Universal-Tween-Engine per installare la libreria Universal Tween Engine nel mio progetto.Android Studio 'Aggiungi come libreria' mancante Per Universal Tween Engine su Libgdx

Dopo aver completato tutti questi passaggi, il progetto verrà creato e funzionerà correttamente (sia Android che desktop) sul mio PC portatile, e le animazioni provenienti dal motore tween funzionano perfettamente.

Tuttavia sul mio computer desktop ogni volta che provo a eseguire l'applicazione desktop si blocca con NoClassDefFoundException che viene lanciato sulla classe TweenAccessor che fa parte di Universal Tween Engine. L'applicazione viene compilata correttamente e posso fare clic sulla classe che Ctrl non riesce a trovare e apre il codice sorgente di quella classe, quindi so che almeno una parte dell'IDE sta trovando questa classe. Non ci sono errori di sottolineatura rossi su nessuna classe della libreria nell'editor del codice sorgente. È interessante notare che sul mio computer desktop I è possibile eseguire l'applicazione Android e non si blocca e le animazioni funzionano perfettamente. Solo la versione desktop non funzionerà.

Nel tentativo di risolvere questo problema ho eseguito più di una cosa che dice di passare alla vista 'Progetto' trovare i file jar, fare clic su di essi e scegliere Add as a Library Ho dovuto farlo in passato su altri progetti e ha davvero funzionato per me.

Ma il mio problema è l'opzione Add as a Library manca dal menu contestuale quando mi fate clic destro sul mio PC desktop:

enter image description here

Ho provato la pulizia del progetto. Ho persino completamente disinstallato Android Studio e scaricato una nuova copia e installato. Ottenete comunque gli stessi risultati dopo averlo fatto.

Che cosa determina se l'opzione "Aggiungi come libreria" verrà visualizzata nel menu di scelta rapida facendo clic con il pulsante destro del mouse su un file jar?

Cosa devo fare sul mio PC desktop per utilizzare correttamente il contenitore di libreria Universal Tween Engine?

MODIFICA: sezioni rilevanti di gradle.build.

project(":desktop") { 
    apply plugin: "java" 
    dependencies { 
     compile project(":core") 
     compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion" 
     compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" 
     compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop" 
     compile fileTree(dir: '../libs', include: '*.jar') // This one is not listed but I added anyway 
    } 
} 
//... 
project(":android") { 
    apply plugin: "android" 
    configurations { natives } 
    dependencies { 
     compile project(":core") 
     compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" 
     natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" 
     natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" 
     natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" 
     compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" 
     natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi" 
     natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a" 
     natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86" 
     compile fileTree(dir: '../libs', include: '*.jar') 
    } 
} 
//... 
project(":core") { 
    apply plugin: "java" 
    dependencies { 
     compile "com.badlogicgames.gdx:gdx:$gdxVersion" 
     compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" 
     compile fileTree(dir: '../libs', include: '*.jar') 
    } 
} 

mio progetto Struttura

project_root_dir/ 
    android/ 
    core/ 
    desktop/ 
    html/ 
    ios/ 
    libs/ 
     tween-engine-api.jar 
     tween-engine-api-sources.jar 
+2

cosa fa il tuo file di build.gradle assomigliare per l'applicazione? Ha una riga simile a 'compile fileTree (dir: 'libs', include: ['* .jar'])'? Puoi anche aggiungere dipendenze attraverso la struttura del progetto (File -> Struttura del progetto, fare clic sul modulo, fare clic sulla scheda Dipendenze, fare clic sul segno più -> Dipendenza file) –

+1

@VinayDandekar Ho aggiunto i bit relavent del mio gradle. costruire il file. Sì, includono quelle linee. Quando guardo la struttura del progetto e la scheda delle dipendenze, entrambi i file jar sono già elencati nei moduli 'core' e' android'. Ma non elencato sotto desktop. Se provo ad aggiungerli al modulo desktop non posso perché mi sta facendo sfogliare solo sotto la directory Desktop, ma sono su un livello all'interno della directory libs che si trova nella root del progetto. – FoamyGuy

+1

Stai già includendo tutti i jar nella cartella/libs /. Non è necessario aggiungerlo perché è già stato aggiunto. 'compila fileTree (dir: '../libs', include: '* .jar')' – Knossos

risposta

1

stavo affrontando lo stesso problema ... ho risolto così: Basta aggiungere i file tween.jar sotto librerie cartella in Progetto e aggiungere questo a il build.gradle

project(":core") { 
    apply plugin: "java" 


    dependencies { 
     compile fileTree(dir: '../libs', include: 'tween-engine-api*.jar') 
     compile "com.badlogicgames.gdx:gdx:$gdxVersion" 
     compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" 
     compile "com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion" 
     compile "de.tomgrill.gdxfacebook:gdx-facebook-core:1.1.1" 
     compile "de.tomgrill.gdxdialogs:gdx-dialogs-core:1.0.0" 
     compile "net.dermetfan.libgdx-utils:libgdx-utils-box2d:0.13.2" 
     compile "net.dermetfan.libgdx-utils:libgdx-utils:0.13.2" 
     compile "org.robovm:robopods-google-mobile-ads-ios:1.6.0" 
     compile "org.robovm:robopods-google-analytics-ios:1.6.0" 
    } 
} 
+0

L'ho già fatto. Non risolve il problema. – FoamyGuy

+0

sei sicuro di avere esattamente le stesse versioni di Android Studio su entrambi i computer? – laymelek

+0

Originariamente entrambi i computer avevano la stessa versione di Android Studio (che era 1.5) ho completamente disinstallato AS e scaricato la versione più recente sul mio desktop in modo che ora abbia 1.5.1 e il mio portatile abbia ancora solo 1.5. Erano entrambi sulla stessa versione prima di disinstallare/reinstallare sul mio desktop e non funzionava sul desktop, ma stava lavorando al laptop. – FoamyGuy

1

Se davvero si vuole vedere l'opzione "Aggiungi come Library". Aggiorna le dipendenze Android in build.gradle come segue (rimuovendo '.jar').

project(":android") { 
apply plugin: "android" 
configurations { natives } 
dependencies { 
    compile project(":core") 
    compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" 
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" 
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" 
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" 
    compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" 
    natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi" 
    natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a" 
    natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86" 
    compile fileTree(dir: '../libs', include: '') //removed '*.jar' 
} 

}

o, in alternativa è possibile aggiungere la libreria senza modificare le dipendenze da

File-> Progetto struttura-> Dependencies-> Aggiungi-> file di dipendenza

+0

Il problema è risolto? – SachinS

+0

Ho risolto il problema, posterò quello che dovevo fare presto. Ho appena provato a cambiare la linea di dipendenza come la tua 'compile fileTree (dir: '../libs', include: '')' solo ora e non ho ancora l'opzione Aggiungi come libreria. L'ho lasciato sincronizzare gradle, e ho provato a riavviare AS e ancora nessuna opzione 'Aggiungi come libreria' presente nel menu di scelta rapida. – FoamyGuy

+0

Ho provato anche a usare 'File-> Struttura del progetto-> Dipendenze-> Aggiungi-> Dipendenza file'.La cosa su questo è che sembra essere bloccato all'interno della directory del modulo, non mi permette di salire di un livello che è come il progetto è strutturato. Ho provato a mettere una copia della cartella libs all'interno dei moduli e aggiungerla in questo menu e questo non ha risolto il mio problema. Per risolverlo ho dovuto aprire questo menu e rimuovere le 2 voci che erano lì dentro. – FoamyGuy

4

Vorrei semplicemente aggiungere come dipendenza solo questa riga:

compile files('../libs/tween-engine-api.jar') 

che la linea di cui sopra dovrebbe sostituire questa linea:

compile fileTree(dir: '../libs', include: '*.jar') 

potevo immaginare che il file di codice sorgente è rompere qualcosa. In generale eviterei di importare più vasi contemporaneamente, li selezionerei sempre a mano.


Come idea alternativa Hai provato i punti 6 e 7 del readme file?

L'aggiunta di questo nella vostra sezione di dipendenza:

compile "aurelienribon:tweenengine:6.3.3" 
compile "aurelienribon:tweenengine:6.3.3:sources" 

e aggiungi a due Maven repositoried al file build.gradle nella root del progetto:

maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 
maven { url "https://oss.sonatype.org/content/repositories/releases/" } 
+0

Ho provato a puntare i file jar per nome come suggerisci tu e questo non ha risolto il problema. Ma anche se in questo caso non era il problema, intendo farlo in questo modo. – FoamyGuy