Apple이 iOS에서 정적 프레임 워크 만 허용하는 이유는 무엇입니까? 위해 동적으로로드

분명히 애플은 iOS를 위해 동적으로로드 된 라이브러리 (프레임 워크라고 함)를 생성 할 수 있습니다. 앱 개발자는 정적 라이브러리를 만들거나 정적 라이브러리를 실제로로드 할 때 프레임 워크를로드한다고 생각할 때 Xcode를 속일 수 있습니다. 이는 가짜 프레임 워크를 만드는 것으로 알려져 있습니다. 그러나 동적 로딩 이점은 없습니다.

앱 개발자로부터 동적 프레임 워크를 유지하려는 Apple의 추론은 무엇입니까? 개발자가 까다로운 링커 플래그 또는 오픈 소스 라이브러리 종속성 체인에 의존 할 필요가 없기 때문에 외부 라이브러리를 사용하는 것이 상당히 쉬운 것처럼 보입니다.

일반적인 이유는 보안입니다. 그렇다면 왜 Apple은 iOS가 아닌 OSX에서 허용합니까? 거기에 보안도 필요하지 않습니까?

편집 : iOS 8부터는 더 이상 관련이 없습니다. Apple은 동적 프레임 워크에 대한 지원을 추가했습니다.



답변

프로그램 수락에 대한 Apple의 기준 중 하나는 지원되지 않는 Apple API (또는 기타 나쁜 것)를 호출하는지 여부입니다. 정적 연결을 요구함으로써 소프트웨어가 그러한 호출을하지 않음을 증명할 수 있습니다. 동적 연결을 허용하면 나중에 모든 종류의 동작을 추가 할 수있어 승인 프로세스가 거의 무효화됩니다.

Apple은 OSX에서 동적 연결을 허용합니다. Macintosh는 태블릿 장치가 아닌 실제 컴퓨터이며 실제 컴퓨터 사용자는 이러한 방식으로 프로그래밍 할 수 있기를 기대하기 때문입니다. 태블릿 및 휴대폰 시장은 데스크톱 및 랩톱 컴퓨터와는 상당히 다릅니다. 컴퓨터는 생산 장치입니다. 사용자는 원하는 방식으로 원하는 방식으로 프로그램을 작성하는 등 제품을 생산할 수있을 것으로 기대합니다. 이것은 소비 장치 인 태블릿 장치에 대한 기대는 결코 아니 었습니다 .

태블릿과 Apple Store의 핵심은 보행자 바이러스 등으로부터 소비자를 보호하기 위해 폐쇄 된 환경을 만드는 것이 었습니다.


답변

그 이유는이 스택 오버플로 질문 에서 언급 한 보안입니다 .

그 이유는 보안입니다. 런타임에 동적 라이브러리를로드 및 언로드 할 수 있으므로 추가 실행 코드를 다운로드하여로드 할 수 있습니다 (플러그인 생각). 이것은 해커에 의해 손상 될 수 있으며 휴대폰에서 악성 코드가 실행되는 것은 매우 나쁜 일입니다. 또한 승인되지 않은 기능을 승인 된 앱에 추가 할 수도 있습니다. 요컨대,이 환경에서 Apple은 동적 연결을 엄격히 제어해야하는 Pandoras 상자로 간주합니다. 그렇지 않으면 보안이 손상 될 수 있으며 전화 상으로는 이해가된다는 데 동의합니다.