ฉันกำลังเรียนหลักสูตรการพัฒนา Android / iPhone และเราใช้เวลา 8 สัปดาห์กับ Titanium (ไม่ใช่เต็มเวลา) (เวอร์ชันคือ Titanium 1.4.2 และเวลาประมาณพฤศจิกายน 2553) นี่คือประสบการณ์ของฉัน
การกำหนดเป้าหมายคู่กับ iPhone Android
แม้ว่า API ไกด์จะอ้างว่ามีฟังก์ชั่นการใช้งานสำหรับทั้ง Android และ iPhone แต่นี่ไม่ใช่กรณี สิ่งต่างๆมากมายไม่ทำงานบนหนึ่งในแพลตฟอร์ม บางสิ่งทำงานแตกต่างกัน
ผู้คนจำนวนมากในชั้นเรียนได้ทำแอปพลิเคชั่นของ iPhone และพวกเขาไม่สามารถทำให้มันทำงานบน Android ได้หากไม่มีการเขียนซ้ำครั้งใหญ่ ฉันพัฒนาแอพสำหรับเด็กอย่างง่ายชื่อว่าแอนิเมชั่น (ดู Android Market / Appstore ในสวีเดน) และเริ่มพัฒนาภายใต้ Windows เมื่อเป้าหมาย Android ทำงานฉันก็เปิดโครงการบน OS X มันไม่ได้แสดงสิ่งที่สร้างสำหรับ iPhone เพียงสำหรับ Android คุณต้องเริ่มโครงการเป้าหมายคู่ภายใต้ OS X (ตกลงฉันคัดลอกไฟล์ที่เกี่ยวข้องไปยังโครงการใหม่) ปัญหาต่อไป - ภาพเคลื่อนไหวไม่ทำงานบน iPhone (ทำงานบน Android) เหตุการณ์การเลื่อนไม่ทำงานเหมือนกันบน iPhone (เช่นบน Android คุณจะได้รับเหตุการณ์ที่ไม่ถูกแตะต้องเมื่อผู้ใช้หยุดการเลื่อนและปล่อยนิ้วจากหน้าจอซึ่งจะไม่เกิดขึ้นบน iPhone)
เนื่องจากนี่ไม่ได้กล่าวถึงบางที่คุณจำเป็นต้องทำการทดลองและการเขียนโปรแกรมข้อผิดพลาดบนแพลตฟอร์มแรกก่อนโดยใช้แพลตฟอร์มอื่น จากการทดลองและข้อผิดพลาดฉันหมายความว่าจะใช้เวลาประมาณสองวันในการรับแอพอย่างง่ายเช่น Animap ที่ทำงานบนแพลตฟอร์มอื่น คุณจะต้องมีถ้า (android) แล้ว ... หรือถ้า (iphone) ... รหัสของคุณทั้งหมด ...
ดาวน์โหลดและติดตั้ง
คุณต้องทำตามคำแนะนำในจดหมาย อย่าพยายามใช้จาวา 64 บิต จะไม่รวบรวมแอปพลิเคชัน KitchenSink 1.4.0 (1.3 ใช้งานได้ OK!) คุณต้องใส่ไฟล์ลงในไดรฟ์ C โดยตรงเนื่องจากชื่อพา ธ ยาวจะทำให้โปรแกรมภายนอกไม่ได้รับพารามิเตอร์บรรทัดคำสั่งทั้งหมดหากไฟล์นั้นยาว (เหมาะสำหรับโปรแกรมขนาดเล็ก) 1/3 ของครั้ง toolchain เพียงหยุดและคุณต้องกด 'เปิด' อีกครั้ง ถ้าอย่างนั้นมันก็จะใช้ได้ ... ไม่น่าเชื่อถือมาก เครื่องมือจำลองจะไม่พบเมื่อเริ่มต้นจากนั้นคุณจะต้องฆ่า adb.exe ด้วย Ctrl + Alt + Delete แล้วลองอีกครั้ง
การเชื่อมต่อเครือข่าย
ในเครือข่าย wifi บางครั้งคุณขาดการเชื่อมต่อสดและไทเทเนียมขัดข้องกับคุณ (อินเทอร์เฟซการคอมไพล์ / ปรับใช้) หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ตที่ใช้งานได้จะไม่เริ่มทำงานเนื่องจากไม่สามารถเข้าสู่เซิร์ฟเวอร์
API
CSS, HTML และ jQuery เป็นเรื่องง่ายเมื่อเทียบกับเรื่องนี้ Titanium มีลักษณะคล้ายกับ GUI API เก่าอื่น ๆ และคุณต้องตั้งค่าคุณสมบัติบางอย่างสำหรับทุกปุ่ม / ฟิลด์ / ฯลฯ การได้รับข้อมูลที่ไม่ถูกต้องเป็นเรื่องง่ายเพียงจำคุณสมบัติทั้งหมดที่จำเป็นต้องตั้งค่า คุณสะกดด้วยอักษรตัวใหญ่ในสถานที่ที่เหมาะสมหรือไม่ (เนื่องจากคอมไพเลอร์ไม่ถูกตรวจจับ แต่จะถูกมองว่าเป็นข้อผิดพลาดรันไทม์หากคุณโชคดีที่ทดสอบส่วนนั้น)
ในสิ่งที่แตกสลายไทเทเนียมเมื่อคุณเพิ่มมุมมองอื่นที่ด้านบนของตัวควบคุมหรือคลิกที่อื่นใน GUI
เอกสาร
หน้า API หลายหน้ามีสัญลักษณ์ Android แต่จะคืนค่าว่างเมื่อคุณพยายามสร้างการควบคุม ไม่สามารถใช้งานได้บนแพลตฟอร์ม Android แม้จะมีสัญลักษณ์ บางครั้ง Android ถูกกล่าวถึงว่าไม่สนับสนุนวิธีการเฉพาะ แต่ API ทั้งหมดหายไป
อ่างล้างจาน
แอพพลิเคชั่นสาธิต ฉันพูดถึงมันไม่ได้รวบรวมถ้าคุณใส่ไว้ในโฟลเดอร์โครงการ Eclipse เพราะเส้นทางยาวเกินไป? ต้องวางในไดรฟ์ C ของคุณในโฟลเดอร์รูท ขณะนี้ฉันใช้ลิงก์สัญลักษณ์ (mklink / J ... )
วิธีการที่ไม่มีเอกสาร
คุณต้องใช้สิ่งต่าง ๆ ในฐานะ label.setText ('Hello World') เพื่อเปลี่ยนฉลากที่เชื่อถือได้ แต่สิ่งนี้ไม่ได้จัดทำเป็นเอกสารเลย
แก้จุดบกพร่อง
Titanium.API.info ('งานพิมพ์เป็นวิธีเดียวในการแก้ไขข้อบกพร่อง');
การแก้ไข
API ไม่พร้อมใช้งานในรูปแบบที่ดีดังนั้นคุณจึงไม่สามารถรับโค้ดที่สมบูรณ์ได้ด้วยความช่วยเหลือ ฯลฯ ใน Eclipse Aptana โปรดช่วยด้วย!
ฮาร์ดแวร์
ดูเหมือนว่าคอมไพเลอร์ / เครื่องมือไม่ได้เป็นแบบมัลติเธรดดังนั้นคอมพิวเตอร์ที่รวดเร็วและฮาร์ดไดรฟ์ที่รวดเร็วจึงเป็นสิ่งจำเป็นเนื่องจากคุณต้องลองผิดลองถูกมากมาย ฉันพูดถึงเอกสารที่ไม่ดีหรือไม่? คุณต้องลองทุกอย่างที่นั่นเพราะคุณไม่สามารถไว้ใจได้!
บางสิ่งในเชิงบวก
- โอเพ่นซอร์ส
จากโครงการก่อนหน้านี้ฉันสัญญากับตัวเองว่าไม่เคยใช้แหล่งข้อมูลปิดอีกแล้วเพราะคุณไม่สามารถแก้ไขสิ่งต่าง ๆ ได้เพียงแค่โยนชั่วโมงและกำลังคน สิ่งสำคัญเมื่อคุณมาสายในโครงการและจำเป็นต้องจัดส่งให้ถึงกำหนดเวลาที่ยาก นี่เป็นโอเพ่นซอร์สและฉันก็สามารถเห็นได้ว่าทำไมตัวแบ่งเครื่องมือและตัวแก้ไขก็จริงเช่นกัน
Bugdatabase
มันยังเปิดอยู่ คุณสามารถเห็นได้ว่าไม่ใช่คนเดียวของคุณและทำวิธีแก้ปัญหาแทนการใช้เวลาอีก 4 ชั่วโมงในการลองผิดลองถูก
ชุมชน
- ดูเหมือนว่าจะใช้งานในฟอรั่มของพวกเขา
เป็นโรคจิต
- Titanium 1.4 ไม่ใช่เธรดที่ปลอดภัย นั่นหมายความว่าถ้าคุณใช้เธรด (ใช้ url: property ในการเรียกใช้ createWindow) และโปรแกรมเช่นเธรดกำลังทำงานและส่งกิจกรรมที่มีข้อมูลย้อนกลับไปมาคุณพบสิ่งแปลกประหลาดมาก - ตัวจัดการที่สูญหายสูญหาย windows, เหตุการณ์มากเกินไป, กิจกรรมน้อยเกินไป ฯลฯ ฯลฯ ทั้งหมดนี้ขึ้นอยู่กับเวลาการวางแถวของรหัสในลำดับที่แตกต่างกันอาจทำให้เกิดปัญหาหรือรักษาใบสมัครของคุณ การเพิ่มหน้าต่างใน file.js อีกอันทำให้การเรียกใช้งาน app.js ของคุณหยุดชะงัก ... นี่เป็นการทำให้โครงสร้างข้อมูลภายในใน Titanium ล้มเหลวเนื่องจากบางครั้งพวกเขาสามารถอัปเดตโครงสร้างข้อมูลภายในเป็นแบบ Paralell แทนที่ค่าที่เปลี่ยนแปลงไปกับสิ่งอื่น
ปัญหาส่วนใหญ่ที่ฉันมีกับไทเทเนียมมาจากพื้นหลังของฉันในระบบเรียลไทม์เช่น OSE ที่รองรับเธรดหลายร้อยเหตุการณ์และการส่งข้อความ นี่น่าจะใช้ได้ใน Titanium 1.4 แต่มันก็ไม่ได้น่าเชื่อถือ
Javascript (ซึ่งใหม่สำหรับฉัน) ตายอย่างเงียบ ๆ ในข้อผิดพลาดรันไทม์ นอกจากนี้ยังหมายความว่ามีข้อบกพร่องเล็ก ๆ และทั่วไปเช่นการสะกดคำผิดชื่อตัวแปรหรือการอ่านในตัวชี้โมฆะไม่ผิดพลาดเมื่อมันควรเพื่อให้คุณสามารถแก้ปัญหาได้ แทนที่จะเป็นส่วนหนึ่งของโปรแกรมของคุณให้หยุดทำงานตัวอย่างเช่นตัวจัดการเหตุการณ์เพราะคุณใส่อักขระผิด /
จากนั้นเรามีข้อบกพร่องที่ง่ายขึ้นใน Titanium เช่นพารามิเตอร์บางอย่างที่ไม่ทำงานในฟังก์ชั่น (ซึ่งค่อนข้างบ่อยในแพลตฟอร์ม Android อย่างน้อย)
ความเร็วรอบการดีบักการทดลองและข้อผิดพลาดเมื่อใช้งาน Titnium Developer บนคอมพิวเตอร์หลายเครื่องฉันสังเกตเห็นว่าคอขวดเป็นฮาร์ดไดรฟ์ ไดรฟ์ SSD บนแล็ปท็อปทำให้วงจรการสร้างเร็วขึ้นประมาณ 3-5 เท่าเมื่อเทียบกับไดรฟ์ 4200 รอบต่อนาที บนเดสก์ท็อปการมีไดรฟ์สองตัวใน RAID 1 (โหมดสตริปติ้ง) ทำให้การสร้างเร็วขึ้นประมาณ 25 เปอร์เซ็นต์บนไดรฟ์เดียวโดยมีซีพียูที่ค่อนข้างเร็วกว่าและยังเต้นแล็ปท็อปไดรฟ์ SSD อีกด้วย
สรุป
- จากความคิดเห็นในกระทู้นี้ดูเหมือนจะเป็นการต่อสู้กับจำนวนแพลตฟอร์มที่เครื่องมือเช่นนี้สามารถส่งมอบให้กับแอพได้ จำนวน API ดูเหมือนจะเป็นจุดขายหลัก
สิ่งนี้จะส่องสว่างมากเมื่อคุณเริ่มใช้งาน หากคุณดูที่ตัวติดตามบั๊กที่เปิดอยู่คุณจะเห็นว่าจำนวนของบั๊กนั้นเพิ่มขึ้นเร็วกว่าจำนวนบั๊กคงที่ นี่เป็นสัญญาณบ่งบอกว่านักพัฒนาซอฟต์แวร์ยังคงเพิ่มฟังก์ชันการทำงานมากขึ้นแทนที่จะให้ความสำคัญกับการลดจำนวนข้อบกพร่องลง
ในฐานะที่ปรึกษาที่พยายามส่งมอบแอพที่ค่อนข้างง่ายไปยังหลายแพลตฟอร์มสำหรับลูกค้า - ฉันไม่แน่ใจว่านี่เร็วกว่าการพัฒนาแอพพื้นฐานในสองแพลตฟอร์ม นี่เป็นเพราะความจริงที่ว่าเมื่อคุณเร่งความเร็วคุณจะรวดเร็วด้วย Titanium แต่ทันใดนั้นคุณดูถูกและพบว่าตัวเองอยู่ในหลุมลึกจนคุณไม่รู้ว่าต้องใช้เวลากี่ชั่วโมง คุณไม่สามารถรับประกันการใช้งานบางอย่างตามกำหนดเวลา / ค่าใช้จ่าย
เกี่ยวกับตัวฉัน: เคยใช้ Python เป็นเวลาสองปีกับ wxPython (GUI นั้นไม่สอดคล้องกัน แต่ไม่เคยหยุดเช่นนี้มันอาจเป็นฉันที่ไม่เข้าใจรูปแบบเกลียวที่ใช้โดย Javascript และ Titanium แต่ฉันไม่ได้อยู่คนเดียวตามฟอรัมสนทนาที่เปิดอยู่วัตถุ GUI ก็ใช้บริบทที่ผิด / ไม่อัปเดต .. ???) ก่อนหน้านี้ฉันมีพื้นหลังในการเขียนโปรแกรม C และ ASM สำหรับอุปกรณ์มือถือ
[แก้ไข - เพิ่มส่วนที่มีข้อบกพร่องและไม่เป็นเธรดที่ปลอดภัย] [แก้ไข - ตอนนี้ได้ทำงานกับมันเป็นเวลาหนึ่งเดือน + โดยส่วนใหญ่บนพีซี แต่บางตัวใน OS X เช่นกัน เพิ่มการกำหนดเป้าหมายแบบคู่สำหรับ iPhone และ Android เพิ่มความเร็วรอบการทดสอบและข้อผิดพลาดในการดีบัก]