개발 장치가 일반적인 장치보다 더 많은 리소스를 제공하는 이유는 무엇입니까?


9

4 세대 iPod Touch와 회사의 5 세대 iPod touch에서 작동하는 앱을 만들었습니다.

개발자가 아닌 장치가 앱 *을 실행 한 후 발생하는 충돌을 발견했을 때 릴리스하려고했습니다.

'개발자 기기'로 등록 된 기기가 앱에 더 많은 리소스를 제공한다는 개념이 나타났습니다. 이것이 존재하는 이유를 생각할 수 없었기 때문에 이것은 나에게 옳지 않은 것 같습니다. 나는 그것이 건물이나 프로비저닝 프로파일 링에 문제가 있다고 생각합니다.

그러나 그것은 토론을 촉발시켰다. 게임 플랫폼 개발 키트와 같은 장치, 대상 플랫폼보다 더 많은 기능을 가진 장치가 먼저 존재하는 이유는 무엇입니까? 물론 프로그램을 스트레스 테스트하는 것이 좋지만 대상 플랫폼을보다 정확하게 표현하는 것이 더 합리적이지 않습니까?

TL; DR-개발 키트에 대상 플랫폼보다 더 많은 리소스가있는 이유는 무엇입니까?

* 개발자가 아닌 장치는 3 세대 이상입니다. 앱 및 xcode가 설치된 컴퓨터가 아닌 서버에서 앱을 다운로드하는 iOS 기기

참고가 또 다른 질문 유사한 읽지 만 다른 문제는 시뮬레이터에 대해 요구하고 있기 때문에, 실제로는 다른, 나는 시뮬레이터와 실제 장치를 사용하는 사이에 엄청난 차이가 있음을 이해합니다.


7
@gnat-이 게시물은 내 iPhone 앱을 테스트 해야하는 이유 와 중복되지 않습니다 . 시뮬레이터를 사용하는 것과 실제 장치를 사용하는 것에는 큰 차이가 있음을 이해합니다 ...
Katamaritaco

답변:


8

개발 환경 (무엇이든-독립형 Java 애플리케이션, 모바일 환경 또는 임베디드 장치)은 일반적으로 원격 디버깅, 향상된 로깅 및 환경의 다른 유형의 내부 검사를 수행 할 수 있습니다 (일반적으로 원하지 않는 것) 프로덕션 임베디드 장치에서 로직 분석기의 모든 후크를 추가합니다 .

이러한 추가 작업에는 추가 리소스가 필요합니다. vm 또는 다른 원격 환경에 대해 원격 디버거를 열면 다른 쪽 끝에서 일부 리소스가 필요합니다. 매우 제한적인 모바일 영역에서는 이러한 추가 리소스가 표준 응용 프로그램에 부여 된 제한을 초과 할 가능성이 있습니다. 따라서 개발 환경에 더 많은 리소스가 제공되므로 추가 로깅 또는 디버깅을 시작할 때 리소스 제한에 도달하지 않습니다.

이것은 프로덕션 환경의 미러에서 항상 무언가를 테스트해야 한다는 점 까지 나아가고 있습니다. 모든 조정과 다른 변수로 개발자의 머신에서 작동한다는 것을 신뢰하는 것만으로는 프로덕션 환경에서 올바르게 작동하는지 확인할 수 없습니다.


1
예, QA는 항상 개발 환경이 아닌 최종 사용자 환경에서 테스트해야합니다.
26 개 중 26 개

몇 년 전, 저는 완전히 다른 두 개의 CPU 보드를 개발해야하는 프로젝트에 참여했습니다. 내가 보드에 참여한 하드웨어 엔지니어는 보드에 테스트 커넥터를 많이 배치하고 디버그 단계에 대한 보험을 이용하여 무엇이든 조사 할 수 있는지 확인했습니다. 그는 부동산과 돈을 낭비한 것에 대해 많은 정적 인 것을 취했습니다. 다른 사람은 그런 돈과 부동산을 낭비하지 않았습니다. 재미있는 것 : 보드에 커넥터가 필요하지 않았습니다. 다른 보드를 통합하는 것은 전혀 악의적 인 일이 아닌 것으로 알려졌다. "보험"을 생각하십시오.
John R. Strohm

@ JohnR.Strohm 개발 용으로는 프로빙이 좋습니다. 개발 보드와 다른 생산 보드를 갖도록 설계된 경우 개발 보드로 성공한 후 생산 보드로 다시 테스트해야하며 필요할 경우 프로빙해야한다고 말하고 싶습니다.

이것은 일반적인 'dev kit'에 대해 많은 의미가 있습니다. 호기심에서 iOS의 경우 모든 iDevice를 '개발자 장치'로 사용할 수 있습니다. 동일한 하드웨어의 두 조각이 어떻게 다른가요?
카타 마리 타코

1
@Katamaritaco는 동일한 물리적 장치이기 때문에 응용 프로그램이 iOS 내에서 동일한 권한을 갖는 것은 아닙니다. 원격 디버깅과 같은 작업을 수행하면 응용 프로그램이 액세스 할 수있는 리소스가 변경 될 수 있습니다.

5

이를 통해 나중에 최적화 할 수있는 자원 탐욕스러운 개념 증명을 작성할 수 있습니다.

메모리 제한을 초과하여 5 바이트이기 때문에 앱 충돌이 발생하지 않습니다 (해당 공간을 절약하도록 최적화 프로그램을 설정하여 해결할 수 있지만 디버그 버전을 실행 중임).

테스트 중에 소비자 한도를 넘을 때 로그에 경고 팝업이 표시되는 것이 좋습니다.


1

그것은 부분적으로 "신뢰"의 문제입니다. 개발자는 자신이하는 일을 알고 있다고 가정하므로 장치 및 모든 리소스에 자유롭게 액세스 할 수 있습니다. 이는 사용하지 않는 리소스가 낭비되는 소규모 회사 및 개발 팀에게 큰 도움이 될 수 있습니다.

더 큰 회사 환경, 특히 일반 대중의 경우 이러한 종류의 액세스는 보안 문제와 리소스가 필요한 다른 응용 프로그램과 잘 작동해야하기 때문에 책임이됩니다.

이것은 실제로 새로운 아이디어가 아닙니다. 직장에 두 대의 기계가 있습니다. 내 개발자 컴퓨터에서 관리자 액세스 권한이 있지만 인터넷과 분리되어 있습니다. 전자 메일, Office 및 인터넷 액세스에 사용하는 다른 컴퓨터에서도 프로그램을 설치할 수 없습니다.

그렇기 때문에 배포하기 전에 개발자가 아닌 장치에서 응용 프로그램을 테스트하여 제대로 작동하는지 확인해야합니다. :)


0

iOS에서 개발이 활성화 된 기기를 사용하면 디버그 빌드를 직접 실행할 수 있습니다. 디버그 빌드에는 릴리스 빌드와 다른 컴파일러 버그 세트가 포함되어있을 수 있으며, 디버그 타이밍에서 앱을 실행하면 스레드 타이밍과 메모리 사용량을 미묘하게 변경할 수 있습니다. 또한 다양한 스레딩 및 유출 된 메모리 버그를 표시하거나 숨길 수 있습니다.

개발 장치는 디버그 기능 없이는 많이 사용되지 않으며 디버그 기능이있는 사용자 장치는 심각한 앱 및 앱 데이터 보안 문제를 야기 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.