Geliştirme cihazları neden tipik bir aygıttan daha fazla kaynak sağlıyor?


9

4. nesil iPod Touch ve şirketimin 5. nesil iPod touch'ında çalışan bir uygulama oluşturdum.

Geliştirici olmayan herhangi bir cihaz uygulamayı çalıştırdıktan sonra meydana gelen bir kilitlenme bulduğumuzda yayınlamak üzereydik *.

Bir 'geliştirici cihaz' olarak kaydedilmiş bir cihazın uygulamanıza kullanması için daha fazla kaynak sağladığı fikri ortaya çıktı. Bu benim için doğru görünmüyor, çünkü var olabilecek herhangi bir sebep düşünemiyorum - daha çok bina veya provizyon profili oluşturma ile ilgili bir sorun olduğunu hissediyorum.

Ancak, bu bir tartışma başlattı. Oyun konsolu geliştirme kitleri, hedef platformdan daha fazla özelliğe sahip cihazlar neden ilk etapta var? Tabii ki bir programı stres testi yapmak güzel, ancak hedef platformun daha doğru bir şekilde temsil edilmesi daha anlamlı olmaz mı?

TL; DR - Geliştirme kitlerinin neden hedef platformlardan daha fazla kaynağı var?

* Geliştirici olmayan bir cihaz herhangi bir> 3. nesil. Uygulamayı, uygulama ve xcode yüklü bir bilgisayardan değil, sunucumuzdan indiren iOS cihazı.

Benzer okuyan başka bir soru olduğunu unutmayın , ancak aslında farklıdır, çünkü diğer soru simülatör hakkında soruyor ve bir simülatör ile gerçek bir cihaz arasında büyük farklılıklar olduğunu anlıyorum.


7
@gnat - Bu yayın iPhone uygulamamı neden test etmem gerektiğinin bir kopyası değil . Bir simülatör ve gerçek bir cihaz kullanma arasında büyük farklar olduğunu anlıyorum ...
Katamaritaco

Yanıtlar:


8

Geliştirme ortamı (herhangi bir şey için - bağımsız bir java uygulaması, mobil bir ortam veya gömülü aygıt olsun) tipik olarak uzaktan hata ayıklama, gelişmiş günlük kaydı ve çevrenin diğer introspeksiyonlarını yapma yeteneğine sahiptir (biri genellikle istemez) bir üretim gömülü cihaza bir mantık analizörü için tüm kancaları eklemek için ).

Bu ek şeyler ek kaynaklar gerektirir. Bir vm veya başka bir uzak çevreye karşı uzak bir hata ayıklayıcı açmak diğer tarafta bazı kaynaklar gerektirir. Çok sınırlı mobil aleminde, bu ek kaynakların onu standart bir uygulamaya verilen sınırı aşması mümkündür. Bu nedenle, ek günlük kaydı veya hata ayıklama yapmaya başladığında kaynak sınırına ulaşmaması için geliştirme ortamına daha fazla kaynak verilir.

Bu , üretim ortamının aynası içinde her zaman bir şeyi test etmeniz gereken noktaya kadar uzanır. Tüm ince ayarları ve farklı değişkenleri ile geliştiricinin makinelerinde çalıştığına güvenmek, üretimde doğru çalıştığını doğrulamak için yeterli değildir.


1
Evet, KG'nin her zaman bir geliştirme ortamında değil, son kullanıcı ortamında test etmesi gerekir.
17 of 26

Birkaç yıl önce, tamamen farklı iki CPU kartı geliştirmek zorunda olan bir projeye katıldım. Ağır bir şekilde dahil olduğum kartı yapan donanım mühendisi, hata ayıklama aşaması için sigorta yaptırıp, herhangi bir şeyi araştırabileceğimizden emin olmak için bir grup test konnektörünü tahtaya koydu. Gayrimenkul ve para israfı için çok fazla statik aldı. Diğer adam böyle bir para ve gayrimenkul kaybetmedi. Komik şey: Kartımızdaki konektörlere asla ihtiyacımız olmadı. Diğer tahtanın entegrasyonunun mutlak bir kabus olduğu bildirildi, çünkü HİÇBİR ŞEY SORUNAMAZ. "Sigorta" yı düşünün.
John R. Strohm

@ JohnR.Strohm Bir geliştirme için, problama iyidir. Tüm söylemeye çalışıyorum, eğer geliştirme panosundan farklı bir üretim panosuna sahip olacak şekilde tasarlanmışsa, o zaman geliştirme ile başladıktan sonra (ve gerekirse problama) bir tane ile tekrar test etmek gerekir.

Bu, tipik bir 'dev kit' için çok mantıklı. Merak ettikten sonra, iOS durumunda herhangi bir iDevice bir 'geliştirici cihaz' olarak kullanılabilir. Aynı donanımın iki parçasında nasıl bir fark olabilir?
Katamaritaco

1
@Katamaritaco, aynı fiziksel cihaz olması, uygulamanın iOS içinde aynı izinlere sahip olduğu anlamına gelmez. Uzaktan hata ayıklama gibi şeyleri yapabilmek, bir uygulamanın erişebileceği kaynakları değiştirebilir.

5

Daha sonra optimize edebileceğiniz kaynak açgözlü bir kavram kanıtı oluşturmanıza olanak tanır.

Bellek sınırının üzerinde 5 bayt olduğu için bir uygulamayı kilitlemenin bir anlamı yoktur (optimize ediciyi sürümdeki alanı korumak için ayarlayarak çözülebilir, ancak bir hata ayıklama sürümü çalıştırıyorsunuz),

test sırasında tüketici sınırını aştığınızda günlükte bir uyarı olması, burada güzel olacaktır.


1

Bu kısmen bir "güven" meselesidir. Geliştiricilerin ne yaptıklarını bildikleri varsayılır ve bu nedenle cihaza ve tüm kaynaklarına serbest erişim sağlanır. Bu, kullanılmayan kaynakların israf edildiği küçük şirketlere ve geliştirme ekiplerine büyük bir yardımcı olabilir.

Daha büyük bir kurumsal ortamda veya özellikle genel olarak, bu tür erişim, güvenlik endişeleri ve kaynaklara da ihtiyaç duyan diğer uygulamalarla iyi oynama ihtiyacı nedeniyle bir yükümlülük haline gelir.

Bu gerçekten yeni bir fikir değil. İş yerinde iki makinem var. Geliştirici makinemde yönetici erişimim var, ancak internetten yalıtılıyor. E-posta, Ofis ve İnternet erişimi için kullandığım diğer makinem, bana program yükleme yeteneği bile vermiyor.

Bu yüzden uygulamanızı geliştirmeden önce geliştirilmemiş bir cihazda test etmelisiniz, iyi davrandığından emin olun. :)


0

İOS ile Geliştirme için etkinleştirilmiş bir cihaz, Sürüm derlemesinden farklı bir derleyici hata kümesi içerebilen Debug derlemelerini doğrudan çalıştırmanıza ve iş parçacığı zamanlamasını ve bellek kullanımını ustaca değiştirebilecek bir hata ayıklama çubuğu altında uygulamaları çalıştırmanıza, bu da çeşitli iş parçacığı ve sızan bellek hatalarını gösterebilir / gizleyebilir.

Bir geliştirme cihazı, hata ayıklama özelliği olmadan çok fazla kullanılmaz ve hata ayıklama yeteneğine sahip bir kullanıcı cihazı, (daha fazla) ciddi bir uygulama ve uygulama veri güvenliği sorunu oluşturur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.