Platformlar arası mobil uygulama geliştirme [kapalı]


109

Giderek daha fazla mobil platform piyasaya sürülüyor ve SDK'lar geliştiricilere sunuluyor. Çeşitli mobil platformlar mevcuttur: Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo vb.

Ve çapraz platform uygulaması yapmak, geliştiriciler için baş ağrısıdır. Uygulamayı tüm platformlara taşımak isteyen geliştiricilere yardımcı olacak platformlar arasında ortak şeyler arıyorum. Farklı ekran çözünürlükleri, giriş yöntemleri, açık gl desteği vb. Gibi, lütfen herhangi bir platform için bildiğiniz ayrıntıları paylaşın.

Veya html'de kod yazıp (bileşen türü) yerel uygulamaya yükleyerek olasılıklar var mı? Arayarak uygulamaya web görünümünü ekleyebileceğimiz android hakkında bilgi sahibiyimsetContentView(view)

Lütfen html görünümünü bildiğiniz farklı platform türlerinin yerel uygulamasına ekleyebileceğimiz sınıf ayrıntılarını paylaşın.

Bu ileti dizisinin amacı, geliştiriciler arasında ortak ayrıntıları paylaşmaktır. topluluk wiki olarak işaretleniyor.

Çapraz platform araçları ve kitaplık


1

platformlar arası geliştirmeyle ilgili bir başka güzel gönderi: stackoverflow.com/questions/51988/…
sohilv

1
Bunu kopya olarak kapatmak için oy verildi. Bu, iki soruya bölmek için çok önemlidir. stackoverflow.com/questions/51988/…
ripper234

Yanıtlar:


97

Buradaki cevabım , cross-platfrom araçlarının bazı teknik sınırlamalarını kapsıyor, ancak biraz genişletmeme izin verin:

Bence platformlar arası araçlar tarihsel olarak her zaman aynı zamanda bir araç olmuştur çünkü bu tür araçlar yanlış felsefi odağa sahiptir.

Çapraz platform araçları için tüm satış noktaları, geliştiricilere getirdikleri avantajlardır . Geliştiricilerin her yerde bir kez yazmasına izin verdikleri fikriyle satılıyorlar . Geliştiricilerin yeni API'leri öğrenmeden pazarlarını genişletmelerine izin verdikleri fikriyle satılıyorlar . Geliştiricilerin maliyeti ve pazara sunma süresini kısaltmalarına izin verdikleri fikriyle satılıyorlar .

Hangi çapraz platform aracı DEĞİLDİR? satılan olduğunu onlar son kullanıcılara getirmek yarar .

Son kullanıcıya fayda sağlamak bir satış noktası değildir çünkü platformlar arası geliştirme nadiren son kullanıcı için bir avantajdır. Son kullanıcı, geliştiricinin ürünü piyasaya sürmek için ne kadar çok çalışması gerektiğini umursamıyor. Tek bir platform kullanmadıklarında uygulamanın kaç platformda çalışabileceği de umurlarında değil. Sadece uygulamanın, onu çalıştırmak için ihtiyaç duydukları donanımda yapıp yapmamasını önemsiyorlar. Uygulamayı birçok farklı platformda çalıştırmak için özel bir ihtiyaçları olmadıkça, yaptığı gerçeği onlara hiçbir değer katmaz.

Tersine, platformlar arası bir API oluşturmanın kaçınılmaz tavizleri, API tarafından oluşturulan tüm uygulamaların her platformda en iyi şekilde B sınıfı olacağı anlamına gelir. Her platformda kullanılacak en iyi araç asla olmayacaklar.

Bütün bunlar, çoğu kullanım durumunda, platformlar arası araçların, platforma özel API'lerle yapılanlara kıyasla son kullanıcıya daha düşük bir ürün sunduğu anlamına gelir. Son kullanıcı her zaman daha iyi bir seçeneğe sahip olacaktır.

Son kullanıcılara en kullanışlı araçları vererek uzun vadede para kazanırsınız. Son kullanıcının hayatını daha kolay ve daha üretken hale getirmeye felsefi olarak konsantre olmazsanız, başlangıçtan itibaren hemen hemen ölüme mahkumsunuzdur. Son kullanıcıların birçok seçeneği vardır ve aracınız en iyilerden biri değilse, onu piyasada yapamazsınız.

Platformlar arası araçları yalnızca, "kullanıcılar bu uygulamayı birçok farklı platformda çalıştırmanın gerçekten fayda sağlayacağını" düşünüyorsanız kullanmalısınız. Çapraz platform araçlarına yalnızca (geliştiriciler) hayatınızı kolaylaştıracakları için bakmaya başlarsanız, onları yanlış bir nedenle seçmişsinizdir ve size yardımcı olacaklarından daha fazla zarar verirler.


52
Geliştiriciler için çok daha az (gereksiz) çalışma, daha hızlı güncelleme döngüleri, daha hızlı yeni özellikler, daha hızlı hata düzeltmeleri ve benzeri anlamına gelir. Aynı insan gücü ile daha fazlası elde edilebilir. Bunu son kullanıcı için bir fayda olarak görüyorum.
schoetbi

10
Teoride, daha hızlı geliştirme, son kullanıcı için daha iyi olabilir, ancak çoğu çapraz platform API'sinin felsefi dayanağı bu değildir. Bu tür araçları birçok ortamda kullanmak için birçok girişim gördüm ve odak noktası her zaman nihai ürünün kalitesi pahasına geliştiricinin hayatını kolaylaştırmaktır. Dahası, daha hızlı ve daha ucuz olma vaadi nadiren suya düşer. Her zaman biriktirilen zamanın çoğunu yiyen bir yerde durma şovu var gibi görünüyor.
TechZen

5
Amacımı eve götürmek için şunu düşünün: Platformlar arası API'ler birçok farklı donanım ve işletim sistemi sınıfı için mevcuttur. Kişisel olarak düzenli olarak kaç tane çapraz platform uygulaması kullanıyorsunuz? İyi düşündüğünüz kaç tane çapraz platform uygulaması kullandınız? İnsanlar, birden fazla platform olduklarından beri platformlar arası API'leri zorluyorlar, ancak hiçbir yerde gerçekten başarılı olamadılar. Başarılı değiller çünkü son kullanıcılar için en kullanışlı uygulamaları üretmiyorlar.
TechZen

4
@TechZen - Şimdi web tarayıcımda StackOverflow kullanıyorum ve yerel bir istemci aramak için herhangi bir neden görmüyorum. Sanırım iddialarını fazla genelleştiriyorsun.
Youval Bronicki

4
Bu tür öznel felsefi tartışmaların teknik bir Web sitesinde doğru notu almasına oldukça üzülüyorum. Daha da kötüsü, bu yazının tezi bugün kullandığımız çoğu büyük yazılım için geçersiz: Web tarayıcıları çapraz platformdur; Photoshop, MS Office, Dropbox ve öğeler çapraz platformdur; sadece Başlat menünüzü veya Finder'ı açın ve platforma özgü adamları listeleyin - büyük olasılıkla küçük yardımcı yazılımları bulma şansınız vardır. Cep telefonlarının radikal bir şekilde farklı olduğuna inanıyorsanız (oldukça geçerli bir varsayım) argümanınız geçerli olacaktır, ancak bu temeli inşa etmek için hiçbir argüman yok gibi görünüyor.
kizzx2

14

Mobil cihazlarda platformlar arası geliştirmeye yönelik birkaç yaklaşım vardır. Elbette hepsinin sınırları var. Hiçbir çözüm, yerel bir uygulamanın yapabildiği gibi aygıtın tüm işlevlerinden yararlanmayı başaramaz.

Kodu yeniden kullanma

Tüm mobil işletim sistemleri aynı geliştirme dilini ve API'yi kullanmasa da bazen bazı sınıfları veya mantık katmanı kodunu paylaşabilirsiniz.

Örneğin C ++, muhtemelen bir iOS uygulaması için, NDK kullanılarak bir Android uygulaması için, C ++ ile geliştirildikleri için bir Symbian uygulaması için yeniden kullanılabilir .

Bazı çözümler, uygulamayı normalde cihaz tarafından kullanılandan farklı bir dilde yazma imkanı da sunar. En ünlüsü (aslında bildiğim tek kişi) ticari ve Mono projesine dayanıyor (C # geliştirme):

Ancak, kodun yeniden kullanımı cihaza bağlı olarak sınırlı olduğu için bu platformlar arası geliştirme olarak adlandırabileceğimizden emin değilim:

  • Windows Phone 7 yerel kod geliştirmeye izin vermez (belki daha sonraki güncellemelerde)
  • AFAIK mono benzeri proje tüm platformlar için (henüz?) Bada, webOS, maemo vb. Mevcut değildir.

Ve UI kısmı da her cihaza özgü kalır.

web Geliştirme

Mobil cihazlar için platformlar arası geliştirme sorulduğunda normal bir cevap web geliştirmedir. Daha sonra, yerel bir uygulama gibi görünmesi ve davranması için mobil tarayıcıyı kullanacak bir sarmalayıcıya ihtiyacımız olacak. İşte ileride göreceğimiz çapraz platform çerçevesinin bir kısmı bu şekilde.

HTML5'in yükselişi, yalnızca coğrafi konum, çevrimdışı uygulama, yerel depolama gibi yerel bir uygulamayla yapılabilen web geliştirme işlevlerini beraberinde getiriyor.

En son web standartları HTML5, CSS3, Js'den yararlanarak, yerel bir görünüme ve hisse sahip mobil cihazlar için web uygulaması geliştirmek için gittikçe daha fazla çerçeve bulabiliriz:

Ancak HTML5 hala çok genç ve uygulama bir tarayıcıdan diğerine farklılık gösterebilir. Varsayılan mobil tarayıcıların çoğu WebKit motorunu kullanır (ana istisna Windows cep telefonu / Internet Explorer kullanan telefondur) ve bu durumda bile aynı işlevleri desteklemiyorlar . Yerel veritabanıyla çalışmak hala garip ve farklı tarayıcılar tarafından nasıl uygulanacağından emin olamıyoruz. Dahası, HTML5 ile bile web geliştirme, yerel bir uygulamaya kıyasla hala çok sınırlıdır. Kişilere, kameraya, ivme ölçere vb. Erişemezsiniz.

Düzenleme: Bu ayın başlarında W3C, HTML5'in evrimi hakkında bazı uyarılar verdi: ZDNet'ten Makale

Bu nedenle, yalnızca sınırlı bir uygulama kategorisine uyacaktır.

Çapraz platform çerçeveleri

Ve çapraz platform mobil uygulama çerçevelerine sahibiz. Muhtemelen bir kez geliştirebilir ve farklı platformlarda konuşlandırabilirsiniz. Bu çözümler genellikle iOS ve Android'e odaklanır ve WebKit motoruna dayanır. Web teknolojileriyle geliştirilirken telefon işlevleriyle daha fazla etkileşim sunarlar. En bilinenleri Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium'dur. Ancak diğerleri orada ve hepsi MoSync gibi kodunuzu istenen platform için derlemeden önce kendi ara diline çeviren aynı tekniği kullanmıyor.

[1] Apple'ın kendi platformu için yazılmış uygulamalarla ilgili özel bir politikası olduğunu unutmayın . Şu anda bu uygulamaları engelliyor gibi görünmüyorlar ancak bu dikkate alınması gereken bir bilgidir. Düzenleme: Apple, 9 Eylül'den beri bu politikayı değiştirdi .


6

Bir web uygulaması (yukarıda belirtildiği gibi html5) olarak konuşlandırırken bazı ortak özellikler elde edersiniz, ancak zengin yerel uygulamalar için API'ler çeşitli akıllı telefonlar için tamamen farklıdır.

HTML5 bazı şeyleri biraz iyileştirebilir, ancak ilginç şeyler yapmak için yerel olmanız gerekir.

Phonegap gibi 'platformlar arası' akıllı telefon çerçeveleri var, ancak bunu "gerçek" iş için kullanmakla ilgili çoğunlukla kötü şeyler duydum. (çok fazla ek yük vb.)


5

Evet, html5 biraz dikkat çekiyor. Ayrıca 4. çeyrekte gelecek bu konsorsiyuma ve platforma da bakmalısınız. Bu projenin başarısından emin değilim, çünkü büyük bir zorluk gibi görünse de, işte ayrıntılar:

Web sitesi: http://www.wholesaleappcommunity.com/default.aspx

Haberler: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=%22Wholesale+Applications+Community%22

WAC, SDK'sının ilk özelliklerini ve bileşenlerini Kasım ayında geliştiricilere yayınlamayı hedefliyor. Bu belirtim, W3C standartlarını temel alacak ve zengin mobil web uygulamaları geliştirmek için güçlü bir platform oluşturacaktır. WAC ayrıca, mevcut JIL ve BONDI spesifikasyonlarına dayalı olarak cihazlar için geriye dönük uyumluluk sağlayacaktır. ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021 )

.

Tüm geliştiricilere açık bir platform oluşturmayı ve tüm cep telefonu kullanıcılarına satış yapmayı amaçlayan yaklaşık 25 telekom şirketinden oluşan uluslararası bir koalisyondur. ( http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/ )


1

Bildiğim kadarıyla bu cihazların çoğu bunu çalıştırabiliyor:

Java ME - Mobil Cihazlar için En Yaygın Uygulama Platformu

Bence bu hem iyi hem de kötü bir örnek olabilir.


Aslında, iPhone'da java yok ve bildiğim kadarıyla java me android üzerinde çalışmıyor
Alaa Nassef

Android geliştirme, büyük ölçüde Java'dır. developer.android.com/reference/java/net/package-summary.html
Nick Garvey

Ayrıntıları bilmiyorum ama Avian JVM, java'nın iOS cihazlarda çalışmasına izin veriyor.
Quazi Irfan
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.