Sondaggio

E tu con quale Target compili (per favore, leggi prima la definizione di Target)?

Android 1.5
0 (0%)
Android 1.6
4 (57.1%)
Android 2.1
0 (0%)
Android 2.2
3 (42.9%)

Totale votanti: 7

Le votazioni sono chiuse: 31 Ottobre 2010, 19:40:49 CET

Autore Topic: E tu con quale Target compili?  (Letto 1849 volte)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
E tu con quale Target compili?
« il: 15 Ottobre 2010, 20:40:49 CEST »
Gli ultimi dati danno queste distribuzioni per Android:
  • Android 1.5 - 9.7%
  • Android 1.6 - 16.4%
  • Android 2.1 - 40.4%
  • Android 2.2 - 33.4%

mi piacerebbe capire voi attualmente a cosa mirate come Target delle vostre applicazioni che distribuite (non applicazioni di test o per uso privato).

Con Target intendo effettivamente l'SDK che utilizzate (non i parametri android:minSdkVersion e android:targetSdkVersion dell'AndroidManifest, che a mio parere non servono ad una mazza, ma il target sdk effettivo).
Se non sapete come si vede il target, semplicemente click con il pulsante destro sul progetto, properties e controllate quale avete selezionato sotto la voce Android.

Grazie!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:E tu con quale Target compili?
« Risposta #1 il: 15 Ottobre 2010, 20:46:43 CEST »
Ovviamente Android 2.2. Anmeno posso utilizzare le features per il move2sd :)
Purtroppo però non è ancora sufficientemente diffuso per utilizzare altre cose carine che hanno implementato (xpath ad esempio).

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:E tu con quale Target compili?
« Risposta #2 il: 15 Ottobre 2010, 20:52:41 CEST »
Quoto Ricky`: Target 2.2

Cosa vuoi dire con "i parametri android:minSdkVersion e android:targetSdkVersion dell'AndroidManifest, che a mio parere non servono ad una mazza"?
Il android:minSdkVersion lo trovo utilissimo.
« Ultima modifica: 15 Ottobre 2010, 20:54:28 CEST da JD »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:E tu con quale Target compili?
« Risposta #3 il: 15 Ottobre 2010, 21:04:29 CEST »
(non i parametri android:minSdkVersion e android:targetSdkVersion dell'AndroidManifest, che a mio parere non servono ad una mazza, ma il target sdk effettivo).

Servono a creare filtri nel market ;)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:E tu con quale Target compili?
« Risposta #4 il: 15 Ottobre 2010, 22:45:01 CEST »
Servono a creare filtri nel market ;)

Si, ma vorrei conoscere chi è quel pazzo che compila con un code version 4 per renderlo compatibile con Android 1.6 e poi lo rilascia con minSdkVersion 8 per farlo filtrare dal market per Froyo!

Ed il targetSdkVersion? Compilo con code version 4, ma il mio target è 8... e allora? Che fa il compilatore in più? Due apk? Uno ottimizzato per la 8 ed uno per renderlo compatibile con la 4. E se poi esce la 9 che succede che gira meglio con apk con target 4???

Ripeto, sti due parametri non li ho mai capiti! Per me è normalissimo che il minSdkVersion è uguale ad target di compilazione mentre il targetSdkVersion (del tutto opzionale) è il cellulare con cui hai testato di più l'applicazione, quindi banalmente il tuo!

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:E tu con quale Target compili?
« Risposta #5 il: 15 Ottobre 2010, 22:57:27 CEST »
Si, ma vorrei conoscere chi è quel pazzo che compila con un code version 4 per renderlo compatibile con Android 1.6 e poi lo rilascia con minSdkVersion 8 per farlo filtrare dal market per Froyo!

Ehm, mi sa che uno di noi due non ha le idee ben chiare sull'utilizzo di minSDK e targetSDK: a quanto ho capito minSDK indica l'SDK minimo richiesto per poter installare l'applicazione, il targetSDK dovrebbe indicare il target SDK con cui hai compilato l'applicazione.

Significa che se per compilare utilizzi come target sdk l'8 (2.2) e la tua applicazione è comunque compatibile con le versioni fino a 1.6, puoi indicare nel manifest minSDK 4 e targetSDK 8.

Kitchen Timer è compilato 2.2 ma è compatibile anche con android 1.5, per tanto utilizzo minsdk 3 e targetsdk 8.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:E tu con quale Target compili?
« Risposta #6 il: 15 Ottobre 2010, 22:59:03 CEST »
Non vedo dove stiano le tue perplessità. Mettiamo caso che la tua applicazione faccia uso di api che sono disponibili sono da una certa api level (non è raro farlo).  Ti trovi costretto a questo punto ad utilizzare android:minSdkVersion indipendentemente da quella con il quale l'hai compilato (che ovviamente deve avere incluse le api che vai ad utilizzare nel codice).

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:E tu con quale Target compili?
« Risposta #7 il: 16 Ottobre 2010, 02:27:11 CEST »
Ma c'è un motivo per compilare con 2.2 se non si usano api nuove?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:E tu con quale Target compili?
« Risposta #8 il: 16 Ottobre 2010, 09:24:54 CEST »
Da quando è uscito froyo compilo sempre il 2.2 per avere il supporto ad a2sd. Prima in genere compilavo con target 1.6.
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:E tu con quale Target compili?
« Risposta #9 il: 16 Ottobre 2010, 09:30:32 CEST »
Che io sappia : il minSdkVersion rappresenta la minima versione delle API in grado di far girare l'applicazione, mentre il targetSdkVersion indica per quale versione delle API viene buildata l'applicazione. Se tutto va bene, il targetSdkVersion è irrilevante, perchè si presuppone che se anche fai il build per le 2.1, ma usi solo le 1.6, su un terminale 1.6 tutto continua a funzionare.

Altra cosa che avevo letto, riguardo le percentuali ufficiali di diffusione, è che tali percentuali sono ricavate dall'accesso al market stesso. Sono cioè fortemente influenzate dal poco supporto alla versione 1.x, cosa che scoraggia i possessori di 1.x dall'accedere al market e quindi sembra che ce ne siano pochissimi. In realtà ci sono diversi terminali 1.6 che sono tutt'ora venduti in negozi e ipermercati, non scordiamocelo.

In generale io sono comunque della filosofia di blackgin, parto sempre dalla versione più bassa possibile di SDK (come minSdk intendo) e salgo solo se strettamente necessario (cosa che tra l'altro si capisce in fase di ideazione dell'app). Come targetSdk penso JD abbia indicato un ottimo motivo per scegliere 2.2
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:E tu con quale Target compili?
« Risposta #10 il: 16 Ottobre 2010, 13:42:23 CEST »
Significa che se per compilare utilizzi come target sdk l'8 (2.2) e la tua applicazione è comunque compatibile con le versioni fino a 1.6, puoi indicare nel manifest minSDK 4 e targetSDK 8.

Non vedo dove stiano le tue perplessità. Mettiamo caso che la tua applicazione faccia uso di api che sono disponibili sono da una certa api level (non è raro farlo).  Ti trovi costretto a questo punto ad utilizzare android:minSdkVersion indipendentemente da quella con il quale l'hai compilato (che ovviamente deve avere incluse le api che vai ad utilizzare nel codice).

Ecco. Proprio questo è il punto che mi porta a dire che a mio parere non servono ad una mazza (e questa volta lo metto in grassetto e lo sottolineo!  o_O

Supponiamo che io nella mia applicazione uso la classe    android.provider.ContactsContract (che esiste, se non ricordo male, dalla 2.1 o 2.0.... supponiamo 2.0 per semplicità).

Se uso per compilare un SDK 1.6 (a prescindere da quello che metto su android:minSdkVersion) non riesco a compilare perché non mi riconosce la classe. PERFETTO: ho un controllo in tempo di compilazione di eventuali errori di compatibilità e sono certo che la mia applicazione sarà compatibile da Android 1.6 in su!

Se uso per compilare un SDK 2.0 (a prescindere da quello che metto su android:minSdkVersion) riesco tranquillamente a compilare. Esistono però due casi:
android:minSdkVersion = 5 (Android 2.0)
Il market farà scaricare l'applicazione solo a terminali con Android 2.0 o sup, perfetto funzionerà tutto!
android:minSdkVersion = 4 (Android 1.6)
Il market farà scaricare l'applicazione solo a terminali con Android 1.6 o sup, ma causa errori a runtime su terminali Android 1.6! L'unica avviso in tempo di compilazione è un warning sull'AndroidManifest che ti indica (guarda caso!!!) che il android:minSdkVersion è diverso dal target di compilazione!!! Ovvero, anche il compilatore si accorge che stai facendo una vaccata, ma te lo fa fare lo stesso.

Proprio quest'ultimo caso è capitato a me, davo un mio prodotto (compilato con Android 2.1 ma con minSdkVersion per 1.6) ad un Magic con 1.6 che andava sistematicamente in FC. A quel punto ho iniziato a capire il warning sul manifest e la vaccata di google.

Dice bene comunque Ricky` con "compila con quello che vuoi e metti il android:minSdkVersion compatibile con le API che hai usato", ma questo significa conoscere alla perfezione la disponibilità di tutte le api che usi (compresi eventuali librerie esterne) e senza avere il benchè minimo controllo in tempo di compilazione! Insomma, è un terno a lotto... anzi, è un sei al superenalotto se si considerano progetti medio grandi! L'unico modo di essere sicuri al 100% è usare il target di compilazione adatto.

Sinceramente trovo estremamente più utile il parametro android:maxSdkVersion che ti permette di fermare la distribuzione del prodotto se Google decide di rimuovere delle API dall'sdk. Mentre il android:minSdkVersion lo trovo inutile perché sempre e comunque uguale al target dell'sdk di compilazione.

Per il parametro android:targetSdkVersion, da quello che dice google stessa è solo una ottimizzazione di compilazione... che tecnicamente dovrebbe essere uguale al device che hai usato per testarla (anche se, anche qui avrei qualche cosa da ridire: io metterei il device che è più diffuso!)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:E tu con quale Target compili?
« Risposta #11 il: 16 Ottobre 2010, 14:03:47 CEST »
Mettiamoci appunto nel caso in cui tu usi  la classe android.provider.ContactsContract.
Ovviamente tu non vuoi che l'applicazione crashi a chi ha android 1.x. Anzi, a questo punto, non vuoi neanche che chi ha Android 1.x scarichi la tua applicazione. E allora cosa usi?? Il android:minSdkVersion! 

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:E tu con quale Target compili?
« Risposta #12 il: 16 Ottobre 2010, 14:45:38 CEST »
E allora cosa usi?? Il android:minSdkVersion!

Attenzione, facciamo un passo indietro! Non ho mai detto che sia inutile! E' una vaccata che il settaggio sia manuale (o che sia visibile allo sviluppatore)!

Per me è ovvio che il android:minSdkVersion sia uguale al target di compilazione. Non c'è bisogno di impostarlo manualmente visto che è (e deve essere) sempre uguale al target!

Il filtro nel market può benissimo essere fatto a partire dal target di compilazione, non da un parametro impostato manualmente che può causare errori a runtime!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:E tu con quale Target compili?
« Risposta #13 il: 16 Ottobre 2010, 14:49:59 CEST »
Attenzione, facciamo un passo indietro! Non ho mai detto che sia inutile!

Beh in realtà....

Citazione
Con Target intendo effettivamente l'SDK che utilizzate (non i parametri android:minSdkVersion e android:targetSdkVersion dell'AndroidManifest, che a mio parere non servono ad una mazza, ma il target sdk effettivo).

 :D :D



Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:E tu con quale Target compili?
« Risposta #14 il: 16 Ottobre 2010, 14:51:55 CEST »
Per me è ovvio che il android:minSdkVersion sia uguale al target di compilazione.

Perdonami Marco ma a me sembra una cavolata questa affermazione...

Pensa all'a2sd: è stato introdotto nella 2.2, e per utilizzarlo devi compilare obbligatoriamente con 2.2, l'applicazione spesso risulta comunque compatibile con gli SDK precedenti. Perché mai dovrei impedire l'installazione a chi ha meno di 2.2 o rinunciare all'a2sd?

Se c'è una cosa che deve essere sempre uguale al target di compilazione è il targetSDK. Non certo il minSDK.

È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !