Saya seorang pengembang web dan saya ingin memindahkan produk web saya ke iPhone. Salah satu produknya seperti Google Maps: tampilkan peta di layar ponsel, Anda dapat menarik atau mengubah ukuran peta dan melihat beberapa informasi yang kami tambahkan ke peta.
Saya tahu ada beberapa teknologi yang memungkinkan Anda menggunakan HTML, CSS, dan Javascript untuk mengembangkan aplikasi iPhone asli. Saya telah mengidentifikasi beberapa:
Apakah ada produk serupa lainnya? Apa perbedaan di antara mereka? Yang mana yang harus saya pilih?
iphone
android
html
mobile-website
Mickey Shine
sumber
sumber
Jawaban:
Saya mendaftar dengan stackoverflow hanya untuk tujuan mengomentari jawaban yang paling banyak dipilih di atas. Yang buruk adalah stackoverflow tidak mengizinkan anggota baru untuk mengirim komentar. Jadi saya harus membuat komentar ini lebih seperti jawaban.
Jawaban Rory Blyth berisi beberapa poin valid tentang dua kerangka kerja javascript seluler. Namun, poin kuncinya salah. Yang benar adalah bahwa Titanium dan PhoneGap lebih mirip daripada berbeda. Keduanya memaparkan fungsi ponsel melalui serangkaian API javascript, dan logika aplikasi (html, css, javascript) berjalan di dalam kontrol WebView asli.
PhoneGap bukan hanya pembungkus asli aplikasi web. Melalui API javascript PhoneGap, "aplikasi web" memiliki akses ke fungsi ponsel seperti Geolokasi, Kamera Akselerometer, Kontak, Basis Data, sistem file, dll. Pada dasarnya semua fungsi yang disediakan SDK ponsel dapat "dijembatani" ke dunia javascript. Di sisi lain, aplikasi web normal yang berjalan di browser web seluler tidak memiliki akses ke sebagian besar fungsi ini (keamanan menjadi alasan utama). Karena itu, aplikasi PhoneGap lebih merupakan aplikasi seluler daripada aplikasi web. Anda tentu dapat menggunakan PhoneGap untuk membungkus aplikasi web yang sama sekali tidak menggunakan API PhoneGap, tapi bukan itu tujuan PhoneGap dibuat.
Titanium TIDAK mengkompilasi kode html, css atau javascript Anda menjadi "bit asli". Mereka dikemas sebagai sumber daya ke bundel yang dapat dieksekusi, mirip seperti file gambar tertanam. Ketika aplikasi berjalan, sumber daya ini dimuat ke kontrol UIWebView dan dijalankan di sana (sebagai javascript, bukan bit asli, tentu saja). Tidak ada yang namanya kompiler javascript-to-native-code (atau to-objective-c). Ini dilakukan dengan cara yang sama di PhoneGap juga. Dari sudut pandang arsitektur, kedua kerangka ini sangat mirip.
Sekarang, apakah mereka berbeda? Iya. Pertama, Titanium tampaknya lebih kaya fitur daripada PhoneGap dengan menjembatani lebih banyak fungsi ponsel ke javascript. Yang paling mencolok, PhoneGap tidak mengekspos banyak komponen UI asli (jika ada) ke javascript. Titanium, di sisi lain, memiliki API UI komprehensif yang dapat dipanggil dalam javascript untuk membuat dan mengontrol semua jenis kontrol UI asli. Memanfaatkan API UI ini, aplikasi Titanium bisa terlihat lebih "asli" daripada aplikasi PhoneGap. Kedua, PhoneGap mendukung lebih banyak platform ponsel daripada Titanium. API PhoneGap lebih umum dan dapat digunakan pada platform yang berbeda seperti iPhone, Android, Blackberry, Symbian, dll. Titanium terutama menargetkan iPhone dan Android setidaknya untuk saat ini. Beberapa API-nya adalah platform spesifik (seperti API iPhone UI).
Jadi, jika kepedulian Anda terhadap aplikasi Anda adalah menjadikannya lebih "asli", Titanium adalah pilihan yang lebih baik. Jika Anda ingin dapat "port" aplikasi Anda ke platform lain dengan lebih mudah, PhoneGap akan lebih baik.
Diperbarui 8/13/2010: Tautan ke jawaban karyawan Titanium untuk pertanyaan Mickey.
Diperbarui 12/04/2010: Saya memutuskan untuk memberikan posting ini tinjauan tahunan untuk menjaga informasinya tetap terkini. Banyak hal yang mengalami perubahan dalam setahun yang membuat sebagian informasi di pos awal menjadi usang.
Perubahan terbesar datang dari Titanium. Awal tahun ini, Appcelerator merilis Titanium 1.0, yang berangkat secara drastis dari versi sebelumnya dari sudut pandang arsitektur. Di 1.0, kontrol UIWebView tidak lagi digunakan. Sebagai gantinya, Anda memanggil Titanium API untuk fungsi UI apa pun. Perubahan ini berarti beberapa hal:
UI aplikasi Anda menjadi sepenuhnya asli. Tidak ada lagi UI web di aplikasi Anda karena Titanium API asli mengambil alih kendali semua kebutuhan UI Anda. Titanium layak mendapatkan banyak pujian dengan memelopori perbatasan "Cross-Platform Native UI". Ini memberi programmer yang lebih suka tampilan dan nuansa UI asli tetapi tidak suka bahasa pemrograman resmi alternatif.
Anda tidak akan dapat menggunakan HTML atau CSS di aplikasi Anda, karena tampilan web hilang. (Catatan: Anda masih dapat membuat tampilan web di Titanium. Tetapi ada beberapa fitur Titanium yang dapat Anda manfaatkan dalam tampilan web.) Tanya Jawab Titanium: Apa yang terjadi dengan HTML & CSS?
Anda tidak akan dapat menggunakan pustaka JS populer seperti JQuery yang mengasumsikan keberadaan objek DOM. Anda terus menggunakan JavaScript sebagai bahasa kode Anda. Tapi itu cukup banyak satu-satunya teknologi web yang dapat Anda manfaatkan jika Anda datang ke Titanium 1.0 sebagai programmer web.
Video titanium: Apa yang baru dalam Titanium 1.0.
Sekarang, apakah Titanium 1.0 mengkompilasi JavaScript Anda menjadi "bit asli"? Tidak. Appcelerator akhirnya mengetahui masalah ini dengan blog pengembang ini: Titanium Guides Project: JS Environment. Kami programmer lebih banyak orang yang asli daripada yang ada di departemen Pemasaran, bukan? :-)
Pindah ke PhoneGap. Tidak ada banyak hal baru untuk dikatakan tentang PhoneGap. Persepsi saya adalah bahwa pengembangan PhoneGap tidak terlalu aktif sampai IBM naik pada akhir tahun ini. Beberapa orang bahkan berpendapat bahwa IBM berkontribusi lebih banyak kode ke PhoneGap daripada Nitobi. Itu benar atau tidak, ada baiknya mengetahui bahwa PhoneGap sedang aktif dikembangkan.
PhoneGap terus mendasarkan dirinya pada teknologi web, yaitu HTML, CSS dan JavaScript. Sepertinya PhoneGap tidak memiliki rencana untuk menjembatani fitur UI asli ke JavaScript seperti yang dilakukan Titanium. Sementara Web UI masih tertinggal dari UI asli pada kinerja dan tampilan dan nuansa asli, kesenjangan seperti itu sedang ditutup dengan cepat. Ada dua tren dalam teknologi web yang memastikan fitur cerah ke UI web seluler dalam hal kinerja:
Mesin JavaScript bergerak dari interpreter ke mesin virtual. JavaScript adalah JIT yang dikompilasi menjadi kode asli untuk eksekusi yang lebih cepat. Mesin Safari JS: SquirrelFish Extreme
Render halaman web bergerak dari mengandalkan CPU ke menggunakan akselerasi GPU. Tugas intensif grafis seperti transisi halaman dan animasi 3D menjadi jauh lebih lancar dengan bantuan akselerasi perangkat keras. Komposisi yang Dipercepat GPU di Chrome
Perbaikan seperti itu yang berasal dari browser desktop sedang dikirim ke browser ponsel dengan cepat. Bahkan, sejak iOS 3.2 dan Android 2.0, kontrol tampilan web seluler menjadi jauh lebih berkinerja dan ramah HTML5. Masa depan web seluler sangat menjanjikan sehingga menarik anak besar ke kota: JQuery baru-baru ini mengumumkan kerangka web selulernya. Dengan JQuery Mobile yang menyediakan gadget UI, dan PhoneGap yang menyediakan fitur telepon, keduanya digabungkan menciptakan platform web seluler yang sempurna menurut saya.
Saya juga harus menyebutkan Sencha Touch sebagai kerangka kerja gadget web UI seluler lainnya. Sencha Touch versi 1.0 baru-baru ini dirilis di bawah model lisensi ganda yang mencakup GPLv3. Sencha Touch berfungsi dengan baik dengan PhoneGap seperti halnya JQuery Mobile.
Jika Anda seorang programmer GWT (seperti saya), Anda mungkin ingin memeriksa GWT Mobile , proyek sumber terbuka untuk membuat aplikasi web seluler dengan GWT. Ini termasuk pembungkus PhoneGap GWT yang memungkinkan penggunaan PhoneGap di GWT.
sumber
Dari apa yang saya kumpulkan, berikut adalah beberapa perbedaan di antara keduanya:
PhoneGap pada dasarnya menghasilkan pembungkus asli untuk apa yang masih aplikasi web . Itu memuntahkan proyek What'sYourPlatformIs, Anda membangunnya, dan menggunakan. Jika kita berbicara tentang iPhone (yang merupakan tempat saya menghabiskan waktu saya), sepertinya tidak jauh berbeda dengan membuat peluncur aplikasi web (pintasan yang memiliki ikon Springboard sendiri, sehingga Anda dapat meluncurkannya seperti ( seperti )) aplikasi asli). "Aplikasi" itu sendiri masih html / js / etc, dan berjalan di dalam kontrol browser yang di-host. Apa yang disediakan PhoneGap di luar itu adalah jembatan antara JavaScript dan API perangkat asli. Jadi, Anda menulis JavaScript terhadap API PhoneGap, dan PhoneGap kemudian membuat panggilan asli yang sesuai. Dalam hal itu, ini berbeda dari menggunakan aplikasi web lama biasa.
Sumber titanium dikompilasi ke bit asli. Yaitu, html / js / etc Anda. tidak hanya dilampirkan ke proyek dan kemudian di-host di dalam kontrol browser web - mereka berubah menjadi aplikasi asli. Itu artinya, misalnya, antarmuka aplikasi Anda akan terdiri dari komponen UI asli . Ada beberapa cara untuk mendapatkan tampilan dan nuansa asli tanpa memiliki aplikasi asli, tapi ... yah ... mimpi buruk yang biasanya ternyata.
Keduanya serupa dalam hal Anda menulis semua hal menggunakan teknologi web biasa (html / js / css / bla bla bla), dan Anda mendapatkan akses ke fungsionalitas asli melalui API JavaScript khusus.
Tapi, sekali lagi, aplikasi PhoneGap (PhonGapps? Saya tidak tahu ... apakah itu nama yang bodoh? Lebih mudah dikatakan - saya tahu banyak) memulai hidup mereka sebagai aplikasi web dan mengakhiri hidup mereka sebagai aplikasi web. Di iPhone, html / js / etc Anda. hanya dijalankan di dalam kontrol UIWebView, dan API JavaScript PhoneGap panggilan js Anda dialihkan ke API asli.
Aplikasi Titanium menjadi aplikasi asli - mereka baru saja dikembangkan menggunakan teknologi web dev.
Apa sebenarnya ini artinya ?
Aplikasi Titanium akan terlihat seperti aplikasi "nyata" karena, pada akhirnya, itu adalah aplikasi "nyata".
Aplikasi PhoneGap akan terlihat seperti aplikasi web yang dihosting di kontrol browser karena, pada akhirnya, itu adalah aplikasi web yang di-host di kontrol browser.
Yang mana yang tepat untuk Anda?
Jika Anda ingin menulis aplikasi asli menggunakan keterampilan pengembang web, Titanium adalah taruhan terbaik Anda.
Jika Anda ingin menulis aplikasi menggunakan keterampilan pengembang web yang dapat Anda gunakan secara realistis ke berbagai platform (iPhone, Android, Blackberry, dan apa pun yang mereka putuskan untuk dimasukkan), dan jika Anda ingin akses ke subset fitur platform asli (GPS, accelerometer, dll.) melalui API JavaScript terpadu, PhoneGap mungkin adalah yang Anda inginkan.
Anda mungkin bertanya: Mengapa saya ingin menulis PhoneGapp (saya sudah memutuskan untuk menggunakan namanya) daripada aplikasi web yang dihosting di web? Tidak bisakah saya masih mengakses beberapa fitur perangkat asli seperti itu, tetapi juga memiliki kenyamanan penggunaan web yang sebenarnya daripada memaksa pengguna untuk mengunduh aplikasi "asli" saya dan menginstalnya?
Jawabannya adalah: Karena Anda dapat mengirimkan PhoneGapp Anda ke App Store dan membebankan biaya untuk itu. Anda juga mendapatkan ikon peluncur itu, yang membuatnya lebih sulit bagi pengguna untuk melupakan aplikasi Anda (saya jauh lebih mungkin melupakan bookmark daripada ikon aplikasi).
Anda tentu bisa mengenakan biaya untuk akses ke aplikasi web yang dihosting di web, tetapi berapa banyak orang yang benar-benar akan melalui proses untuk melakukan itu? Dengan App Store, saya memilih aplikasi, ketuk tombol "Beli", masukkan kata sandi, dan saya selesai. Itu menginstal. Beberapa detik kemudian, saya menggunakannya. Jika saya harus menggunakan antarmuka transaksi web seluler satu-kali milik orang lain, yang kemungkinan berarti harus mengeluarkan nama, alamat, nomor telepon, nomor CC, dan hal-hal lain yang tidak ingin saya keluarkan, saya hampir pasti tidak akan t pergi dengan itu. Juga, saya percaya Apple - Saya yakin Steve Jobs tidak akan mencatat info saya dan kemudian menagih banyak langganan majalah nakal ke CC saya untuk tendangan.
Pokoknya, kecuali untuk fakta bahwa teknologi web dev terlibat, PhoneGap dan Titanium sangat berbeda - sampai-sampai hanya sebanding secara dangkal.
Saya benci aplikasi web, oleh, dan jika Anda membaca ulasan iTunes App Store, pengguna cukup pandai melihatnya. Saya tidak akan menyebut nama, tetapi saya memiliki beberapa "aplikasi" di ponsel saya yang terlihat dan berjalan seperti sampah, dan itu karena mereka adalah aplikasi web yang di-host dalam instance UIWebView. Jika saya ingin menggunakan aplikasi web, saya akan membuka Safari dan, Anda tahu, menavigasi ke satu. Saya membeli iPhone karena saya menginginkan barang-barang yang iPhone-y. Saya tidak punya masalah menggunakan, katakanlah, aplikasi web Google yang keren di dalam Safari, tetapi saya akan merasa tertipu jika Google hanya menyelipkan bookmark ke Springboard dengan menghadirkan aplikasi web sebagai yang asli.
Harus pergi sekarang. Pacar saya memiliki wajah yang bisa-tolong-berhenti-pakai-komputer-selama-tiga-detik di wajahnya.
sumber
Saya mengambil kursus dalam pengembangan Android / iPhone dan kami menghabiskan 8 minggu dengan Titanium (tidak penuh waktu) (Versi adalah Titanium 1.4.2 dan waktu sekitar November 2010). Ini pengalaman saya.
iPhone Android penargetan ganda
Meskipun panduan API mengklaim bahwa fungsionalitas tersedia untuk Android dan iPhone, ini bukan masalahnya. Banyak hal tidak berfungsi pada salah satu platform. Beberapa hal bekerja secara berbeda.
Banyak orang di kelas telah melakukan aplikasi iPhone, dan mereka tidak dapat membuatnya bekerja di Android tanpa penulisan ulang utama. Saya mengembangkan aplikasi anak-anak sederhana yang disebut Animap (lihat pasar android / Appstore di Swedia) dan mulai berkembang di bawah Windows. Setelah target Android bekerja, saya membuka proyek pada OS X. Itu tidak menunjukkan hal membangun untuk iPhone, hanya untuk Android. Anda perlu memulai proyek target ganda di bawah OS X. (Oke, saya menyalin file yang relevan ke proyek baru). Masalah selanjutnya - animasi tidak bekerja di iPhone (mereka bekerja di Android). Acara bergulir tidak bekerja sama di iPhone. (yaitu pada Android Anda mendapatkan acara yang tak tersentuh ketika pengguna berhenti menggulir dan melepaskan jari mereka dari layar, ini tidak terjadi pada iPhone).
Karena ini tidak disebutkan di suatu tempat Anda pada dasarnya perlu melakukan pemrograman trial and error pada platform pertama, kemudian pada platform lainnya. Maksud saya coba-coba adalah sekitar dua hari untuk mendapatkan Aplikasi sederhana seperti Animap yang bekerja di platform lain. Anda juga perlu memiliki if (android) then ... atau if (iphone) ... seluruh kode Anda ...
Unduh dan siapkan
Anda harus mengikuti instruksi pada surat itu. Jangan mencoba menggunakan java 64 bit. Itu tidak akan mengkompilasi aplikasi demo KitchenSink 1.4.0. (1.3 berfungsi OK!) Anda harus meletakkan file secara langsung pada drive C karena nama path yang panjang akan membuat program eksternal tidak menerima semua parameter baris perintah jika terlalu panjang. (Baik untuk program kecil) 1/3 kali, toolchain berhenti dan Anda harus menekan 'luncurkan' lagi. Maka itu mungkin akan berhasil ... sangat tidak bisa diandalkan. Simulator tidak akan ditemukan pada startup dan kemudian Anda harus membunuh adb.exe dengan Ctrl + Alt + Delete dan coba lagi.
Koneksi jaringan
Pada jaringan wifi Anda kadang-kadang kehilangan koneksi langsung dan Titanium lumpuh pada Anda (antarmuka kompilasi / deploy) Jika Anda tidak memiliki koneksi internet yang berfungsi, ia tidak akan memulai karena tidak dapat login Anda ke server mereka.
API
CSS, HTML, dan jQuery sangat mudah dibandingkan dengan ini. Titanium menyerupai API GUI lama lainnya, dan Anda perlu mengatur beberapa properti untuk setiap tombol / bidang / etc. Salah bidang itu mudah, mengingat semua properti yang perlu diatur? Apakah Anda mengejanya dengan huruf besar di tempat yang tepat? (karena ini tidak ditangkap oleh kompiler, tetapi akan dilihat sebagai kesalahan runtime jika Anda beruntung untuk menguji bagian itu)
Dalam Titanium, hal-hal cukup rusak ketika Anda menambahkan tampilan lain di atas kontrol atau klik di tempat lain di GUI.
Dokumentasi
Beberapa halaman API membawa simbol Android, tetapi hanya akan mengembalikan nol ketika Anda mencoba membuat kontrol. Mereka tidak hanya tersedia di platform Android meskipun ada simbol. Terkadang Android disebutkan tidak mendukung metode tertentu, tetapi kemudian seluruh API hilang.
KitchenSink
Aplikasi demo. Apakah saya menyebutkan itu tidak mengkompilasi jika Anda meletakkannya di folder proyek Eclipse Anda karena jalan terlalu lama? Harus diletakkan di drive C Anda di folder root. Saat ini saya menggunakan tautan simbolik (mklink / J ...)
Metode tidak berdokumen
Anda harus menggunakan hal-hal sebagai label.setText ('Hello World') untuk mengubah label yang andal tetapi ini tidak didokumentasikan sama sekali.
Debugging
Titanium.API.info ('Cetakan adalah satu-satunya cara untuk debug');
Editing
API tidak tersedia dalam format yang bagus sehingga Anda tidak bisa mendapatkan penyelesaian kode biasa dengan bantuan, dll. Di Eclipse. Aptana tolong bantu!
Perangkat keras
Tampaknya kompiler / alat tidak multithreaded sehingga komputer cepat dengan harddisk cepat adalah suatu keharusan, karena Anda harus melakukan banyak percobaan & kesalahan. Apakah saya menyebutkan dokumentasi yang buruk? Anda harus mencoba semua yang ada di sana karena Anda tidak dapat mempercayainya!
Beberapa hal positif
Dari proyek sebelumnya saya telah berjanji pada diri saya untuk tidak pernah menggunakan sumber tertutup lagi karena Anda tidak bisa begitu saja memperbaiki hal-hal hanya dengan membuang waktu dan tenaga. Penting ketika Anda terlambat dalam proyek dan harus memenuhi tenggat waktu yang sulit. Ini adalah open source dan saya telah dapat melihat mengapa rantai alat rusak dan sebenarnya memperbaikinya juga.
Database Bug
Itu juga terbuka. Anda hanya dapat melihat bahwa Anda tidak sendirian dan melakukan solusi alih-alih 4 jam dihabiskan untuk coba-coba.
Masyarakat
Bug
Sebagian besar masalah yang saya miliki dengan Titanium berasal dari latar belakang saya pada sistem realtime seperti OSE yang mendukung ratusan utas, acara, dan penyampaian pesan. Ini seharusnya bekerja di Titanium 1.4 tetapi tidak cukup andal.
Javascript (yang baru bagi saya) mati secara diam-diam karena kesalahan runtime. Ini juga berarti bahwa bug kecil dan umum, seperti salah mengeja nama variabel atau membaca dalam null-pointer tidak crash ketika seharusnya sehingga Anda dapat men-debug itu. Alih-alih, sebagian dari program Anda hanya berhenti bekerja, misalnya seorang eventhandler, karena Anda salah menempatkan / salah mengetik karakter.
Kemudian kami memiliki bug yang lebih sederhana di Titanium, seperti beberapa parameter yang tidak berfungsi dalam fungsi (yang paling umum pada platform Android setidaknya).
Trial and Error debug cycle cycle Setelah menjalankan Titnium Developer di beberapa komputer, saya perhatikan bahwa bottleneck-nya adalah harddisk. Drive SSD pada laptop membuat siklus build sekitar 3-5 kali lebih cepat daripada drive 4200 rpm. Pada desktop, memiliki dua drive dalam RAID 1 (mode striping) membuat build sekitar 25 persen lebih cepat daripada pada drive tunggal dengan CPU yang agak lebih cepat dan juga mengalahkan laptop drive SSD.
Ringkasan
Ini bersinar sangat banyak ketika Anda mulai menggunakannya. Jika Anda melihat bugtracker terbuka, Anda melihat bahwa jumlah bug terus meningkat lebih cepat daripada jumlah bug tetap. Ini biasanya merupakan tanda bahwa pengembang terus menambahkan lebih banyak fungsi, daripada berkonsentrasi untuk menurunkan jumlah bug.
Sebagai konsultan yang mencoba mengirimkan aplikasi yang agak sederhana ke banyak platform untuk pelanggan - Saya tidak yakin ini sebenarnya lebih cepat daripada melakukan pengembangan aplikasi asli pada dua platform. Ini disebabkan oleh kenyataan bahwa ketika Anda melakukan kecepatan Anda cepat dengan Titanium, tetapi kemudian tiba-tiba Anda melihat ke bawah dan menemukan diri Anda berada dalam lubang yang begitu dalam sehingga Anda tidak tahu berapa jam yang harus dihabiskan untuk solusi. Anda TIDAK bisa menjanjikan fungsionalitas tertentu untuk tenggat waktu / waktu / biaya tertentu.
Tentang saya: Sudah menggunakan Python selama dua tahun dengan wxPython. (GUI itu tidak konsisten, tetapi tidak pernah putus seperti ini. Mungkin saya yang belum mengerti model threading yang digunakan oleh Javascript dan Titanium, tapi saya tidak sendiri menurut forum diskusi terbuka mereka, objek GUI tiba-tiba menggunakan konteks yang salah / tidak memperbarui .. ???) sebelum itu saya memiliki latar belakang dalam pemrograman C dan ASM untuk perangkat seluler.
[edit - ditambahkan bagian dengan bug dan bukan utas yang aman] [Edit - sekarang telah bekerja dengan itu selama + bulan, kebanyakan di PC tetapi beberapa di OS X juga. Menambahkan iPhone dan Android dual targetting. Menambahkan kecepatan siklus debug Percobaan dan Kesalahan.]
sumber
Corona SDK (Ansca Mobile) menggunakan Lua sebagai bahasa pengodeannya. Lihat lua.org untuk informasi lebih lanjut tentang Lua.
Sementara kami berencana untuk menambahkan integrasi web lebih lanjut dan elemen UI asli, fokus kami akan cenderung pada aplikasi intensif grafis, seperti pengembangan game, yang bertentangan dengan teknologi berbasis web. Dengan kata lain, kami tidak membayangkan orang yang menulis aplikasi Corona sepenuhnya dalam Javascript / HTML / CSS.
sumber
Saya telah bekerja dengan Titanium selama lebih dari seminggu sekarang dan merasa seperti saya memiliki perasaan yang baik tentang kelemahannya.
1) Jika Anda berharap menggunakan kode yang sama di berbagai platform, semoga berhasil! Anda akan melihat sesuatu seperti backgroundGradient dan kagum sampai Anda tahu versi android tidak mendukungnya. Maka harus kembali menggunakan gambar gradien, mungkin juga menggunakannya untuk kedua versi untuk membuat kode lebih mudah kan?
2) Banyak perilaku aneh, pada Titanium android SDK Anda perlu memahami apa itu jendela "berat" hanya untuk mendapatkan tombol kembali bekerja, atau bahkan pelacakan acara orientasi yang lebih baik. Ini bukan bagaimana platform android sebenarnya, itu hanya bagaimana Titanium mencoba untuk membuat API mereka berfungsi.
3) Anda terlempar dalam kegelapan, Hal-hal akan macet dan Anda harus mulai berkomentar kode dan kemudian ketika Anda menemukannya, jangan pernah menggunakannya. Ada beberapa bug yang jelas, seperti orientasi dan persen pada android yang telah menjadi masalah selama lebih dari enam bulan.
4) Bug .... ada banyak bug dan mereka akan dilaporkan, duduk selama berbulan-bulan, diperbaiki dalam beberapa hari. Saya terkejut mereka bahkan berencana untuk merilis ponsel black sdk berry ketika ada begitu banyak masalah dengan android.
5) Titanium Iphone versus Titanium Mesin javascript Android sangat berbeda. Pada versi android Anda dapat mengunduh file javascript jarak jauh, termasuk dan gunakan perpustakaan seperti mootools, jquery dan sebagainya. Saya berada di surga ketika saya menemukan ini karena saya tidak harus terus menyusun aplikasi android saya. Proses instalasi Android apk sangat lama! Iphone tidak ada yang mungkin, juga versi iphone memiliki mesin javascript yang jauh lebih cepat.
Jika Anda tinggal jauh dari banyak bagian UI asli, yaitu gunakan setInterval untuk mendeteksi perubahan orientasi, bertahan dengan gambar gradien, lupakan tombol kembali, buat animasi sendiri, lupakan tajuk jendela, bilah alat, dan dasbor. Anda benar-benar dapat membuat api yang bekerja pada keduanya yang tidak memerlukan banyak penulisan ulang. Tetapi pada titik itu sama lambannya dengan webapp.
Jadi, apakah itu layak? Setelah semua rasa sakit, nilainya setiap menit. Anda dapat mengabstraksi logika dan hanya membangun UI yang berbeda untuk masing-masing daripada jika ada di mana-mana. Titanium memungkinkan Anda membuat aplikasi cairan, yang terasa cepat. Anda kehilangan kemampuan tata letak yang kuat dari setiap platform tetapi jika Anda berpikir sederhana, hal-hal dapat dilakukan dalam satu bahasa.
Kenapa bukan aplikasi web? Di pasar entry level ponsel android sangat lambat untuk menghasilkan tampilan web dan menghabiskan banyak memori yang dapat Anda gunakan untuk melakukan logika yang lebih kompleks.
sumber
Berikut adalah analisis Appcelerator dan PhoneGap yang lebih baru dan mendalam: http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap
Dan berikut ini lebih detail tentang bagaimana mereka berbeda secara terprogram: http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript
sumber
mapkit asli didukung dalam Titanium
sumber
Membuat widget HTML5 yang terlihat seperti widget iphone adalah satu hal, tetapi menjadikannya berkinerja sama baiknya adalah masalah lain. Kinerja animasi html5 (bahkan Transisi Tampilan biasa), gulir daftar panjang, responsif terhadap gerakan terasa lengket dan tersentak-sentak. Pengguna iPhone akan melihat perbedaannya.
Ada juga beberapa perbedaan dalam jenis gerakan yang didukung oleh perangkat berbeda yang menghasilkan kode spesifik platform dan masalah kegunaan juga.
Saya akan tetap dengan aplikasi asli untuk saat ini saya kira.
sumber
Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) sangat mirip dalam pendekatan untuk PhoneGap, tetapi merupakan satu-satunya kerangka kerja dengan:
sumber
Bagi siapa pun yang tertarik dengan Titanium saya harus mengatakan bahwa mereka tidak memiliki dokumentasi yang sangat bagus, beberapa kelas, properti, metode tidak ada. Tetapi banyak yang "didokumentasikan" dalam aplikasi sampel mereka KitchenSink sehingga tidak terlalu buruk.
sumber
Pemahaman saya tentang PhoneGap adalah bahwa mereka menyediakan Javascript API untuk sebagian besar iPhone API.
Titanium tampaknya lebih mudah untuk latar belakang pengembang web. Ini adalah file XML sederhana untuk membuat aplikasi TabView dasar dan kemudian segala sesuatu di area konten dikendalikan oleh HTML / JS. Saya juga tahu bahwa Titanium memang menyediakan beberapa akses javascript ke beberapa kerangka kerja (terutama akses ke informasi lokasi, ID telepon, dll).
UPDATE: Titanium menambahkan Maps API dalam versi 0.8 dari framework mereka.
sumber
Anda harus mempelajari aplikasi tujuan dan program asli c. Jangan mengandalkan hal-hal yang menurut Anda akan membuat hidup lebih mudah. Apple telah memastikan cara termudah adalah menggunakan alat dan bahasa asli mereka. Untuk 100 baris javascript Anda, saya dapat melakukan hal yang sama dalam 3 baris kode atau tidak ada kode sama sekali tergantung pada elemen. Tonton beberapa tutorial - jika Anda mengerti javascript maka tujuan c tidak sulit. Penanganannya menyedihkan dan apel dapat menarik Anda kapan saja mereka mau.
sumber
Dari solusi yang Anda sebutkan, tidak satu pun dari mereka yang muncul untuk memberi Anda akses langsung ke kerangka kerja MapKit yang diperkenalkan di OS 3.0.
Karena widget Google Maps HTML tidak sebagus MapKit (lihat Google Latitude untuk contohnya), Anda mungkin lebih baik mengembangkan aplikasi sentuh Cocoa asli, atau memilih solusi yang dapat diperluas untuk menambahkan integrasi MapKit. PhoneGap dapat diperluas dengan cara ini (ini open-source sehingga secara default), dan beberapa solusi lain mungkin juga.
sunting: Titanium sekarang memiliki dukungan untuk MapKit
sumber
Saya sudah mencoba korona. Itu bagus sampai saya menemukan itu tidak mendukung streaming audio mp3. Jadi, saya berhenti di sana. Saya pikir jika saya benar-benar ingin menjadi pengembang aplikasi iphone saya harus belajar obj c. Yang saya inginkan adalah membuat aplikasi yang memiliki daftar stasiun radio dan Anda mengkliknya, itu mulai diputar.
sumber