Autore Topic: Miglior modo per mantere due progetti ? Free/no ads  (Letto 2214 volte)

Offline clshack

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Github
    • Mostra profilo
    • ClsHack
  • Dispositivo Android:
    nexus 4
  • Sistema operativo:
    ArchLinux
Miglior modo per mantere due progetti ? Free/no ads
« il: 25 Gennaio 2014, 13:33:00 CET »
0
Buongiorno a tutti,
volevo sapere quale fosse il miglior modo per mantere due progetti con il 90% del codice uguale.
Mi spiego meglio, ho un'applicazione (webcam italia) che è divisa in due versioni:
-gratuita con pubblicità
-pagamento senza ads.

Mi capita spesso di lavorare sul progetto free e poi fare un merge del codice sull'altro progetto ma purtroppo non è molto comodo.
Che cosa mi consigliate ?
Grazie

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #1 il: 25 Gennaio 2014, 14:34:51 CET »
0
usa android studio!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline clshack

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Github
    • Mostra profilo
    • ClsHack
  • Dispositivo Android:
    nexus 4
  • Sistema operativo:
    ArchLinux
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #2 il: 25 Gennaio 2014, 14:42:15 CET »
0
Utilizzo già android studio ma non ho capito dove vuoi arrivare :(
Potresti essere più chiaro :) ?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #3 il: 25 Gennaio 2014, 15:41:34 CET »
0
Utilizzo già android studio ma non ho capito dove vuoi arrivare :(
Potresti essere più chiaro :) ?
leggi questo:
https://plus.google.com/118417777153109946393/posts/WRgB2shaeuu
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #4 il: 25 Gennaio 2014, 16:18:32 CET »
0
Forse non ci ho capito nulla ma non mi pare una soluzione così interessante per il problema posto da clshack....

Offline clshack

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Github
    • Mostra profilo
    • ClsHack
  • Dispositivo Android:
    nexus 4
  • Sistema operativo:
    ArchLinux
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #5 il: 25 Gennaio 2014, 16:55:12 CET »
0
Già utilizzo con gradle una configurazione diversa per la versione di debug.
Questo però non mi aiuta se in certe activity devo includere gli ads o meno.
Oltre tutto le due app hanno un package diverso.
Questo lo risolvo con android studio ma il resto no :( 

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #6 il: 25 Gennaio 2014, 18:10:07 CET »
0
Immagino che l'idea sia di rendere il codice comune veramente comune (se non vuoi fare una libreria fai un package diverso per le classi/codice comune) e tenere le due app distinte solo per l'indispensabile (activity, layout, manifest e poco altro).

Ma per fare una cosa simile a livello teorico potrebbe andare bene anche eclipse.. hai un progetto libreria (le res vengono esportate dalla lib) un progetto minimale free con ads e uno a pagamento. Il problema non credo sia esportare uno zip con 3 progetti dentro o cliccare sul progetto giusto, il problema è condividere il più possibile il codice.

 :-\

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #7 il: 25 Gennaio 2014, 18:25:35 CET »
+3
Forse non ci ho capito nulla ma non mi pare una soluzione così interessante per il problema posto da clshack....

Ed invece quello è un ottimo esempio di come utilizzare i flavors con gradle.

Già utilizzo con gradle una configurazione diversa per la versione di debug.
Questo però non mi aiuta se in certe activity devo includere gli ads o meno.
Oltre tutto le due app hanno un package diverso.
Questo lo risolvo con android studio ma il resto no :( 

Non confondere debug/release che sono Build Type, con i flavors.

Qui la documentazione ufficiale:
Gradle Plugin User Guide - Android Tools Project Site

Quello che devi fare è qualcosa di questo tipo:

Codice: [Seleziona]
productFlavors {
    free {
        packageName "package.app.free"
    }

    paid {
        packageName "package.app.paid"
    }
}

Dopo di che devi inserire il codice nelle opportune cartelle definendo i sourceSet.

Codice: [Seleziona]
+ src
  + main
  | + res
  | + java

  + free
  | + res
  | + java

  + paid
  |  + res
  |  + java
       ... 

Tieni presente che in questo modo hai 4 Build Variants:

PaidRelease
PaidDebug   
FreeRelease
FreeDebug 


Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #8 il: 25 Gennaio 2014, 18:27:00 CET »
+2
Con android studio,come da link,puoi avere delle cartelle con sorgenti specifici per le diverse build config. Il codice comune sta nel main, il codice degli ADS nella parte free e il resto nella pro!

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #9 il: 26 Gennaio 2014, 17:27:19 CET »
0
Quello che dite è molto interessante... io per ora sono sempre su eclipse. Non sapevo di questa cosa dei flavours, pensavo anche io ai build types.

Domanda OT: se io voglio esportare un progetto su eclipse mi finisce su uno zip e posso portarlo ovunque. Come funziona in android studio?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #10 il: 26 Gennaio 2014, 18:28:39 CET »
0
su as credo che ti basti zippare la cartella, non ho mai guardato se esiste un export o meno...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline clshack

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Github
    • Mostra profilo
    • ClsHack
  • Dispositivo Android:
    nexus 4
  • Sistema operativo:
    ArchLinux
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #11 il: 28 Gennaio 2014, 12:54:20 CET »
0
grazie a tutti per i suggerimenti :D

Offline clshack

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Github
    • Mostra profilo
    • ClsHack
  • Dispositivo Android:
    nexus 4
  • Sistema operativo:
    ArchLinux
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #12 il: 02 Febbraio 2014, 20:31:29 CET »
0
Alla fine ho agito così:
Codice: [Seleziona]
       
    productFlavors {
        ads {
            packageName "cls.webcamitaliafree"
        }
        paid {
            packageName "cls.webcamitalia"
        }
    }

Codice: [Seleziona]
├── src
│   ├── ads
│   │   └── res
│   │       ├── layout
│   │       │   ├....
│   │       └── menu
│   │           ├── ...
│   ├── main
│   │   ├── AndroidManifest.xml
│   │   ├── assets
│   │   │   └── ..
│   │   ├── java
│   │   │   └── cls
│   │   │       ├── db
│   │   │       │   ├── ..
│   │   │       ├── util
│   │   │       │   └── ..
│   │   │       └── webcamitalia
│   │   │           ├── ..
│   │   └── res
│   │       ├── anim
│   │       │   ├── ..
│   └── paid
│       └── res
│           ├── layout
│           │   ├── ..
│           └── menu
│               ├── ..

Un unico sorgente e aggiungo la pubblicità con questa condizione:
Codice (Java): [Seleziona]
    public final static boolean ADS = BuildConfig.FLAVOR.equals("ads") ? true : false;

Offline arlabs

  • Utente normale
  • ***
  • Post: 433
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #13 il: 24 Febbraio 2014, 17:16:31 CET »
0
Domanda stupida.
Una volta creati 2 Flavors,

come faccio a lanciare (e debuggare) l'uno piuttosto che l'altro?
Adesso mi lancia sempre il "free"

Grazie.

Offline clshack

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Github
    • Mostra profilo
    • ClsHack
  • Dispositivo Android:
    nexus 4
  • Sistema operativo:
    ArchLinux
Re:Miglior modo per mantere due progetti ? Free/no ads
« Risposta #14 il: 24 Febbraio 2014, 17:33:59 CET »
0
Devi cambiare l'opzione di lancio ;)
La trovi sul lato sinistro di android studio..