2010-03-01 21 views
5

Ho bisogno di creare un'applicazione abbastanza semplice, ma deve funzionare sia su PC che su Mac.Building Cross Platform app - raccomandazione

Inoltre, deve essere ridistribuibile su un disco o un'unità USB come applicazione desktop autonoma.

Inizialmente pensavo che AIR sarebbe stato perfetto per questo (soddisfa tutti i requisiti dell'API), ma la difficoltà è renderlo distribuibile, poiché l'applicazione richiederebbe l'installazione del runtime AIR per l'esecuzione.

Mi sono imbattuto in Shu Player come opzione in quanto sembra essere in grado di impacchettare il runtime AIR con l'app e fare un'installazione (silenziosa?).
Tuttavia, questo sembra interrompere il T & C da Adobe (as outlined here) quindi non sono sicuro della legalità.

Un'altra opzione potrebbe essere lo zinco, ma non l'ho provato, quindi non sono sicuro di quanto si adatti al conto.

Cosa consiglieresti o suggerire di verificare?

Ogni suggerimento molto apprezzato

EDIT: Ci sono un paio di discussioni sul loro utilizzo mono (anche se non vera e propria conclusione): Here e Here

EDIT2: Titanium potrebbe anche andare bene la Bill forse, lo verificherà.

Altri commenti da parte di qualcuno?

Edit3 (un anno dopo): In realtà è passato quasi un anno da quando ho postato questa domanda, ma sembra alcune persone ancora venire attraverso di esso di tanto in tanto, e anche contribuire una risposta, anche un anno più tardi.

Ho pensato di aggiornare la domanda un po '. Non sono andato in giro a provare l'opzione tcl/tk alla fine, il vincolo temporale e l'incertezza della compatibilità con le diverse versioni os mi hanno portato a scartarlo come opzione.

Ho provato Titanium per un po ', ma anche se le prime impressioni erano ok, stanno davvero spingendo la piattaforma mobile più di ogni altra cosa, e imho, l'implementazione desktop soffre un po' di quella mancanza di attenzione. Ci sono anche alcune segnalazioni di problemi con alcuni runtime di Visual Studio su alcuni sistemi operativi (non ricordo i dettagli ora però) .. Così scartato anche questo.

Ho finito per andare con XULRunner. I due principali ricorsi sono stati:

  • Firefox sembra funzionare fuori dalla scatola sulla maggior parte della versione del sistema operativo, quindi ho preso in buona fede che un'app XULRunner sarebbe probabilmente compatibile con la maggior parte del sistema. Mi ha salvato un sacco di test e si è scoperto che ha funzionato correttamente su tutte le piattaforme, non c'è stato un solo report di non essere in grado di avviare l'app
  • È Javascript baby! La curva di apprendimento della lingua era minima. La cosa principale da capire è quali sono le interfacce xpcom aggiuntive e come interrogarle.

Sul lato negativo:

  • ho pensato errori di risoluzione dei problemi è stato un compito difficile, a volte, il debugger Venkman è un pò goffo, finito per usare la console più di ogni altra.
  • L'interfaccia sqlite è una grande risorsa per un'app desktop ma ho spesso faticato a trovare informazioni sugli errori rilevanti quando qualcosa non funzionava, forse lo stavo facendo male.
  • Ci è voluto un po 'di tempo per capire come confezionare l'app come app standalone per PC e Mac. L'approccio finale consisteva nell'avere un'app mac "shell" e un'app shell pc e un paio di script "compili" che copierebbero le shell e aggiungessero il codice sorgente personalizzato su di esso nella posizione corretta.
  • Un ultimo potenziale problema per alcuni, a causa della natura delle app xulrunner, il codice sorgente verrà distribuito con l'app, è possibile utilizzare l'offuscamento se si desidera, ma è qualcosa da tenere a mente se si desidera proteggere la proprietà intellettuale

Tutto sommato, ottima piattaforma per un'app multipiattaforma. Lo consiglio vivamente.

+0

dove è finita quella risposta sull'uso di Mono? Non riesco a vederlo più ... – Ben

+0

un downvote? veramente? dopo tanto tempo? – Ben

+0

Grazie Ben per un post così dettagliato. Come funziona XULRunner per te fino ad oggi? È ancora applicabile? – yatg

risposta

0

Considerare JavaFX Funzionerebbe ovunque con un JRE moderno ..!

+0

Grazie. Come con la risposta di @ Michael E. Java è troppo di dipendenza – Ben

2

Java è probabilmente la soluzione migliore, anche se non tutti i PC Windows avranno necessariamente Java (la maggior parte dovrebbe). JavaFX è abbastanza nuovo da non poter contare su di esso: probabilmente troverai molti computer con Java 1.5 o (shudder) 1.4. Credo che il recente Mac OS sia ancora disponibile con 1.5 (l'ultima versione potrebbe essere cambiata in 1.6).

+0

Grazie per il suggerimento. I PC non vengono forniti con afaik preinstallato Java (ho sempre dovuto installarlo). È troppo di dipendenza, potrei anche andare con Air. E personalmente preferirei stare lontano da java se possibile – Ben

5

Tcl/Tk ha una delle migliori soluzioni di imballaggio disponibili. Puoi facilmente racchiudere un'applicazione multipiattaforma (implementata in un filesystem virtuale pienamente funzionante) con un binario specifico della piattaforma per ottenere un singolo file eseguibile per qualsiasi sistema desktop moderno. Cerca su google i termini starkit, starpack e tclkit. Questi binari avvolti sono minuscoli rispetto a molti eseguibili in questi giorni.

Molti deride Tk come "vecchio" o "immaturo" ma è uno dei più vecchi e stabili kit di strumenti disponibili. Usa i widget nativi quando esistono tali widget.

Un inconveniente significativo di Tcl/Tk, tuttavia, è che manca qualsiasi tipo di supporto di stampa. Se la tua applicazione ha bisogno di essere stampata dovrai essere un po 'creativa. Esistono soluzioni specifiche per piattaforma e la possibilità di generare documenti PostScript e librerie per creare file PDF, ma richiede un piccolo sforzo in più.

+0

Non sarebbe necessario installare tcl/tk prima? – Ben

+0

@ Ben: No. Si avvolge l'intero runtime tcl/tk in un singolo file. È inferiore a 4 megabyte in totale. Questa è la sua bellezza. Si finisce con un singolo file che si trascina su una cartella e viene installato. Nessun runtime extra o altro (a meno che tu decida di mantenere separati il ​​runtime e l'applicazione) –

+0

@ Bryan: Grazie per il tuo suggerimento (e il tuo entusiasmo!). Sarebbe adatto al conto. La mia unica preoccupazione è che non ho mai fatto tcl/tk quindi avrei avuto quella curva di apprendimento in cima a una scadenza folle .. – Ben

0

AIR potrebbe essere un'opzione, ma solo se non vi dispiace distribuire due file diversi (il programma di installazione runtime offline e la vostra app) e aspettarvi che l'utente ne esegua uno e poi l'altro. Devi presentare un modulo online sul sito di Adobe che ti dice di accettare di distribuire il programma di installazione offline così com'è, piuttosto che scavare le singole DLL o qualsiasi altra cosa, prima che ti forniscano l'installer.

Sfortunatamente al momento non è possibile ottenere sia un'app AIR che il runtime da un file. Non sono sicuro di quale sia l'accordo con Shu o se stia facendo qualcosa che non sia kosher.

+0

Grazie per il suggerimento. Come accennato nella mia domanda, AIR da solo non lo farà. Ho guardato shu ma richiede la distribuzione dell'aria da Adobe. Ci siamo applicati ad Adobe per la licenza aerea ma non abbiamo mai sentito nulla da loro. Va bene se non ti interessa adobe. – Ben

+0

Siamo andati xulrunner, all'inizio è un po 'difficile, ma è fantastico se ci riesci. – Ben

0

vorrei zink. ha tutte le funzionalità necessarie per desktop. tuttavia, il tempo in cui l'ho usato è stato un po 'glaciale.

Sono stato interrotto tentando di scrivere un file 6M sul disco. l'ho pensato e modificato il codice per scrivere blocchi da 512K alla volta (lavoro da 3 minuti, veloce).

probabilmente ha ancora alcuni piccoli fastidiosi inconvenienti come farti riflettere su root lvl ma la facilità d'uso e le funzionalità sono semplicemente troppo dolci per essere ignorate.

+0

Intendevi zinco? sembra che tu lo stia raccomandando e abbassandolo allo stesso tempo :) Non ne sono rimasto molto impressionato quando l'ho recensito. Sono andato con XULRunner di mozilla alla fine, è stata una piattaforma molto interessante, anche se piuttosto impegnativa. Guardaci dentro. – Ben

+0

@encoder .. e grazie per il tuo contributo in ritardo ancora – Ben

+0

thx per il suggerimento su XULRunner. e, sì, intendevo zinco. non l'ho usato estesamente, in effetti era solo per uso personale. sviluppato alcuni strumenti specializzati con esso (che era quasi 2 anni fa). e NON sto dicendo che ho scaricato illegalmente :) se ho un ampio lavoro per le app offline, lo comprerò sicuramente. potrebbe non essere il caso poiché la maggior parte dei sistemi è collegata al web. – encoder