Domanda

È possibile avere una build binaria dell'applicazione per più dispositivi mobili (su PREPARAZIONE piattaforma), anziché creare una build separata per ciascun dispositivo utilizzando lo script di build con compilazione condizionale.

In particolare, è possibile utilizzare un'unica applicazione BREW per più risoluzioni dello schermo?

Tieni presente che l'obiettivo è averne uno singolo binario costruire.Se fosse solo per avere un'unica base di codice, la compilazione condizionale e lo script di build intelligente farebbero al caso loro.

È stato utile?

Soluzione

Sì, è possibile, abbiamo potuto farlo nel mio precedente posto di lavoro.Ciò che è richiesto è complicato però:

  1. Compilare per la versione BREW con il minimo comune denominatore.La versione 1.1 è la base per tutti i telefoni attuali sul mercato.
  2. Il tuo codice deve essere in grado di gestire più risoluzioni.Secondo la mia esperienza, i metodi per rilevare la larghezza e l'altezza dello schermo sono accurati per tutti i telefoni.
  3. Tutte le tue risorse devono essere caricate su tutti i dispositivi.Ciò richiederebbe la creazione di un caricatore di immagini personalizzato per risolvere determinati problemi del dispositivo.Per quanto riguarda il suono, so che il semplice MIDI di tipo 0 funziona su tutti, ma anche QCP dovrebbe funzionare (non ne ho esperienza personalmente).
  4. Utilizza caratteri bitmap.Ci sono troppi problemi del dispositivo con i caratteri per rendere utile l'utilizzo dei caratteri di sistema.
  5. Progetta la struttura del tuo codice come una macchina a stati finiti.Non lo sottolineerò mai abbastanza: fatelo e molti, moltissimi problemi non si materializzeranno mai.
  6. Avere soluzioni alternative per ogni singolo problema del dispositivo.Questa è la parte difficile!È possibile, ma questa tana del coniglio è incredibilmente profonda...

Alla fine, più l'applicazione è complessa e avanzata, meno è probabile che tu possa seguire questa strada.Alcune proprietà del dispositivo semplicemente non possono essere rilevate in modo affidabile in fase di esecuzione (come l'ID della piattaforma) e quindi sono necessarie più build.

Altri suggerimenti

Ho scritto una conversione da J2ME a Brew utilizzata su Javaground.È del tutto possibile scrivere risoluzioni multiple, codice binario singolo.Disponiamo di un database di bug del dispositivo in modo che possa rilevare tramite l'ID della piattaforma il dispositivo e quindi generare una serie di flag che contrassegnano quali bug sono contrassegnati.Ad esempio, la maggior parte (se non tutti) dei telefoni Motorola Brew hanno un bug per cui una chiamata in arrivo non interrompe l'applicazione finché non si risponde alla chiamata, quindi utilizzo TAPI per monitorare una chiamata in arrivo e generare un evento hideNotify (poiché siamo emulando Java, sebbene il codice generato sia puro C++).Eseguo alcuni controlli in fase di runtime per la versione Brew e disabilito alcune API se si tratta di Brew 2 anziché Brew 3.

I giochi di tipo 3D sono più facili da rendere indipendenti dalla risoluzione poiché si stanno ridimensionando nel software.

Inoltre ci sono 2 API separate per l'audio, IMEDIA e ISOUNDPLAYER, ISOUNDPLAYER è l'API più vecchia ed è supportata su tutti i dispositivi ma non ha altrettante funzionalità (puoi eseguire audio multicanale solo utilizzando IMEDIA).Creo un oggetto IMEDIA e tornerà a creare un oggetto ISOUNDPLAYER se non riesce a ottenere l'oggetto IMEDIA.

Il problema con una build totalmente universale è che c'è una grande differenza in termini di capacità, quindi può valere la pena avere alcune build, i dispositivi più vecchi hanno solo meno di 1 MB di heap (e una dimensione dello schermo piccola), e quindi ottieni molto con 6MB+ (da 176x204 a più grande).

Con Brew hai un insieme abbastanza coerente di valori chiave (a differenza di Java), sebbene alcuni dei nuovi dispositivi siano touch screen (e devi gestire l'input del puntatore) e schermi rotanti.

Ci sono anche alcuni vecchi telefoni Nokia che utilizzano la modalità big endian, il che significa che i file non sono gli stessi dei normali file mod (A MENO CHE tu non voglia scrivere qualche intestazione di prefisso in linguaggio assembly VERAMENTE interessante che decodifichi il file)

Un'altra idea potrebbe essere quella di dividere i telefoni in 2 o 4 categorie in base, ad esempio, alle dimensioni dello schermo e creare build per essi.È anche un percorso molto più veloce poiché sarai in grado di supportare tutti i telefoni che desideri con una complessità molto minore.

Un'altra cosa da vedere sono le versioni BREW sui telefoni su cui desideri avviare.Se diciamo che BREW 1.1 è su un telefono ed è posseduto da una piccola percentuale nel tuo mercato di riferimento, non ha senso lavorare per supportarlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top