Mengembangkan aplikasi seluler lintas platform [ditutup]

109

Semakin banyak platform seluler diluncurkan dan SDK tersedia untuk pengembang. Ada berbagai platform mobile yang tersedia: Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo dll.

Dan pembuatan aplikasi lintas platform membuat pusing para pengembang. Saya mencari hal-hal umum di seluruh platform yang akan membantu pengembang yang ingin mem-port aplikasi ke semua platform. Seperti apa resolusi layar diff, metode input, dukungan gl terbuka dll. Harap bagikan detail yang Anda ketahui untuk platform mana pun.

Atau apakah ada kemungkinan, dengan menulis kode dalam html (jenis widget) dan memuatnya ke dalam aplikasi asli. Saya tahu tentang android, di mana kita bisa menambahkan tampilan web ke dalam aplikasi dengan meneleponsetContentView(view)

Harap bagikan detail kelas tempat kami dapat menambahkan tampilan html ke dalam aplikasi asli dari berbagai jenis platform yang Anda ketahui.

Tujuan utas ini adalah membagikan detail umum di seluruh pengembang. menandai sebagai wiki komunitas.

Alat & pustaka lintas platform

sohilv.dll
sumber
1
Sementara saya menemukan satu utas menarik yang terkait dengan yang ini, stackoverflow.com/questions/3326110/…
sohilv
posting bagus lainnya tentang dev lintas platform: stackoverflow.com/questions/51988/…
sohilv
1
Memilih untuk menutup ini sebagai duplikat. Ini terlalu penting untuk dibagi menjadi dua pertanyaan. stackoverflow.com/questions/51988/…
ripper234
1
Saya baru-baru ini membuat blog tentang stronia.com/2014/05/building-cross-platform-mobile-apps.html
Anshu Dwibhashi

Jawaban:

97

Jawaban saya di sini mencakup beberapa batasan teknis alat lintas-platfrom tetapi izinkan saya memperluas sedikit:

Saya pikir alat lintas platform secara historis selalu juga-rans karena alat semacam itu memiliki fokus filosofis yang salah.

Semua nilai jual untuk alat cross-plaform adalah manfaat yang mereka berikan kepada pengembang . Mereka dijual dengan gagasan bahwa mereka mengizinkan pengembang untuk menulis-sekali-dijalankan-di mana saja. Mereka dijual dengan gagasan bahwa mereka mengizinkan pengembang untuk memperluas pasar mereka tanpa mempelajari API baru. Mereka dijual dengan gagasan bahwa mereka mengizinkan pengembang untuk memangkas biaya dan waktu ke pasar.

Alat cross-plaform TIDAK dijual adalah manfaat yang mereka berikan kepada pengguna akhir .

Manfaat bagi pengguna akhir bukanlah nilai jual karena pengembangan lintas platform jarang menguntungkan bagi pengguna akhir. Pengguna akhir tidak peduli seberapa keras pengembang harus bekerja untuk membawa produk ke pasar. Mereka juga tidak peduli berapa banyak platform tempat aplikasi dapat berjalan ketika mereka tidak menggunakan kecuali satu platform. Mereka hanya peduli jika aplikasi melakukan apa yang mereka butuhkan pada perangkat keras yang mereka butuhkan untuk menjalankannya. Kecuali jika mereka memiliki kebutuhan khusus untuk menjalankan aplikasi di banyak platform berbeda, fakta bahwa hal itu tidak memberi mereka nilai.

Sebaliknya, kompromi yang tak terhindarkan dalam membuat API lintas platform berarti bahwa semua aplikasi yang dibuat oleh API akan memiliki tingkat B terbaik di setiap platform. Mereka tidak akan pernah menjadi alat terbaik untuk digunakan di setiap platform.

Semua ini berarti bahwa dalam sebagian besar kasus penggunaan, alat lintas platform memberikan produk yang lebih rendah kepada pengguna akhir dibandingkan dengan yang dibuat dengan API khusus platform. Pengguna akhir akan selalu memiliki pilihan yang lebih baik.

Anda menghasilkan uang dalam jangka panjang dengan memberi pengguna akhir alat yang paling berguna. Jika Anda tidak berkonsentrasi secara filosofis untuk membuat hidup pengguna akhir lebih mudah dan lebih produktif, Anda akan menemui ajal sejak awal. Pengguna akhir memiliki banyak pilihan dan jika alat Anda bukan salah satu yang terbaik, Anda tidak akan berhasil di pasar.

Anda sebaiknya hanya menggunakan alat lintas platform jika menurut Anda, "pengguna akan mendapatkan keuntungan dengan menjalankan aplikasi ini di banyak platform berbeda." Jika Anda mulai melihat alat lintas platform semata-mata karena alat tersebut akan membuat hidup Anda (pengembang) lebih mudah, Anda telah memilihnya untuk alasan yang salah dan alat tersebut akan lebih merugikan Anda daripada membantu.

TechZen
sumber
52
Pekerjaan yang lebih sedikit (tidak perlu) bagi para pengembang berarti siklus pembaruan lebih cepat, fitur baru lebih cepat, perbaikan bug lebih cepat, dan sebagainya. Dengan tenaga yang sama lebih banyak yang bisa dicapai. Saya menganggap ini sebagai keuntungan bagi pengguna akhir.
schoetbi
10
Secara teori, pengembangan yang lebih cepat mungkin lebih baik bagi pengguna akhir tetapi itu bukan dasar filosofis kebanyakan API lintas platform. Saya telah melihat banyak upaya untuk menggunakan alat semacam itu di banyak lingkungan dan fokusnya selalu membuat hidup pengembang lebih mudah dengan mengorbankan kualitas produk akhir. Selain itu, janji akan lebih cepat dan lebih murah jarang terwujud. Tampaknya selalu ada pertunjukan berhenti halangan di suatu tempat yang memakan sebagian besar waktu yang dihemat.
TechZen
5
Untuk menyampaikan maksud saya, pertimbangkan ini: API lintas platform ada untuk berbagai kelas perangkat keras dan OS. Berapa banyak aplikasi lintas platform yang Anda gunakan secara pribadi secara teratur? Berapa banyak aplikasi lintas platform yang pernah Anda gunakan yang Anda anggap baik? Orang-orang telah mendorong API lintas platform karena mereka memiliki lebih dari satu platform tetapi mereka tidak pernah benar-benar berhasil di mana pun. Mereka tidak berhasil karena tidak menghasilkan aplikasi yang paling berguna bagi pengguna akhir.
TechZen
4
@TechZen - Saya menggunakan StackOverflow sekarang di browser web saya dan tidak melihat alasan untuk mencari klien asli. Saya pikir Anda terlalu menggeneralisasi klaim Anda.
Youval Bronicki
4
Saya agak kesal karena debat filosofis subjektif semacam ini mendapat nilai yang benar di situs web teknis. Yang lebih buruk, tesis posting ini tidak valid untuk sebagian besar perangkat lunak utama yang kita gunakan saat ini: Browser web bersifat lintas platform; Photoshop, MS Office, Dropbox, dan lainnya adalah lintas platform; cukup buka menu Start atau Finder dan buat daftar orang-orang spesifik platform - kemungkinan besar adalah menemukan utilitas-ware kecil. Argumen Anda akan valid jika Anda yakin ponsel berbeda secara radikal (asumsi yang sangat valid), tetapi tampaknya tidak ada argumen untuk membangun fondasi tersebut.
kizzx2
14

Ada beberapa pendekatan untuk pengembangan lintas platform pada perangkat seluler. Tentu mereka semua memiliki keterbatasan. Tidak ada solusi yang berhasil memanfaatkan semua fungsi perangkat seperti yang dapat dilakukan aplikasi asli.

Menggunakan kembali kode

Meskipun semua OS seluler tidak menggunakan bahasa pengembangan dan API yang sama, Anda terkadang dapat berbagi beberapa kelas atau kode tingkat logika.

C ++ misalnya mungkin dapat digunakan kembali untuk aplikasi iOS , untuk aplikasi Android dengan menggunakan NDK , untuk aplikasi Symbian karena dikembangkan di C ++, dll.

Beberapa solusi juga menawarkan kemungkinan untuk menulis aplikasi dalam bahasa lain selain yang biasanya digunakan oleh perangkat. Yang paling terkenal (sebenarnya satu-satunya yang saya tahu) bersifat komersial dan berdasarkan proyek Mono (pengembangan C #):

Tetapi saya tidak yakin kita benar-benar dapat menyebut pengembangan lintas platform ini karena penggunaan ulang kode dibatasi tergantung pada perangkatnya:

  • Windows Phone 7 tidak akan mengizinkan pengembangan kode asli (mungkin dalam pembaruan lebih lanjut)
  • AFAIK mono like project tidak ada untuk semua platform (belum?) Bada, webOS, maemo, dll.

Dan bagian UI juga tetap spesifik untuk setiap perangkat.

pengembangan web

Jawaban biasa ketika bertanya tentang pengembangan lintas platform untuk ponsel adalah pengembangan web. Kami kemudian akan membutuhkan pembungkus, yang akan menggunakan peramban seluler, untuk membuatnya terlihat dan berperilaku seperti aplikasi asli. Begitulah beberapa kerangka kerja lintas platform yang akan kita lihat lebih lanjut bekerja.

Munculnya HTML5 membawa fungsionalitas pengembangan web yang hanya dapat dilakukan dengan aplikasi asli seperti geolokasi, aplikasi off-line, penyimpanan lokal.

Kami dapat menemukan lebih banyak kerangka kerja untuk mengembangkan aplikasi web untuk seluler dengan tampilan dan nuansa asli dengan memanfaatkan standar web terbaru HTML5, CSS3, Js:

Tapi HTML5 masih sangat muda dan implementasinya mungkin berbeda dari satu browser ke browser lainnya. Sebagian besar peramban seluler default menggunakan mesin WebKit (pengecualian utamanya adalah ponsel / ponsel Windows yang menggunakan Internet Explorer) dan meskipun demikian mereka tidak selalu mendukung fungsi yang sama . Basis data lokal masih canggung untuk digunakan dan kami tidak dapat memastikan bagaimana ini akan diterapkan oleh browser yang berbeda. Selain itu, bahkan dengan HTML5, pengembangan web masih sangat terbatas dibandingkan dengan aplikasi asli. Anda tidak dapat mengakses kontak, kamera, akselerometer, dll.

Sunting: Awal bulan ini W3C telah menyampaikan beberapa peringatan tentang evolusi HTML5: Artikel dari ZDNet

Jadi itu hanya akan sesuai dengan kategori aplikasi yang terbatas.

Kerangka lintas platform

Dan kami memiliki kerangka aplikasi seluler lintas platform. Dengan itu Anda mungkin dapat mengembangkan sekali dan menerapkannya pada platform yang berbeda. Solusi ini biasanya berfokus pada iOS dan Android dan mengandalkan mesin WebKit. Mereka menawarkan lebih banyak interaksi dengan fungsi telepon sambil mengembangkan dengan teknologi web. Yang paling terkenal adalah Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium. Tetapi banyak orang lain di luar sana dan tidak semua menggunakan teknik yang sama seperti MoSync yang menerjemahkan kode Anda ke bahasa perantara itu sendiri sebelum menyusunnya untuk platform yang diinginkan.

[1] Ingatlah bahwa Apple memiliki kebijakan khusus tentang aplikasi yang ditulis untuk platform mereka. Mereka tampaknya tidak memblokir aplikasi ini pada tanggal ini, tetapi itu adalah informasi yang harus diperhitungkan. Edit: Apple telah mengubah kebijakan ini sejak 9 September.

Jla
sumber
6

Anda mendapatkan beberapa kesamaan saat menerapkan sebagai aplikasi web (html5 seperti yang disebutkan di atas) tetapi untuk aplikasi asli yang kaya, API sangat berbeda untuk berbagai ponsel cerdas.

HTML5 mungkin sedikit meningkatkan hal-hal tetapi untuk melakukan hal-hal menarik Anda harus menjadi yang asli.

Ada kerangka kerja smartphone 'lintas platform' seperti Phonegap tetapi saya sering mendengar hal buruk tentang menggunakannya untuk pekerjaan "nyata". (banyak biaya tambahan dll)

seand
sumber
5

Ya, html5 sedang menarik perhatian. Anda juga harus melihat konsorsium & platform ini di Q4. Tidak yakin tentang keberhasilan proyek itu, karena kedengarannya seperti tantangan besar, tetapi berikut detailnya:

Situs web: http://www.wholesaleappcommunity.com/default.aspx

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

WAC bertujuan untuk mempublikasikan spesifikasi awal dan komponen SDK-nya kepada pengembang pada bulan November. Spesifikasi ini akan didasarkan pada standar W3C dan menciptakan platform yang kuat untuk mengembangkan aplikasi web seluler yang kaya. WAC juga akan menyediakan kompatibilitas mundur untuk perangkat berdasarkan spesifikasi JIL dan BONDI saat ini. ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021 )

.

Ini adalah koalisi internasional dari sekitar 25 perusahaan telekomunikasi yang bertujuan untuk menciptakan platform yang terbuka untuk semua pengembang dan menjual ke semua pengguna ponsel. ( http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/ )

Mathias Conradt
sumber
1

Sejauh yang saya tahu, sebagian besar perangkat tersebut dapat menjalankan ini:

Java ME - Platform Aplikasi Paling Di mana-mana untuk Perangkat Seluler

Saya pikir ini bisa menjadi contoh yang baik dan buruk.

Fozi
sumber
Sebenarnya, tidak ada java di iPhone, dan sejauh yang saya tahu, java saya tidak berjalan di android
Alaa Nassef
Pengembangan Android secara masif adalah Java. developer.android.com/reference/java/net/package-summary.html
Nick Garvey
Saya tidak tahu detailnya, tetapi Avian JVM memungkinkan java untuk berjalan di perangkat iOS.
Quazi Irfan