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
- Sumber Terbuka
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
- Tampaknya aktif di forum mereka.
Bug
- Titanium 1.4 bukan threadsafe . Itu berarti jika Anda menggunakan utas (gunakan properti url: dalam panggilan createWindow) dan program seperti utas bekerja dan mengirim acara dengan data bolak-balik, Anda mengalami banyak hal yang sangat, sangat aneh - penangan yang hilang, hilang jendela, terlalu banyak acara, terlalu sedikit acara, dll. Ini semua tergantung pada waktu, menempatkan baris kode dalam urutan yang berbeda mungkin macet atau menyembuhkan aplikasi Anda. Menambahkan jendela di file.js lain merusak eksekusi app.js Anda ... Ini juga merusak struktur data internal di Titanium, karena mereka kadang-kadang dapat memperbarui struktur data internal dalam paralell, menimpa nilai yang baru saja diubah dengan sesuatu yang lain.
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
- Dari komentar di utas ini, tampaknya ada pertarungan untuk jumlah platform yang bisa dihasilkan oleh alat seperti ini. Jumlah API tampaknya menjadi titik penjualan utama.
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.]