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

9

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

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

La nozione è emersa dal fatto che un dispositivo registrato come "dispositivo sviluppatore" fornisce all'app più risorse da utilizzare. Questo non mi sembra giusto, dal momento che non riesco a pensare a nessuna ragione che possa esistere - mi sembra che sia più probabile un problema con la creazione o la creazione di profili.

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

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

* Con un dispositivo non sviluppatore che è qualsiasi > 3rd gen. Dispositivo iOS che scarica l'app dal nostro server, non direttamente da un computer con l'app & xcode installato.

Nota c'è un'altra domanda che legge in modo simile, ma in realtà è diversa, perché l'altra domanda riguarda il simulatore e capisco che ci sono enormi differenze tra l'utilizzo di un simulatore e un dispositivo reale.

    
posta Katamaritaco 28.08.2013 - 17:33
fonte

4 risposte

8

L'ambiente di sviluppo (per qualsiasi cosa - si tratti di un'applicazione java standalone, o di un ambiente mobile o dispositivo incorporato) ha in genere la capacità di eseguire il debug remoto, la registrazione avanzata e altri tipi di introspezione dell'ambiente (in genere non lo fa) Non voglio aggiungere tutti i ganci per un analizzatore logico su un dispositivo embed di produzione).

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

Questo va oltre il punto che hai sempre bisogno di testare qualcosa in un mirror dell'ambiente di produzione. Fidarsi che funzioni sulle macchine dello sviluppatore con tutte le loro modifiche e variabili diverse non è sufficiente per verificare che funzioni correttamente nella produzione.

    
risposta data 28.08.2013 - 17:45
fonte
5

Ti permette di creare una proof-of-concept avida di risorse che puoi successivamente ottimizzare.

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

quando compare un avviso nel log quando superi il limite del consumatore, il test sarà piacevole qui.

    
risposta data 28.08.2013 - 17:40
fonte
1

È in parte una questione di "fiducia". Si presume che gli sviluppatori sappiano cosa stanno facendo e hanno quindi accesso illimitato al dispositivo e a tutte le sue risorse. Questo può essere di grande aiuto alle piccole aziende e ai team di sviluppo, dove le risorse inutilizzate sono risorse sprecate.

In un ambiente aziendale più ampio, o in particolare nel 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 richiedono anche risorse.

Questa non è davvero una nuova idea. Ho due macchine al lavoro. Sul mio computer sviluppatore ho accesso amministrativo, ma è isolato da internet. La mia altra macchina, che utilizzo per email, Office e 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. :)

    
risposta data 28.08.2013 - 17:44
fonte
0

Con iOS, un dispositivo abilitato per lo sviluppo ti permette di eseguire direttamente le build di Debug, che possono contenere un diverso set di bug del compilatore rispetto a una build Release, così come eseguire app sotto un debug nub, che può cambiare in modo subdolo il timing dei thread e utilizzo della memoria, che può anche mostrare / nascondere vari bug di threading e perdite di memoria.

Un dispositivo di sviluppo non sarebbe di grande utilità 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.

    
risposta data 23.09.2013 - 08:50
fonte

Leggi altre domande sui tag