Có lý do kỹ thuật nào khiến bạn không thể phát triển ứng dụng iOS trên máy tính Linux không?


23

Tôi hiểu lý do tại sao bạn không thể phát triển ứng dụng OS X trên máy tính Linux, nhưng có lý do kỹ thuật tốt tại sao bạn không thể phát triển ứng dụng iPhone và iPad trên Linux không? Tại sao không thể biên dịch mã nguồn iOS thành tệp thực thi iOS và chạy mã đó trong trình giả lập iOS trên Linux hoặc cài đặt nó trên thiết bị iOS phát triển?

Có phải chỉ vì XCode IDE là một ứng dụng Cacao?

Bạn có thể phát triển ứng dụng Android trên bất kỳ loại nền tảng nào. Tôi không thấy lý do tại sao điều tương tự không thể đúng với iOS.


29
Tôi tưởng tượng câu trả lời cho câu hỏi này, thật đáng buồn, sẽ là "không; Apple chỉ nói như vậy".
Jon Purdy

11
câu hỏi đóng cho "báng bổ";)
thorsten müller

1
Bên cạnh đó, bạn có thể lấy máy "Mac Mini". Đó là giá rẻ chưa kể nó thực sự là một máy tốt.
Chiron

2
@ The Legend of 1982: Tôi đã đọc nhầm cỗ máy tốt như cỗ máy thời gian và trải nghiệm ngay lập tức sự phấn khích và khinh miệt đồng thời của Apple.
Jon Purdy

@Jon Purdy Vâng Apple cung cấp "Cỗ máy thời gian" và "Viên nang thời gian" :)
Chiron

Câu trả lời:


17

Mac OS X chỉ có thể được chạy theo hợp đồng trên Phần cứng Apple. iOS yêu cầu khung Cacao và phải có quyền truy cập vào máy Mac để ký móc khóa. Mặc dù bạn có thể sử dụng Objective-C trên Linux bằng thư viện OpenStep, bạn không thể đẩy các ứng dụng bạn phát triển lên iOS do thiếu thư viện API chính xác và trong khi bạn có thể đẩy sang thiết bị đã bẻ khóa mà không cần khóa với nhà phát triển đầy đủ tài khoản, để bán ứng dụng nói trên hoặc thậm chí để tải xuống công khai, bạn đã chơi theo quy tắc của Apple.


17
"Mac OS X chỉ có thể được chạy hợp pháp trên Phần cứng Apple" - Tôi sẽ rất ngạc nhiên nếu điều đó là đúng trong bất kỳ hệ thống pháp lý lành mạnh nào. Tôi biết một sự thật rằng điều đó không đúng ở Đức, bởi vì Microsoft đã cố gắng thực hiện các pha nguy hiểm tương tự, mọi người đã bỏ qua nó, Microsoft đã kiện và thua.
Jörg W Mittag

4
Tôi sẽ thay đổi nó thành "hợp đồng" để chính xác hơn.
Kỹ sư thế giới

3
Vi phạm các điều khoản của hợp đồng về cơ bản chỉ tước đi các đặc quyền hỗ trợ của bạn. Apple muốn cung cấp dịch vụ khách hàng tốt, và cách đơn giản nhất để làm điều đó là giới hạn không gian trong đó mọi thứ có thể sai ở nơi đầu tiên. Nếu bạn đang chạy HĐH của họ trên phần cứng không phải của Apple, bạn sẽ tự mình làm.
Jon Purdy

@ JörgWMittag Microsoft đã cố gắng làm điều đó như thế nào? Tôi không biết Microsoft làm phần cứng ở nơi đầu tiên.
Nadir Sampaoli

4
@NadirSampaoli: Ở Đức, Microsoft bán giấy phép Windows rất rẻ cho các nhà xây dựng PC, để họ có thể đóng gói Windows với PC mà không làm tăng chi phí quá nhiều so với PC không có HĐH hoặc với Linux đi kèm. Mục đích là các giấy phép này được cài đặt sẵn trên PC. Tuy nhiên, các nhà xây dựng PC nhận ra rằng họ có thể bán các giấy phép đó một cách riêng biệt, với lợi nhuận khổng lồ so với những gì họ đã trả cho họ, nhưng vẫn rẻ hơn nhiều so với Microsoft. Microsoft đã kiện với lý do những giấy phép đó chỉ có thể được sử dụng với PC từ những người xây dựng đó, nhưng bị mất.
Jörg W Mittag

17

Không có lý do kỹ thuật cụ thể, nhưng các công cụ dành cho nhà phát triển mà Apple cung cấp chỉ chạy trên máy Mac và tôi không thấy họ vội vàng thay đổi điều đó.

Liên quan đến các công cụ dành cho nhà phát triển của bên thứ ba, Apple rất công khai không thích chúng và trao quyền phủ quyết tuyệt đối của Apple đối với những gì có trong App Store, không nên đầu tư bất kỳ thời gian phát triển đáng kể nào vào việc tạo / sử dụng chúng.

(Một trong những công cụ phát triển - iOS Simulator - được gắn rất chặt chẽ với hệ điều hành MacOS X vì lý do âm thanh kỹ thuật AFAIK nó thực sự là một wrapper mỏng giữa iOS và rất giống hệ điều hành MacOS X API, mà nó sẽ là vô cùng khó thực hiện trên hệ điều hành khác. . Bạn sẽ phải bắt đầu lại từ đầu và có khả năng kết thúc bằng thứ gì đó chậm chạp và kinh khủng như trình giả lập Android)


8

Nó phụ thuộc vào những gì bạn có nghĩa là "lý do kỹ thuật"

Nói đúng ra tôi không tin có một lý do kỹ thuật nào đó mà Ứng dụng iOS không thể được phát triển trên Linux. Nó sẽ yêu cầu một số thực thể, có thể là Apple hoặc một nhóm tin tặc táo bạo / tài năng, để tạo ra một chuỗi công cụ cho nó (trình biên dịch, có thể là IDE, một cái gì đó để có được nó trên điện thoại).

Vì vậy, nếu theo "lý do kỹ thuật", bạn có nghĩa là "điều gì đó đặc biệt về Macintosh không thể và không thể tồn tại trên nền tảng khác" thì không, tôi không tin là có. Chẳng hạn, không có con chip đặc biệt nào trên Macintosh được yêu cầu cho việc này.

Nếu theo "lý do kỹ thuật", bạn có nghĩa là "thứ gì đó ngăn tôi không thể làm điều đó ngay hôm nay" thì đúng, toàn bộ bit mã đã ký không tồn tại trên Linux và trừ khi Apple chuyển nó qua thì đó là trò chơi bóng.


4

Tôi nghĩ nên nói rằng bạn có thể phát triển cho iOS trên các nền tảng khác, bạn không thể xây dựng các ứng dụng cuối cùng trên chúng.

Điều đó đã được giải thích trong câu trả lời được chấp nhận tại sao bạn không thể xây dựng bên ngoài OS X, nhưng có nhiều công cụ phát triển cho phép bạn viết ứng dụng iOS trên các nền tảng khác.

Một số công cụ phát triển mà tôi đã sử dụng cho phép điều này:

  • Qt Framework (C ++ và Qml): Các ứng dụng có thể được viết bằng Windows hoặc Linux sau đó ứng dụng iOS được xây dựng với XCode trên OS X.

  • Unity3D (C #, UnityScript và Boo): Bạn có thể phát triển trên Windows và để xây dựng iOS trên nền tảng mà bạn tạo dự án XCode. Điều này cũng cho phép tích hợp hơn nữa với mã Objective-C khác.

  • Xamarin (C #): Bạn có thể phát triển trên Windows (và tôi tin rằng Linux) và sử dụng máy OS X làm máy chủ lưu trữ.

  • Kivy (Python): Cũng tạo các dự án XCode.

Và bạn có thể tìm thấy nhiều dự án như thế này, đặc biệt là khi bạn bắt đầu xem xét các khung ứng dụng web lai và ứng dụng di động như Appcelerator.


0

Không có lý do kỹ thuật nào cả mà bạn không thể phát triển các ứng dụng ios trên linux. Trong thực tế, nó đã xảy ra trên các cửa sổ trong Delphi XE. Ở đó bạn có thể phát triển ứng dụng ios của mình hoàn toàn trong windows. Điều duy nhất cuối cùng cần thiết là các ứng dụng của bạn cần phải được ký. Điều này chỉ có thể được thực hiện trên máy mac.


0

Có một lý do kỹ thuật là Xcode sẽ không cho phép phát triển ứng dụng iOS trên các hệ thống khác.

iOS tương tự nhiều cách với OS X. Nhiều khung công tác giống hệt nhau hoặc rất gần nhau. Trình mô phỏng iOS sử dụng điều đó để cung cấp một môi trường thử nghiệm rất nhanh. Khi Xcode biên dịch một ứng dụng để chạy trong trình giả lập, nó sẽ tạo ra các nhị phân x86 liên kết với các khung công tác chủ yếu dựa trên các khung OS X. Bạn kết thúc với một bản dựng gỡ lỗi chạy tự nhiên trên máy Mac của bạn, có hiệu suất tuyệt vời.

Nếu bạn nhìn vào Android, nó sẽ tạo ra các apks độc lập nền tảng, sau đó được mô phỏng trong trình giả lập Android này hoặc trình giả lập khác. Điều này chạy một máy ảo chạy toàn bộ ngăn xếp Android để bạn gỡ lỗi. Có những trình giả lập nhanh hơn các trình giả lập khác, nhưng tất cả chúng đều chậm hơn nhiều so với trình giả lập. Tuy nhiên, lợi ích là chúng đa nền tảng.

Để Apple cho phép các ứng dụng iOS được xây dựng trên các hệ thống khác, họ sẽ cần phải chuyển các khung công tác sang các HĐH đó để họ có thể viết một trình giả lập hoặc họ sẽ phải xây dựng một trình giả lập. Một trong số đó sẽ là một khối công việc sẽ mất thời gian để xây dựng các tính năng mới.


0

Mặc dù bạn không thể ký các ứng dụng cho iOS trên Linux và do đó phân phối chúng thông qua các phương thức được chấp nhận, bạn có thể phát triển (với cùng API) trên Linux bằng Theos. Đây là chuỗi công cụ được cộng đồng bẻ khóa sử dụng để phát triển ứng dụng cho iOS và nó là nền tảng chéo. Nếu thiết bị iOS của bạn đã được bẻ khóa, tôi tin rằng bạn sẽ có thể đẩy ứng dụng đã biên dịch sang thiết bị của mình thông qua libimobiledevice, nhưng ai đó có thể sửa tôi nếu tôi sai.

Một số thông tin khác: http://iphencedevwiki.net/index.php/Theos

Tôi dự định sẽ thực hiện việc này vào ngày hôm sau hoặc lâu hơn và tôi sẽ cung cấp thông tin cập nhật.


1
Xin vui lòng cập nhật!
Kyle Strand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.