Perché i dispositivi di sviluppo ti offrono più risorse di un dispositivo tipico?


9

Ho creato un'app che funziona sul mio iPod Touch di quarta generazione e sull'iPod touch di quinta generazione della mia azienda.

Stavamo per rilasciare, quando abbiamo riscontrato un arresto anomalo che si verifica dopo che un dispositivo non sviluppatore esegue l'app *.

L'idea è che un dispositivo registrato come "dispositivo sviluppatore" fornisce alla tua app più risorse da utilizzare. Questo non mi sembra giusto, dal momento che non riuscivo a pensare a nessuna ragione che potesse esistere - penso che sia più probabile un problema con la creazione o la creazione di profili.

Tuttavia, ciò ha spinto una discussione. Perché in primo luogo esistono dispositivi come kit di sviluppo per console di gioco, dispositivi che hanno più capacità rispetto alla piattaforma di destinazione? Ovviamente è bello stressare un programma, ma una rappresentazione più accurata della piattaforma target avrebbe più senso?

TL; DR - Perché i kit di sviluppo hanno più risorse rispetto alle piattaforme target?

* Con un dispositivo non sviluppatore qualsiasi> terza generazione. Dispositivo iOS che scarica l'app dal nostro server, non direttamente da un computer con l'app e l'xcode installati.

Nota che c'è un'altra domanda che sembra simile, ma in realtà è diversa, perché quell'altra domanda si pone sul simulatore e capisco che ci sono enormi differenze tra l'uso di un simulatore e un dispositivo reale.


7
@gnat - Questo post non è un duplicato di Perché è necessario testare la mia app per iPhone . Capisco che ci sono enormi differenze tra l'uso di un simulatore e un dispositivo reale ...
Katamaritaco,

Risposte:


8

L'ambiente di sviluppo (per qualsiasi cosa, che si tratti di un'applicazione Java autonoma, di un ambiente mobile o di un dispositivo incorporato) in genere ha la capacità di eseguire il debug remoto, la registrazione avanzata e altri tipi di introspezione dell'ambiente (in genere non si desidera per aggiungere tutti i ganci per un analizzatore logico su un dispositivo incorporato di produzione).

Queste cose aggiuntive richiedono risorse aggiuntive. L'apertura di un debugger remoto contro un VM o un altro ambiente remoto richiede alcune risorse dall'altra parte. Nel regno fortemente limitato del mobile, è possibile che queste risorse aggiuntive lo superino il limite concesso a un'applicazione standard. Pertanto, vengono fornite più risorse all'ambiente di sviluppo in modo che non raggiunga il limite delle risorse quando inizia a eseguire ulteriori log o debug.

Questo va oltre al punto che è sempre necessario testare qualcosa in un mirror dell'ambiente di produzione. Fidarsi che funzioni sui computer degli sviluppatori con tutte le loro modifiche e variabili diverse non è sufficiente per verificare che funzioni correttamente nella produzione.


1
Sì, il QA deve sempre essere testato in un ambiente per l'utente finale e non in un ambiente di sviluppo.
17 del 26

Alcuni anni fa, ero coinvolto in un progetto che doveva sviluppare due schede CPU completamente diverse. L'ingegnere hardware che ha fatto la scheda con cui sono stato fortemente coinvolto ha messo un sacco di connettori di test sulla sua scheda, stipulando un'assicurazione per la fase di debug, per assicurarsi che potessimo sondare qualsiasi cosa. Ha preso un sacco di elettricità statica per sprecare beni immobili e denaro. L'altro ragazzo non ha sprecato denaro e proprietà immobiliari. Cosa divertente: non abbiamo mai avuto bisogno dei connettori sulla nostra scheda. L'integrazione con l'altra scheda sarebbe stata un vero incubo, perché NULLA POTREBBE ESSERE PROBITATA. Pensa "assicurazione".
John R. Strohm,

@ JohnR.Strohm Per uno sviluppo, sondare è buono. Tutto ciò che sto cercando di dire è che se fosse progettato per avere una scheda di produzione diversa da quella di sviluppo, allora si dovrebbe anche testare di nuovo con quella di produzione dopo aver avuto successo con quella di sviluppo (e sondare se necessario).

Questo ha molto senso per un tipico "kit di sviluppo". Per curiosità, nel caso di iOS qualsiasi iDevice può essere utilizzato come "dispositivo sviluppatore". Come può esserci una differenza con due pezzi dello stesso hardware?
Katamaritaco,

1
@Katamaritaco solo perché è lo stesso dispositivo fisico non significa che l'applicazione abbia le stesse autorizzazioni all'interno di iOS. La possibilità di eseguire operazioni come il debug remoto può modificare le risorse a cui un'applicazione ha accesso.

5

Ti consente di creare una bozza di concetto avida di risorse che puoi successivamente ottimizzare.

Non ha senso arrestare in modo anomalo un'app perché è di 5 byte oltre il limite di memoria (che può essere risolto impostando l'ottimizzatore per risparmiare spazio nella versione ma si sta eseguendo una versione di debug),

avere un avviso pop-up nel registro quando si supera il limite del consumatore durante il test sarà bello qui.


1

In parte è una questione di "fiducia". Si presume che gli sviluppatori sappiano cosa stanno facendo e quindi hanno accesso illimitato al dispositivo e a tutte le sue risorse. Questo può essere di grande aiuto per le piccole aziende e i team di sviluppo, dove le risorse non utilizzate sono risorse sprecate.

In un ambiente aziendale più ampio, o in particolare il pubblico in generale, questo tipo di accesso diventa una responsabilità, a causa di problemi di sicurezza e della necessità di giocare bene con altre applicazioni che necessitano anche di risorse.

Questa non è davvero una nuova idea. Ho due macchine al lavoro. Sul mio computer sviluppatore ho accesso amministrativo, ma è isolato da Internet. L'altra mia macchina, che utilizzo per la posta elettronica, Office e l'accesso a Internet, non mi dà nemmeno la possibilità di installare programmi.

Questo è il motivo per cui devi testare la tua applicazione su un dispositivo non sviluppatore prima di distribuirla, per assicurarti che sia ben educata. :)


0

Con iOS, un dispositivo abilitato per lo sviluppo ti consente di eseguire direttamente build di debug, che potrebbero contenere un set diverso di bug del compilatore rispetto a una build di rilascio, nonché eseguire app in un nub di debug, che potrebbe cambiare in modo sottile i tempi dei thread e l'utilizzo della memoria, che può anche mostrare / nascondere vari problemi di threading e perdite di memoria.

Un dispositivo di sviluppo non sarebbe molto utile senza una funzionalità di debug e un dispositivo utente con funzionalità di debug presenterebbe un (più) grave problema di sicurezza dei dati di app e app.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.