iOS / Android platformlar arası geliştirme [kapalı]


113

Bir süredir Java'da Android uygulamaları geliştirmekle uğraşıyorum ve bununla ilgilenmeye başlıyorum. Bununla birlikte, bir iOS sürümüyle başlamak istersem, her şeyi sıfırdan kodlamam gerekir - ki bu istenmeyen bir durumdur.

Hangi platformlar arası çözümlerin mevcut olduğunu ve pratikte ne kadar iyi çalıştığını merak ediyordum. Web uygulamalarını düşünüyordum - belki jQuery Mobile veya Titanium ya da Adobe Flash / Flex / Air kullanarak. Ayrıca henüz bir Mac'im yok ve muhtemelen yatırım yapmam gerekecek.

Yani Sorularım:

  1. İOS / Android (ve / veya diğer cihazlar) için hangi platformlar arası geliştirme ortamları mevcuttur?

  2. Bu araçlarla ilgili deneyiminiz nedir? (gerçekten bilmek istediğim şey bu)


1
Alister, kesinlikle bu tür soruları soran ilk kişi değilsin, yanıtı isteyen ilk kişi de değilsin! :) Hakkında karışık eleştiriler duyduğum PhoneGap'i ve daha çerez kesici olan ancak iyi görünen Red Foundry'yi unutmayın - henüz çapraz platform değil.
makdad

1
PhoneGap ile de gidebilirsiniz. Ben kullandım ve gitmenizi tavsiye ederim. Android'de PhoneGap üzerinde geliştirilen uygulamayı kullanarak bir exe dosyası (iOS için IPA) oluşturmak için bir hüküm bulunmaktadır.
Jayprakash Dubey

Şu anda 2016'nın sonu olduğu ve platformlar arası araç manzarası değiştiği için bu soruya bir güncelleme yapmak istiyorum. Tercih ettiğiniz programlama diline ve ekibinizin aşağıdakilerle en çok xp'ye sahip olduğu yere bağlı olduğunu söyleyebilirim: 1. JavaScript: Phonegap Performansı mobil cihazlarda kötüdür, bu nedenle yerel bileşenlere sahip araçların kullanılması ancak uygulama mantığı için JS önerilir. Seçenekler V-Play ( v-play.net/apps ) veya React ( reactnative.com ) şeklindedir. 2. C #: Xamarin senin arkadaşın. 3. C ++: Qt ( qt.io ) gibi bir C ++ çerçevesi kullanın Yasal Uyarı: Qt tabanlı V-Play'in arkasındaki adamlardan biriyim.
Christian Feldbacher

Cevap: Flutter , rekor sürede iOS ve Android'de yerel arayüzler oluşturmak için Google'ın yeni mobil UI çerçevesi.
naXa

Ayrıca gelecek vaat eden aktif bir haxe.org projesi var.
Eugene Gr. Philippov

Yanıtlar:


104

Feragatname: Çapraz platform çerçevesi oluşturan Particle Code adlı bir şirket için çalışıyorum. Bu alanda bir ton şirket var. Görünüşe göre her hafta yenileri çıkıyor. Size iyi haber: çok seçeneğiniz var.

Bu çerçeveler farklı yaklaşımlar alır ve çoğu temelde farklı sorunları çözmek için tasarlanmıştır. Bazıları oyunlara, bazıları uygulamalara odaklıdır. Şu soruları sorardım:

Ne yazmak istersin Kurumsal uygulama, kişisel verimlilik uygulaması, bulmaca oyunu, birinci şahıs nişancı?

Ne tür bir geliştirme ortamını tercih edersiniz? IDE mi yoksa düz metin editörü mü?

Programlama dilleri hakkında güçlü hisleriniz mi var? Aşina olduğum çerçevelerden ActionScript, C ++, C #, Java, Lua ve Ruby arasından seçim yapabilirsiniz.

Şirketim daha çok oyun alanında, bu yüzden Titanium, PhoneGap ve Sencha gibi JavaScript + CSS çerçeveleriyle pek oynamadım. Ama size oyun odaklı çerçevelerden biraz bahsedebilirim. Oyunlar ve zengin internet uygulamaları, platformlar arası çerçevelerin parlayabildiği bir alandır, çünkü bu uygulamalar görsel olarak benzersiz olmaya daha çok önem veriyor ve yerel kullanıcı arayüzleriyle harmanlamaya daha az önem veriyor. İşte aranacak birkaç çerçeve:

  • Unity www.unity3d.com bir 3D oyun motorudur. Gerçekten çalıştığım diğer geliştirme ortamlarından farklı. 3B modellerle sahneler oluşturuyorsunuz ve nesnelere komut dosyaları ekleyerek davranışı tanımlıyorsunuz. JavaScript, C # veya Boo'da komut dosyası yazabilirsiniz. İOS, Android, Windows, OS X veya konsollarda çalışacak bir 3D fizik tabanlı oyun yazmak istiyorsanız, bu muhtemelen sizin için bir araçtır. Ayrıca 3B varlıkları kullanarak 2B oyunlar da yazabilirsiniz - bunun güzel bir örneği, bağımsız oyun Max ve Magic Marker'dır., Unity'de yazılmış bir 2D fizik tabanlı yan kaydırma çubuğu. Bilmiyorsanız, kontrol etmenizi öneririm (özellikle evinizde çocuklar varsa). Max, PC, Wii, iOS ve Windows Phone 7 için mevcuttur (Unity WinPhone'u desteklemediği için ikinci sürüm bir bağlantı noktası olsa da). Unity, 3B varlıklar ve dokularla tamamlanmış bazı örnek oyunlarla birlikte gelir ve bu, oldukça karmaşık bir ortam olabilecek bir ortamda hızlanmaya gerçekten yardımcı olur.

  • Corona www.anscamobile.com/corona , Lua komut dosyası dilini kullanan ve iOS ve Android'i destekleyen bir 2D oyun motorudur. Corona'nın satış noktası, fizik tabanlı oyunları birkaç satır kodla çok hızlı yazabilme yeteneğidir ve iOS uygulama mağazasındaki çok sayıda Corona tabanlı oyun başarısının bir kanıtıdır. Ortam çok zayıf, bu da bazı insanlara hitap edecek. Bir simülatör ve hata ayıklayıcı ile birlikte gelir. Seçtiğiniz metin düzenleyicinizi eklersiniz ve bir geliştirme ortamınız olur. Temel SDK, düğmeler veya liste kutuları gibi herhangi bir UI bileşeni içermez, ancak aboneler için bir CoronaUI eklentisi mevcuttur.

  • Particle SDK www.particlecode.com , oyunlarda geçmişe sahip, biraz daha genel bir çapraz platform çözümüdür. Bir MVC uygulama modeli kullanarak Java veya ActionScript'te yazabilirsiniz. WYSIWYG UI düzenleyicili Eclipse tabanlı bir IDE içerir. Şu anda Android, iOS, webOS ve Windows Phone 7 cihazları için geliştirmeyi destekliyoruz. Ayrıca web için Flash veya HTML5 çıktısını da alabilirsiniz. Çerçeve başlangıçta poker ve tavla gibi çevrimiçi çok oyunculu sosyal oyunlar için geliştirilmiştir ve karmaşık mantıklı 2D oyunlara ve uygulamalara uygundur. Çerçeve 2D grafikleri destekler ve bir 2D fizik motoru içerir.

NB:

Bugün, Parçacık Kodunun Titanium çapraz platform çerçevesinin yapımcıları olan Appcelerator tarafından satın alındığını duyurduk.

...

1 Ocak 2012 itibariyle, [ Particle Code ] artık [ Particle SDK ] platformunu resmi olarak desteklemeyecektir .

Kaynak

  • Airplay SDK www.madewithmarmalade.com , Visual Studio veya Xcode'da geliştirme yapmanızı sağlayan bir C ++ çerçevesidir. Hem 2D hem de 3D grafikleri destekler. Airplay, iOS, Android, Bada, Symbian, webOS ve Windows Mobile 6'yı hedefliyor. Ayrıca, PSP için AirPlay uygulamaları oluşturmak için bir eklentileri de var. C ++ programım çok paslı, onunla pek oynamadım ama harika görünüyor.

Öğrenme eğrisi açısından, Unity'nin (benim için) en dik öğrenme eğrisine sahip olduğunu, Corona'nın en basit olduğunu ve Particle ve Airplay'in ikisinin arasında bir yerde olduğunu söyleyebilirim.

Bir başka ilginç nokta, çerçevelerin farklı form faktörlerini nasıl işlediğidir. Corona, Flash geliştiricilerinin aşina olacağı dinamik ölçeklendirmeyi destekler. Bunun kullanımı çok kolaydır, ancak iPhone gibi 4: 3 ekrandan yeni qHD Android cihazlarda olduğu gibi 16: 9'a geçerken ekran alanını boşa harcayacağınız anlamına gelir. Particle SDK'nın UI düzenleyicisi, ölçeklenen esnek düzenler tasarlamanıza ve aynı zamanda mizanpajları ayrı ekran boyutları için ayarlamanıza olanak tanır. Bu biraz daha zaman alır, ancak uygulamanın her ekran için özel olarak yapılmış görünmesini sağlar.

Elbette, sizin için neyin işe yarayacağı kişisel zevkinize ve çalışma tarzınıza ve hedeflerinize bağlıdır - bu yüzden bu araçlardan birkaçını indirmenizi ve onlara bir şans vermenizi tavsiye ederim. Tüm bu araçları denemek ücretsizdir.

Ayrıca, bir kamu hizmeti duyurusu koyabilirsem - bu araçların çoğu gerçekten aktif geliştirme aşamasındadır. Beğendiğiniz bir çerçeve bulursanız, kesinlikle geri bildirim gönderin ve onlara neleri beğendiğinizi, neleri sevmediğinizi ve görmek istediğiniz özellikleri bildirin. Bu araçların sonraki sürümlerine neyin gireceğini etkilemek için gerçek bir fırsata sahipsiniz.

Bu yardımcı olur umarım.


Daha fazla kurumsal geliştirme düşünüyordum, ancak eğlence için bu SDK'lardan birine bakmam için bana ilham vermiş olabilirsiniz.
Alister

her çerçeveye bağlantılar yararlı olacaktır
Petrus Theron

2
Güncelleme: Parçacık Kodu, Titanium'un yapımcıları Appcelerator tarafından satın alındı, bu nedenle Parçacık SDK'nın kaderi belirsiz. Airplay adını açıklanamaz bir şekilde "Marmelat" olarak değiştirdi.
DocDude

15

MonoTouch ve MonoDroid, ancak Attachmate'in bu kısmına ne olacağı kimsenin tahmin etmediği. Elbette mono çözümlerle bile hala platformlar arası olmayan görünümler oluşturuyorsunuz, ancak fikir, iş mantığının yeniden kullanılması.

Http://www.xamarin.com/ adresinde bir göz atın, ne bulduklarını görmek ilginç olacaktır.


12

PhoneGap + jQuery Mobile'da çok basit bir şey yapma deneyimim iyiydi. Bunu iOS için hızlı bir şekilde yapabildim. Ancak Android telefonlarımda bazı değişiklikler yapmadan çalışmadı. Proje, fotoğraf çekmek ve bunları bir web sitesine göndermek için çok basit bir uygulamaydı. Ve günün sonunda, gerçek bir yerel uygulamaya kıyasla "hantal" hissettirdi.

Kolay bir çapraz platform geliştirme olacağına inanmıyorum. Tarayıcının alacağınız kadar yakın olduğunu düşünüyorum. PhoneGap gibi bir şey seçerek, sadece bir dizi acı noktasını farklı bir dizi sorun için takas ettiğinizi düşünüyorum.


7

Çapraz platform geliştirme için tam teşekküllü bir çerçeve kullanmak istemiyorsanız, seçenek olarak C ++ 'ya bir göz atın. iOS, uygulama mantığınız için Objective-C ++ aracılığıyla C ++ kullanmayı tam olarak destekler. Android'in NDK aracılığıyla C ++ desteğinin, iş mantığınızı yalnızca bazı performans açısından kritik kod parçacıkları yerine C ++ ile yapmak için ne kadar uygun olduğunu bilmiyorum, ancak bu kullanım durumu iyi destekleniyorsa, deneyebilirsiniz.

Bu yaklaşım elbette yalnızca uygulama mantığınız projenizin en büyük bölümünü oluşturuyorsa anlamlıdır, çünkü kullanıcı arayüzleri her platform için ayrı ayrı yazılmalıdır.

Aslında, C ++, en yaygın olarak desteklenen tek programlama dilidir (C haricinde) ve bu nedenle çoğu büyük çapraz platform uygulamasının temel dilidir.


3
Btw, Android aslında yalnızca C ++ ile yazılan etkinlikleri doğrudan destekliyor gibi görünüyor: developer.android.com/reference/android/app/NativeActivity.html
yeoman

4
Tek bir uyarı ile - NativeActivity'den Java erişimi yok (yani 3. taraf kitaplık entegrasyonu veya SDK erişimi yok). Birçok amaç için uygunsuz hale getirir.
rbgrn

6

Bu geliştirme alanına yeni bakmaya başlamama rağmen, sanırım bu temel fark şu: bazı araçlar orijinal kodu koruyor ve bazı araçlar yerel olarak ...

örneğin, PhoneGap yazdığınız HTML / CSS / JS kodunu saklar ve onu bir uygulama olarak nitelendirilmek için yeterli iOS koduyla sarmalar, oysa Appcelerator size bir XCode projesi sunar ... bu yüzden iOS'a aşina değilseniz, o gerçekten PhoneGap üzerinden size herhangi bir fayda sağlamaz, ama eğer DO biraz biliyorum, o sadece bir biti daha uzun kodlama çaba sonra yerli versiyonlarını çimdik daha yeteneği size verebilir.

Appcelerator'ı kendim kullanmadım, ancak birkaç hafta önce ekip üyelerimizden birinin onu kullanarak yaklaşık 24 saat içinde tam bir iPad uygulaması yaptığı bir proje üzerinde çalıştım.

Ve evet, aslında Apple'a göndermek için bir Mac almanız gerekecek, ancak bu birincil çalışma platformunuz değilse, ucuza gidebilirsiniz.


3

Cappuccino veya PhoneGap .

Bazen bir kısayol bulmaya çalışmak size zaman kazandırmaz veya benzer bir son ürün sağlamaz.



3

Daha önce LUA kullandıysanız, Corona SDK'nın IOS ve Android üzerinde çalışan uygulamalar oluşturabileceğini deneyebilirsiniz.

https://coronalabs.com/

Onu indirdim ve bazılarını karıştırdım, LUA'yı normal kodlama dili zorlukları / sınırlamaları olmadan öğrenmesi çok kolay bir komut dosyası dili buluyorum ...


2

Son 18 aydır kullandığımız ve birkaç oyun çıkardığımız BatteryTech de var. http://www.batterypoweredgames.com/batterytech

Tüm C ++, Android ve iOS desteği, tüm kullanıcılar tam kaynak alır. Yeni v2, lua bağlamaları içerir.


3
30.05.2012 itibarıyla: 5 veya daha az geliştirici için lisans için 200 ABD doları. 5'ten fazlası için 800 $ Açık kaynak projeleri için kullanılamaz.
Roger Dahl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.