Czy istnieje techniczny powód, dla którego nie można tworzyć aplikacji iOS na komputerze z systemem Linux?


23

Rozumiem, dlaczego nie możesz tworzyć aplikacji OS X na komputerze z systemem Linux, ale czy istnieje dobry techniczny powód, dla którego nie możesz tworzyć aplikacji na iPhone'a i iPada w systemie Linux? Dlaczego nie jest możliwe skompilowanie kodu źródłowego iOS do pliku wykonywalnego iOS i uruchomienie go w symulatorze iOS w systemie Linux lub zainstalowanie go na rozwojowym urządzeniu z systemem iOS?

Czy to tylko dlatego, że XCode IDE jest aplikacją Cocoa?

Wygląda na to, że możesz tworzyć aplikacje na Androida na dowolnej platformie. Nie rozumiem, dlaczego to samo nie może dotyczyć iOS.


29
Wyobrażam sobie, że odpowiedź na to pytanie będzie niestety „nie; Apple właśnie tak powiedział”.
Jon Purdy,

11
pytanie zamknięte dla „bluźnierstwa”;)
thorsten müller,

1
Na marginesie, możesz dostać maszynę „Mac Mini”. Jest tani, nie wspominając, że to naprawdę dobra maszyna.
Chiron,

2
@ The Legend of 1982: Źle odczytałem dobrą maszynę jako maszynę czasu i doświadczyłem chwili równoczesnego chłopięcego podniecenia i pogardy Apple.
Jon Purdy,

@Jon Purdy Well Apple oferuje „Time Machine” i „Time Capsule” :)
Chiron

Odpowiedzi:


17

Mac OS X może być uruchamiany tylko na podstawie umowy na sprzęcie Apple. iOS wymaga frameworka Cocoa i dostępu do komputera Mac w celu podpisania pęku kluczy. Chociaż możesz używać Objective-C w systemie Linux przy użyciu bibliotek OpenStep, nie możesz wypychać tworzonych aplikacji do iOS z powodu braku odpowiednich bibliotek interfejsu API Cocoa i możesz przesyłać do urządzenia z uszkodzonym jailem bez pęku kluczy z pełnym programistą konto, aby sprzedać tę aplikację lub nawet pobrać ją publicznie, postępujesz zgodnie z zasadami Apple.


17
„Mac OS X można legalnie uruchamiać tylko na sprzęcie Apple” - byłbym bardzo zaskoczony, gdyby było to prawdą w każdym rozsądnym systemie prawnym. Wiem na pewno , że to nie jest prawda w Niemczech, ponieważ Microsoft próbował wykonać ten sam wyczyn, ludzie go zignorowali, Microsoft pozwał i przegrał.
Jörg W Mittag,

4
Zamienię to na „kontrakt” dla większej precyzji.
Inżynier świata

3
Naruszenie warunków umowy po prostu pozbawia cię przywilejów wsparcia. Apple chce zapewnić dobrą obsługę klienta, a najprostszym sposobem na to jest ograniczenie miejsca, w którym rzeczy mogą pójść nie tak. Jeśli korzystasz z systemu operacyjnego na sprzęcie innym niż Apple, działasz na własną rękę.
Jon Purdy,

@ JörgWMittag W jaki sposób Microsoft próbował to zrobić? Nie wiem, czy Microsoft w ogóle tworzy sprzęt.
Nadir Sampaoli,

4
@NadirSampaoli: W Niemczech Microsoft sprzedaje licencje na system Windows bardzo tanio producentom komputerów PC, aby mogli łączyć system Windows ze swoimi komputerami bez zbytniego zwiększania kosztów w porównaniu z komputerem bez systemu operacyjnego lub z dołączonym Linuksem. Chodzi o to, aby te licencje były wstępnie zainstalowane na komputerach PC. Jednak twórcy komputerów zdali sobie sprawę, że mogą sprzedawać te licencje osobno, z ogromnym zyskiem w porównaniu z tym, za co zapłacili, ale wciąż znacznie tańszym niż Microsoft. Microsoft pozwał, że tych licencji można było używać tylko z komputerami PC tych twórców, ale został utracony.
Jörg W Mittag

17

Nie ma żadnego szczególnego powodu technicznego, ale narzędzia dla programistów, które Apple udostępnia tylko na komputerach Mac, i nie widzę, żeby się spieszyły, aby to zmienić.

Jeśli chodzi o narzędzia deweloperskie innych firm, Apple bardzo ich nie lubi, a biorąc pod uwagę absolutną władzę weta Apple nad tym, co dostaje się w App Store, nie jest dobrym pomysłem inwestowanie znacznego czasu na tworzenie i korzystanie z nich.

(Jedno z narzędzi programistycznych - Symulator iOS - jest bardzo mocno związane z MacOS X z ważnych powodów technicznych. AFAIK to tak naprawdę cienkie opakowanie między iOS i bardzo podobnymi interfejsami API MacOS X, co byłoby nieskończenie trudniejsze w innym systemie operacyjnym Musiałbyś zacząć od nowa od zera i prawdopodobnie skończyć z czymś tak wolnym od psów i okropnym jak emulator Androida)


8

To zależy od tego, co rozumiesz przez „powód techniczny”

Ściśle mówiąc, nie sądzę, aby istniał techniczny powód, dla którego nie można było opracować aplikacji na iOS w systemie Linux. Wymagałoby to jakiegoś podmiotu, czy to Apple, czy grupy przedsiębiorczych / utalentowanych hakerów, aby stworzyć dla niego zestaw narzędzi (kompilatory, może IDE, coś, co można uzyskać przez telefon).

Więc jeśli z „technicznego powodu” masz na myśli „coś specjalnego w Macintoshu, co jest niemożliwe i nie mogłoby istnieć na innej platformie”, to nie, nie sądzę, żeby tak było. Na przykład Macintosh nie wymaga specjalnego układu.

Jeśli z „technicznego powodu” masz na myśli „coś, co uniemożliwia mi to, żebym mógł to zrobić dzisiaj”, to tak, cały podpisany bit kodu nie istnieje w systemie Linux i jeśli Apple go nie przeniesie, to jest to gra w piłkę.


4

Myślę, że należy powiedzieć, że możesz tworzyć dla iOS na innych platformach, po prostu nie możesz tworzyć na nich końcowych aplikacji .

W zaakceptowanej odpowiedzi wyjaśniono, dlaczego nie można budować poza systemem OS X, ale istnieje wiele narzędzi programistycznych, które pozwalają pisać aplikacje na iOS na innych platformach.

Niektóre z używanych przeze mnie narzędzi programistycznych, które to umożliwiają:

  • Qt Framework (C ++ i Qml): aplikacje można pisać w systemie Windows lub Linux, a następnie aplikacja iOS jest budowana za pomocą XCode na OS X.

  • Unity3D (C #, UnityScript i Boo): Możesz programować w systemie Windows i budować system iOS na dowolnej platformie, na której generujesz projekt XCode. Pozwala to również na dalszą integrację z innym kodem Objective-C.

  • Xamarin (C #): Możesz programować w systemie Windows (i uważam, że Linux) i używać komputera z systemem OS X jako hosta kompilacji.

  • Kivy (Python): generuje również projekty XCode.

I możesz znaleźć wiele innych takich projektów, zwłaszcza gdy zaczniesz patrzeć na hybrydowe i mobilne frameworki aplikacji internetowych, takie jak Appcelerator.


0

Nie ma żadnego technicznego powodu, abyś nie był w stanie tworzyć aplikacji iOS na Linuksie. W rzeczywistości dzieje się to już w systemie Windows w Delphi XE. Tam możesz całkowicie tworzyć aplikacje na iOS w systemie Windows. Na końcu jedyne, czego potrzeba, to podpisanie aplikacji. Można to zrobić tylko na komputerze Mac.


0

Istnieje techniczny powód, dla którego Xcode nie pozwoli na tworzenie aplikacji na iOS na innych systemach.

iOS jest pod wieloma względami podobny do OS X. Wiele frameworków jest identycznych lub bardzo blisko. Symulator iOS wykorzystuje to do zapewnienia bardzo szybkiego środowiska testowego. Kiedy Xcode kompiluje aplikację do uruchomienia w symulatorze, tworzy pliki binarne x86, które łączą się z frameworkami, które przeważnie działają na frameworkach OS X. W efekcie powstaje kompilacja debugowania, która działa natywnie na komputerze Mac, która ma doskonałą wydajność.

Jeśli spojrzysz na Androida, tworzy niezależne od platformy aplikacje, które są następnie emulowane w jednym emulatorze Androida. Spowoduje to uruchomienie maszyny wirtualnej, która uruchamia cały stos Androida do debugowania. Istnieją emulatory, które są szybsze niż inne, ale wszystkie z nich są znacznie wolniejsze niż symulator. Zaletą jest to, że są one wieloplatformowe.

Aby Apple zezwalało na budowanie aplikacji na iOS na innych systemach, musiałyby albo przenieść frameworki do tych systemów operacyjnych, aby napisać symulator, albo musiałyby zbudować emulator. Każda z nich byłaby kawałkiem pracy, która zabierałaby trochę czasu na tworzenie nowych funkcji.


0

Chociaż nie można podpisywać aplikacji dla systemu iOS w systemie Linux, a tym samym rozpowszechniać je za pomocą przyjętych metod, można opracowywać (z tymi samymi interfejsami API) w systemie Linux za pomocą systemu Theos. Jest to zestaw narzędzi używany przez społeczność jailbreak do opracowywania aplikacji na iOS i jest on wieloplatformowy. Jeśli twoje urządzenie z iOS jest zepsute, wierzę, że będziesz w stanie wypchnąć skompilowaną aplikację na urządzenie za pośrednictwem libimobiledevice, ale ktoś może mnie poprawić, jeśli się mylę.

Więcej informacji: http://iphonedevwiki.net/index.php/Theos

Planuję wypróbować to w ciągu następnego dnia i dostarczę aktualizacje.


1
Proszę o aktualizacje!
Kyle Strand
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.