AppleがiOSで静的フレームワークのみを許可するのはなぜですか?


11

Appleは、iOS用に動的にロードされるライブラリ(フレームワークと呼ばれる)を作成する機能を持っていることは明らかです。アプリ開発者は静的ライブラリを作成する機能しか持っていないか、せいぜい、実際に静的ライブラリをロードしているときにフレームワークをロードしているとXcodeをだまします。これは、偽のフレームワークの作成として知られています。しかし、動的ローディングの利点はありません。

アプリ開発者からの動的なフレームワークを保持するためのAppleの理由は何ですか?開発者は繊細なリンカーフラグやオープンソースライブラリの依存関係チェーンに依存する必要がないため、外部ライブラリの使用がかなり容易になるようです。

一般的な理由はセキュリティだと思います。なぜAppleはiOSではなくOSXでそれを許可するのですか?セキュリティも要件ではありませんか?

編集:これはiOS 8からは関係なくなりました。Appleは動的フレームワークのサポートを追加しました。

回答:


17

プログラムを受け入れるためのAppleの基準の1つは、サポートされていないApple API(またはその他の不適切なもの)を呼び出すかどうかです。静的リンクを要求することにより、ソフトウェアがそのような呼び出しを行わないことを証明できます。動的リンクを許可すると、後であらゆる種類の動作を追加できるようになり、承認プロセスがほとんど無効になります。

AppleはOSXでの動的リンクを許可しています。これは、Macintoshがタブレットデバイスではなく実際のコンピューターであり、実際のコンピューターのユーザーがこの方法でプログラムできることを期待しているためです。タブレットと電話の市場は、デスクトップおよびラップトップコンピューターの市場とは大きく異なります。コンピューターは生産デバイスです。ユーザーは、自分が望むものを、好きなように実行するプログラムを作成するなど、製品を生産できると期待しています。これは、消費デバイスであるタブレットデバイスの期待ではありませんでした

タブレットとApple Storeの主な目的は、歩行者ウイルスなどから消費者を保護するために閉鎖環境を作成することでした(そして、Appleがストアを通じて行われたすべてのソフトウェア販売の30%を収集できるようにすること)。


7
注:Appleは、iOS 8のiOSで動的フレームワークを許可するようになりました。
Joel Fischer 14年

@Robert Harveyは説明に感謝しますが、iOS 8からは動的フレームワークを使用できるようになりました。ハッカーがiOS / Appに影響を与えることができますか?Appleがどのようにして動的フレームワークを開発者に開かれたものにしたのか、ハッカーをそれから防ぐという考えはありますか。ありがとう!
Vijay-Apple-Dev.blogspot.com

8

このスタックオーバーフローの質問で述べたように、理由はセキュリティです。

理由はセキュリティです。動的ライブラリは実行時にロードおよびアンロードできるため、追加の実行可能コードをダウンロードしてロードできます(プラグインを考えてください)。これはハッカーによって危険にさらされる可能性があり、それから悪意のあるコードを携帯電話で実行することは非常に悪いことです。また、承認されていないアプリに承認されていない機能を追加することも可能になります。要するに、この環境では、Appleは動的リンクを厳密に制御する必要があるPandorasボックスと見なします。そうしないと、セキュリティが低下する可能性があり、電話で意味をなすことに同意します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.