Mengapa Apple hanya mengizinkan Kerangka Kerja Statis di iOS?

11

Jelas Apple memiliki kemampuan untuk membuat perpustakaan yang dimuat secara dinamis (dikenal sebagai frameworks) untuk iOS, karena mereka mengirim beberapa dengan XCode (seperti UIKit). Pengembang aplikasi hanya memiliki kemampuan untuk membuat pustaka statis, atau paling tidak, mengelabui Xcode untuk berpikir itu memuat kerangka kerja ketika sebenarnya memuat pustaka statis, ini dikenal sebagai membuat kerangka kerja palsu, beberapa kemudahan drag-and-drop, tetapi tidak ada manfaat pemuatan dinamis.

Apa alasan Apple untuk menjaga kerangka kerja dinamis dari pengembang aplikasi? Sepertinya itu akan jauh lebih mudah menggunakan perpustakaan eksternal, karena pengembang tidak harus bergantung pada flag linker yang rewel atau rantai ketergantungan perpustakaan open-source.

Saya melihat alasan umum adalah keamanan. Lalu mengapa Apple mengizinkannya pada OSX dan bukan iOS? Bukankah keamanan juga merupakan persyaratan?

EDIT: Ini tidak lagi relevan pada iOS 8. Apple telah menambahkan dukungan untuk kerangka kerja dinamis.

Joel Fischer
sumber

Jawaban:

17

Salah satu kriteria Apple untuk menerima suatu program adalah apakah itu membuat panggilan ke Apple API yang tidak didukung (atau hal-hal buruk lainnya). Dengan memerlukan tautan statis, mereka dapat membuktikan bahwa perangkat lunak tidak melakukan panggilan seperti itu. Mengizinkan tautan dinamis akan memungkinkan segala jenis perilaku ditambahkan kemudian, yang cukup banyak membatalkan proses persetujuan mereka.

Apple memungkinkan penautan dinamis di OSX karena, well, Macintosh adalah komputer nyata, bukan perangkat tablet, dan pengguna komputer nyata mengharapkan mereka dapat diprogram dengan cara ini. Pasar untuk tablet dan ponsel sangat berbeda dari komputer desktop dan laptop. Komputer adalah perangkat produksi; pengguna berharap dapat menghasilkan produk pada mereka, termasuk menulis program yang melakukan apa yang mereka inginkan, bagaimana mereka inginkan. Ini tidak pernah menjadi harapan perangkat tablet, yang merupakan perangkat konsumsi.

Inti dari tablet dan Apple Store adalah untuk menciptakan lingkungan tertutup untuk melindungi konsumen dari virus pejalan kaki, dan sejenisnya (yah, dan untuk memungkinkan Apple mengumpulkan 30% dari semua penjualan perangkat lunak yang dilakukan melalui toko mereka).

Robert Harvey
sumber
7
Catatan: Apple sekarang telah mengizinkan kerangka kerja dinamis di iOS pada iOS 8.
Joel Fischer
@Robert Harvey terima kasih atas penjelasannya, tetapi dari iOS 8, mereka terbuka untuk menggunakan kerangka kerja dinamis. apakah ini memungkinkan peretas untuk mempengaruhi iOS / Aplikasi? apakah Anda tahu, bagaimana Apple membuat kerangka kerja dinamis sebagai terbuka untuk pengembang, tetapi mencegah hacker dari itu. Terima kasih!
Vijay-Apple-Dev.blogspot.com
8

Alasannya adalah keamanan sebagaimana disebutkan dalam pertanyaan Stack Overflow ini :

Alasannya adalah keamanan: karena pustaka dinamis dapat dimuat dan dibongkar saat runtime, Anda dapat mengunduh kode yang dapat dieksekusi tambahan dan memuatnya (pikirkan plug-in). Ini bisa dikompromikan oleh peretas dan kemudian mengeksekusi kode berbahaya pada ponsel Anda adalah hal yang sangat buruk. Ini juga memungkinkan untuk menambahkan fitur yang tidak disetujui ke aplikasi yang disetujui. Singkatnya: di lingkungan ini, Apple menganggap penautan dinamis sebagai kotak Pandora yang harus dikontrol dengan ketat, jika tidak maka akan membahayakan keamanan dan saya setuju bahwa itu masuk akal di telepon.

Insinyur Dunia
sumber