Autore Topic: Progetti multipli con AndroidStudio  (Letto 1157 volte)

Offline claudio

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus ME173X
  • Sistema operativo:
    Windows 7
Progetti multipli con AndroidStudio
« il: 04 Ottobre 2014, 10:36:26 CEST »
0
Ciao a tutti,

premetto che non sono un grande esperto di Java e di Android, ma con l'aiuto di Google search cerco di cavarmela  ;-) con Eclipse ho fatto qualche prova e poco più, ma poi visto che Google migra verso AndroidStudio ho deciso di fare lo switch.

La cosa che non capisco è questa:

In Eclipse avevo un workspace con dentro diversi progetti ed in un progetto potevo chiamare il jar di una libreria fatta in un altro progetto. Per essere più chiari: avevo una libreria di componenti riusabili che potevo usare in altri progetti.

Si può fare anche in AndroidStudio?

Per ora sono solo riuscito a fare un grande progetto con tutto dentro, ma lo trovo scomodo.

Altro piccolo problema più o meno collegato:

Nel mio progetto AndroidStudio uso i commons di Apache, sono riuscito in qualche modo ad includere i jar compilati, ma non ad includere i sorgenti ed i JavaDoc. Anche in questo caso c'è modo di dichiararli esternamente al progatto?

Grazie a tutti.
Claudio







Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Progetti multipli con AndroidStudio
« Risposta #1 il: 04 Ottobre 2014, 11:51:06 CEST »
0
In Eclipse avevo un workspace con dentro diversi progetti ed in un progetto potevo chiamare il jar di una libreria fatta in un altro progetto. Per essere più chiari: avevo una libreria di componenti riusabili che potevo usare in altri progetti.

Si può fare anche in AndroidStudio?

Si, ma stai attento che con Android Studio c'è un piccolo cambio di terminologia. Quello che tu dentro Eclipse intendo con Workspace e Project, dentro Android Studio sono indicati rispettivamente con Project e Module. Detto questo puoi avere un project con quanti moduli vuoi e puoi tranquillamente specificare che un modulo dipende da un altro modulo.

Mettiamo caso hai creato due moduli, uno è app e l'altro è library:

Codice: [Seleziona]
├── app
│   ├── build.gradle
│   └── src
├── build.gradle
├── gradlew
├── gradlew.bat
├── library
│   ├── build.gradle
│   └── src
└── settings.gradle

Devi assicurarti che dentro il file settings.gradle hai incluso entrambi i moduli:

Codice: [Seleziona]
include ':app', ':library'
Poi dentro il file app/build.gradle devi specificare la dipendenza alla libreria:

Codice: [Seleziona]
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library')
}

In fondo a questa pagina puoi trovare alcuni samples di come utilizzare gradle.

Citazione
Nel mio progetto AndroidStudio uso i commons di Apache, sono riuscito in qualche modo ad includere i jar compilati, ma non ad includere i sorgenti ed i JavaDoc. Anche in questo caso c'è modo di dichiararli esternamente al progatto?

Si, e per questo ti consiglio di non importare il jar a mano ma di dichiarare la dipendenza dentro Gradle. Ad esempio, considerando la libreria commons lang, puoi inserire nel build.gradle una cosa del genere:

Codice: [Seleziona]
dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'org.apache.commons:commons-lang3:3.3.2'
}

Gradle si occuperà di scaricare la dipendenza, la javadoc e i sorgenti.

Offline claudio

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus ME173X
  • Sistema operativo:
    Windows 7
Re:Progetti multipli con AndroidStudio
« Risposta #2 il: 04 Ottobre 2014, 17:22:03 CEST »
0
Ti ringrazio per la risposta esauriente.

Si, ma stai attento che con Android Studio c'è un piccolo cambio di terminologia. Quello che tu dentro Eclipse intendo con Workspace e Project, dentro Android Studio sono indicati rispettivamente con Project e Module. Detto questo puoi avere un project con quanti moduli vuoi e puoi tranquillamente specificare che un modulo dipende da un altro modulo.

Ok, allora ci siamo. Mi conforta avere conferma.


Devi assicurarti che dentro il file settings.gradle hai incluso entrambi i moduli:

Codice: [Seleziona]
include ':app', ':library'
Poi dentro il file app/build.gradle devi specificare la dipendenza alla libreria:

Codice: [Seleziona]
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library')
}

Ok

Si, e per questo ti consiglio di non importare il jar a mano ma di dichiarare la dipendenza dentro Gradle. Ad esempio, considerando la libreria commons lang, puoi inserire nel build.gradle una cosa del genere:

Codice: [Seleziona]
dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'org.apache.commons:commons-lang3:3.3.2'
}

Gradle si occuperà di scaricare la dipendenza, la javadoc e i sorgenti.

Ok, ma questo comporta che le librerie devono essere pubblicate su un repository pubblico (maven mi pare), per i packages pubblicati farò così.

Io però volevo provare "ActiveAndroid" che invece non è pubblicato, in questi casi l'unica alternativa è importare il progetto Eclipse oppure utilizzare direttamente il jar.

Con AndroidStudio ho un buon feeling, l'unico problema è che è molto sofisticato e se un giorno non dovesse funzionare qualcosa avrei difficoltà a venirne a capo, speriamo bene, per ora sembra molto stabile.

Ti ringrazio davvero :-) il tuo aiuto è stato prezioso.

Ciao
Claudio


Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Progetti multipli con AndroidStudio
« Risposta #3 il: 04 Ottobre 2014, 18:06:38 CEST »
0
Io però volevo provare "ActiveAndroid" che invece non è pubblicato, in questi casi l'unica alternativa è importare il progetto Eclipse oppure utilizzare direttamente il jar.

Eh si, ho guardato velocemente il progetto ed effettivamente mi sa che la cosa più veloce è importare il jar piuttosto che importare il progetto.
La soluzione che mi viene in mente è modificare lo script ant di ActiveDroid in modo tale da includere i sorgenti della libreria nel jar generato.
Ad un'occhiata veloce credo basti fare questa piccola modifiche nel file build.xml:

Cambia:

Codice: [Seleziona]
<jar destfile="${dist.dir}/ActiveAndroid.jar" basedir="${build.dir}"/>
in

Codice: [Seleziona]
<jar destfile="${dist.dir}/ActiveAndroid.jar" basedir="${build.dir}">
        <fileset dir="${src.dir}" includes="**/*.java"/>
</jar>

In questo modo se ricompili il jar della libreria verrano includi anche i sorgenti e da Android Studio dovresti essere in grado di visualizzarli :-)

Offline claudio

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus ME173X
  • Sistema operativo:
    Windows 7
Re:Progetti multipli con AndroidStudio
« Risposta #4 il: 04 Ottobre 2014, 18:13:35 CEST »
0
Ok, proverò
Ciao

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Progetti multipli con AndroidStudio
« Risposta #5 il: 06 Ottobre 2014, 14:39:53 CEST »
0
Ricky, visto che Claudio ha preso l'argomento...

Con AndroidStudio... come faccio ad usare una libreria che è localizzata altrove rispetto all'App? In un percorso diverso (che magari raggiungo tramite path relativo).
Ero solito strutturare il codice in librarie di base, librerie middle-ware ed applicazioni.

Quando ho cominciato con AndroidStudio ho avuto difficoltà a fare questa cosa e sono passato oltre rimandando il problema a quando la code-base sarebbe cresciuta.
Per usare termini termini AndroidStudio vorrei convididere dei Modules fra diversi Projects.

Ciao.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Progetti multipli con AndroidStudio
« Risposta #6 il: 06 Ottobre 2014, 16:18:57 CEST »
0
Secondo me dipende da cosa devi fare: se non ti serve modificare il modulo libreria ma semplicemente includerlo nell'app la soluzione migliore secondo me è compilare l'aar e pubblicarlo nel tuo repository maven locale.

Offline claudio

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus ME173X
  • Sistema operativo:
    Windows 7
Re:Progetti multipli con AndroidStudio
« Risposta #7 il: 06 Ottobre 2014, 18:18:52 CEST »
0
Quando ho cominciato con AndroidStudio ho avuto difficoltà a fare questa cosa e sono passato oltre rimandando il problema a quando la code-base sarebbe cresciuta.
Per usare termini termini AndroidStudio vorrei convididere dei Modules fra diversi Projects.

Infatti, piacerebbe anche a me, per il momento mi accontento perché è accettabile anche un Project con tutti i  Modules dentro, ma sarebbe molto meglio strutturato come suggerisci tu, anche banalmente solo per fare i backup solo del lavoro proprio e mettendo i moduli importati da terze parti in una posizione non sottoposta a backup.

Attendiamo le prossime releases di AndroidStudio. Bisognerebbe vedere se IntelliJ per progetti Java fa qualcosa del genere.

Ciao

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Progetti multipli con AndroidStudio
« Risposta #8 il: 07 Ottobre 2014, 09:26:02 CEST »
+2
Comunque in realtà potreste anche specificare manualmente la cartella nella quale trovare un certo modulo. Nel file settings.gradle:

Codice: [Seleziona]
include ':app',':library'
project(':library').projectDir = new File(settingsDir, '/path/to/library')
« Ultima modifica: 07 Ottobre 2014, 10:02:00 CEST da Ricky` »

Offline gferrari77

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
Re:Progetti multipli con AndroidStudio
« Risposta #9 il: 10 Ottobre 2014, 00:27:42 CEST »
0
Si, ma stai attento che con Android Studio c'è un piccolo cambio di terminologia. Quello che tu dentro Eclipse intendo con Workspace e Project, dentro Android Studio sono indicati rispettivamente con Project e Module. Detto questo puoi avere un project con quanti moduli vuoi e puoi tranquillamente specificare che un modulo dipende da un altro modulo.

Mettiamo caso hai creato due moduli, uno è app e l'altro è library:

Codice: [Seleziona]
├── app
│   ├── build.gradle
│   └── src
├── build.gradle
├── gradlew
├── gradlew.bat
├── library
│   ├── build.gradle
│   └── src
└── settings.gradle

Devi assicurarti che dentro il file settings.gradle hai incluso entrambi i moduli:

Codice: [Seleziona]
include ':app', ':library'
Poi dentro il file app/build.gradle devi specificare la dipendenza alla libreria:

Codice: [Seleziona]
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library')
}

In fondo a questa pagina puoi trovare alcuni samples di come utilizzare gradle.

Si, e per questo ti consiglio di non importare il jar a mano ma di dichiarare la dipendenza dentro Gradle. Ad esempio, considerando la libreria commons lang, puoi inserire nel build.gradle una cosa del genere:

Codice: [Seleziona]
dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'org.apache.commons:commons-lang3:3.3.2'
}

Gradle si occuperà di scaricare la dipendenza, la javadoc e i sorgenti.

Offline qato

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
Re:Progetti multipli con AndroidStudio
« Risposta #10 il: 21 Ottobre 2014, 09:40:07 CEST »
0
Mi intrometto nella discussione :)

Sto iniziando a vedere da qualche giorno Android Studio e... ho alcuni dubbi sulla gestione dei progetti e moduli... ma più in generale nella gestione di un progetto... provo a spiegarmi

Oggi sono abituato, su Eclipse, ad avere contemporaneamente aperti una serie di progetti mentre sviluppo una app. Sono progetti contenenti librerie android (ognuna delle quali col proprio repo GIT ovviamente), da me sviluppate, che includo all'occorrenza nei diversi progetti android che sviluppo.
Se trovo un bug all'interno di una libreria o mi serve una nuova funzionalità utile anche per altri progetti, la implemento immediatamente, scrivo il codice mentre sviluppo l'app e ne controllo direttamente il funzionamento. Le modifiche poi le commit-to subito su git, rendendo "potenzialmente", anche le precedenti app allineate, mi basta riaprite il progetto vecchio e invocare i metodi implementati e/o rifare il build...

La domanda è... posso fare la stessa cosa con Android Studio? Ditemi di si...  :D

Guardando in giro, ho visto che una delle ipotesi più accreditate è usare il repository locale di maven, nello specifico, creare un progetto nuovo, aggiungere un nuovo modulo (la mia libreria android), e poi farne l'upload nel repo maven.
Ogni nuovo progetto quindi, dovrebbe includere la libreria del repo maven, come dipendenza
Facendo così però (non ho provato, vado a deduzione) immagino che, mentre sviluppo un nuovo progetto che usa questa libreria, io non possa modificare il codice "al volo" se trovo bug, sbaglio?
Cioè non posso gestire contemporaneamente i due progetti o lavoro sul codice della libreria o su quello dell'applicazione, corretto?

Grazie in anticipo =)

Offline claudio

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus ME173X
  • Sistema operativo:
    Windows 7
Re:Progetti multipli con AndroidStudio
« Risposta #11 il: 21 Ottobre 2014, 09:54:36 CEST »
0
Mi intrometto nella discussione :)

Fai benissimo  :-)

Sto iniziando a vedere da qualche giorno Android Studio e... ho alcuni dubbi sulla gestione dei progetti e moduli... ma più in generale nella gestione di un progetto... provo a spiegarmi

Oggi sono abituato, su Eclipse, ad avere contemporaneamente aperti una serie di progetti mentre sviluppo una app. Sono progetti contenenti librerie android (ognuna delle quali col proprio repo GIT ovviamente), da me sviluppate, che includo all'occorrenza nei diversi progetti android che sviluppo.
Se trovo un bug all'interno di una libreria o mi serve una nuova funzionalità utile anche per altri progetti, la implemento immediatamente, scrivo il codice mentre sviluppo l'app e ne controllo direttamente il funzionamento. Le modifiche poi le commit-to subito su git, rendendo "potenzialmente", anche le precedenti app allineate, mi basta riaprite il progetto vecchio e invocare i metodi implementati e/o rifare il build...

La domanda è... posso fare la stessa cosa con Android Studio? Ditemi di si...  :D


Come dicevo in precedenza, anch'io non sono esperto di Android Studio, posso dire di non essere esperto di android in genere ;)

Però in questi giorni ho scoperto alcune cose.

Come diceva benissimo Riky, Il progetto Android Studio corrisponde più o meno al workspace Eclipse ed il modulo al progetto, quindi potresti avere un singolo progetto e metterci dentro tutti i tuoi moduli che saranno applicazioni e librerie.

Ma c'è di più, mi pare di capire che se in un progetto importi un modulo Android Studio appartenente ad un altro progetto, lui importa solo i riferimenti e tiene i files fisici nel progetto remoto, così potresti pubblicare su github tutto il progetto contenente la libreria ed i suoi programmi di test ed usarla in tutti i progetti in cui ti serve.

Prendi con le molle quello che ti dico, perché non ho avuto tempo di provare, anzi se provi tu e ci riesci, faccelo sapere.  ;-)

Ciao
Claudio

Offline qato

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
Re:Progetti multipli con AndroidStudio
« Risposta #12 il: 21 Ottobre 2014, 09:57:25 CEST »
0
Grazie claudio per la risposta!  ;-)

Ma c'è di più, mi pare di capire che se in un progetto importi un modulo Android Studio appartenente ad un altro progetto, lui importa solo i riferimenti e tiene i files fisici nel progetto remoto, così potresti pubblicare su github tutto il progetto contenente la libreria ed i suoi programmi di test ed usarla in tutti i progetti in cui ti serve.

Si, ma dal nuovo progetto, non potrei modificare il modulo o sbaglio? :)

Offline claudio

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Asus ME173X
  • Sistema operativo:
    Windows 7
Re:Progetti multipli con AndroidStudio
« Risposta #13 il: 22 Ottobre 2014, 09:17:49 CEST »
0
Grazie claudio per la risposta!  ;-)

Si, ma dal nuovo progetto, non potrei modificare il modulo o sbaglio? :)

No, puoi modificare ed anche debuggare.

Ho fatto una prova veloce ieri sera e non sono riuscito a compilare a causa di vari tipi di conflitti, ma sono quasi certo che si riesce a fare.

Ciao