การเปรียบเทียบระหว่าง Corona, Phonegap, Titanium


310

ฉันเป็นนักพัฒนาเว็บและฉันต้องการย้ายผลิตภัณฑ์บนเว็บไปยัง iPhone หนึ่งในผลิตภัณฑ์เป็นเหมือน Google แผนที่: แสดงแผนที่บนหน้าจอโทรศัพท์คุณสามารถลากหรือปรับขนาดแผนที่และดูข้อมูลบางอย่างที่เราเพิ่มลงในแผนที่

ฉันรู้ว่ามีเทคโนโลยีบางอย่างที่ช่วยให้คุณใช้ HTML, CSS และ Javascript เพื่อพัฒนาแอพของ iPhone ฉันระบุบางอย่าง:

มีผลิตภัณฑ์อื่นที่คล้ายคลึงกันหรือไม่ ความแตกต่างระหว่างพวกเขาคืออะไร? ฉันควรเลือกแบบใด


1
นอกจากนี้ยังมี Adobe FLEX ซึ่งสามารถสร้างแอป iPhone ได้ในเดือนมิถุนายน 2554 adobe.com/products/flex
neoneye

1
ลองดูสิ เพื่อนนี่คือการเปรียบเทียบจุด savagelook.com/blog/portfolio/…
Hikmat Khan

คำตอบ:


368

ฉันลงทะเบียนกับ stackoverflow เพื่อจุดประสงค์ในการแสดงความคิดเห็นกับคำตอบที่โหวตส่วนใหญ่แล้วเท่านั้น สิ่งที่แย่คือ stackoverflow ไม่อนุญาตให้สมาชิกใหม่โพสต์ความคิดเห็น ดังนั้นฉันต้องทำให้ความคิดเห็นนี้ดูเหมือนคำตอบ

คำตอบของ Rory Blyth มีบางจุดที่ถูกต้องเกี่ยวกับเฟรมเวิร์กมือถือ javascript อย่างไรก็ตามประเด็นสำคัญของเขาไม่ถูกต้อง ความจริงก็คือ Titanium และ PhoneGap นั้นมีความคล้ายคลึงกันมากกว่าที่ต่างกัน ทั้งคู่แสดงฟังก์ชั่นโทรศัพท์มือถือผ่านชุดของ javascript APIs และตรรกะของแอปพลิเคชัน (html, css, javascript) ทำงานภายในการควบคุม WebView ดั้งเดิม

  1. PhoneGap ไม่ได้เป็นเพียง wrapper ดั้งเดิมของแอปบนเว็บ ผ่านทาง PhoneGap javascript APIs "เว็บแอพ" สามารถเข้าถึงฟังก์ชั่นโทรศัพท์มือถือเช่นตำแหน่งทางภูมิศาสตร์, กล้อง Accelerometer, รายชื่อ, ฐานข้อมูล, ระบบไฟล์ ฯลฯ โดยทั่วไปฟังก์ชั่นใด ๆ ที่ SDK โทรศัพท์มือถือสามารถให้ จาวาสคริปต์โลก ในทางกลับกันแอปพลิเคชันเว็บปกติที่ทำงานบนเว็บเบราว์เซอร์มือถือไม่สามารถเข้าถึงฟังก์ชั่นส่วนใหญ่ได้ (ความปลอดภัยเป็นเหตุผลหลัก) ดังนั้นแอพ PhoneGap จึงเป็นแอพมือถือมากกว่าแอพเว็บ คุณสามารถใช้ PhoneGap เพื่อห่อแอปพลิเคชันเว็บที่ไม่ได้ใช้ PhoneGap API ใด ๆ เลย แต่นั่นไม่ใช่ PhoneGap ที่สร้างขึ้น

  2. Titanium ไม่ได้รวบรวมรหัส html, css หรือ javascript ของคุณเป็น "native bits" พวกเขาจะถูกบรรจุเป็นทรัพยากรให้กับกลุ่มปฏิบัติการได้เช่นเดียวกับไฟล์ภาพฝังตัว เมื่อแอปพลิเคชันทำงานทรัพยากรเหล่านี้จะถูกโหลดลงในตัวควบคุม UIWebView และรันที่นั่น (เช่นจาวาสคริปต์ไม่ใช่บิตเนทิฟ) ไม่มีสิ่งเช่นคอมไพเลอร์ javascript-to-native-code (หรือ to-purpose-c) วิธีนี้ทำได้ใน PhoneGap เช่นเดียวกัน จากมุมมองทางสถาปัตยกรรมกรอบทั้งสองนี้คล้ายกันมาก

ตอนนี้พวกเขาจะแตกต่างกันอย่างไร ใช่. ประการแรกไทเทเนียมดูเหมือนจะมีคุณสมบัติที่หลากหลายกว่า PhoneGap โดยเชื่อมต่อฟังก์ชั่นโทรศัพท์มือถือกับจาวาสคริปต์ อย่างเห็นได้ชัดที่สุด PhoneGap ไม่เปิดเผยองค์ประกอบ UI ดั้งเดิม (ถ้ามี) จำนวนมากเพื่อจาวาสคริปต์ ไทเทเนียมมี API แบบครอบคลุมที่สามารถเรียกใช้ในจาวาสคริปต์เพื่อสร้างและควบคุมการควบคุม UI ดั้งเดิมทุกชนิด การใช้ UI API เหล่านี้แอป Titanium สามารถดู "ดั้งเดิม" มากกว่าแอพ PhoneGap ประการที่สอง PhoneGap รองรับแพลตฟอร์มโทรศัพท์มือถือมากกว่าไทเทเนียม PhoneGap API นั้นเป็นแบบทั่วไปมากขึ้นและสามารถใช้กับแพลตฟอร์มที่แตกต่างกันเช่น iPhone, Android, Blackberry, Symbian และอื่น ๆ Titanium กำลังมุ่งเป้าไปที่ iPhone และ Android เป็นอย่างน้อยในตอนนี้ API บางตัวเป็นแพลตฟอร์มเฉพาะ (เช่น iPhone UI API)

ดังนั้นหากความกังวลของคุณต่อแอปของคุณคือทำให้ดูเป็น "เจ้าของภาษา" มากกว่าเดิมไทเทเนียมเป็นตัวเลือกที่ดีกว่า หากคุณต้องการ "พอร์ต" แอปของคุณไปยังแพลตฟอร์มอื่นได้ง่ายขึ้น PhoneGap จะดีกว่า

อัปเดตเมื่อวันที่ 13/8/2553: ลิงก์ไปยังคำตอบของพนักงานไทเทเนียมสำหรับคำถามของมิกกี้

อัปเดต 12/04/2010: ฉันตัดสินใจที่จะให้โพสต์นี้มีการตรวจสอบรายปีเพื่อให้ข้อมูลเป็นปัจจุบัน หลายสิ่งหลายอย่างมีการเปลี่ยนแปลงในปีที่ทำให้ข้อมูลบางอย่างในโพสต์เริ่มต้นล้าสมัย

การเปลี่ยนแปลงที่ใหญ่ที่สุดมาจากไทเทเนียม เมื่อต้นปีที่ผ่านมา Appcelerator เปิดตัว Titanium 1.0 ซึ่งแยกตัวจากรุ่นก่อนหน้าอย่างมากจากจุดยืนทางสถาปัตยกรรม ใน 1.0 ตัวควบคุม UIWebView ไม่ได้ใช้งานอีกต่อไป คุณเรียกไทเทเนียม API สำหรับฟังก์ชัน UI ใด ๆ แทน การเปลี่ยนแปลงนี้หมายถึงสองสิ่ง:

  1. UI แอปของคุณกลายเป็น Native อย่างสมบูรณ์ ไม่มี UI เว็บในแอปของคุณอีกต่อไปเนื่องจาก Titanium API ดั้งเดิมสามารถควบคุมความต้องการ UI ทั้งหมดของคุณได้ ไทเทเนียมสมควรได้รับเครดิตจำนวนมากจากการสำรวจแนวหน้า "Cross-Platform Native UI" มันให้โปรแกรมเมอร์ที่ชอบรูปลักษณ์ของ UI ดั้งเดิม แต่ไม่ชอบภาษาโปรแกรมอย่างเป็นทางการเป็นทางเลือก

  2. คุณจะไม่สามารถใช้ HTML หรือ CSS ในแอปของคุณเนื่องจากมุมมองเว็บหายไป (หมายเหตุ: คุณยังคงสามารถสร้างมุมมองเว็บใน Titanium ได้ แต่มีคุณสมบัติไทเทเนียมเพียงไม่กี่อย่างที่คุณสามารถใช้ประโยชน์จากมุมมองเว็บได้) Titanium Q&A: เกิดอะไรขึ้นกับ HTML & CSS?

  3. คุณจะไม่สามารถใช้ไลบรารี JS ยอดนิยมเช่น JQuery ที่คิดว่ามีวัตถุ DOM อยู่ คุณยังคงใช้ JavaScript เป็นภาษาการเข้ารหัสของคุณต่อไป แต่นั่นเป็นเทคโนโลยีเว็บเดียวที่คุณสามารถใช้ถ้าคุณมาที่ Titanium 1.0 ในฐานะโปรแกรมเมอร์เว็บ

วิดีโอไทเทเนียม: มีอะไรใหม่ใน Titanium 1.0

ตอนนี้ Titanium 1.0 รวบรวม JavaScript ของคุณเป็น "บิตพื้นเมือง" หรือไม่ ไม่ได้ในที่สุด Appcelerator ก็สะอาดหมดจดด้วยบล็อกผู้พัฒนานี้: Titanium Guide Project: JS Environmentโปรแกรมเมอร์เราเป็นคนของแท้มากกว่าในแผนกการตลาดใช่ไหม? :-)

ไปยัง PhoneGap ไม่มีสิ่งใหม่มากมายที่จะพูดเกี่ยวกับ PhoneGap การรับรู้ของฉันคือการพัฒนา PhoneGap ไม่ได้ใช้งานมากจนกระทั่ง IBM เพิ่มขึ้นในปีนี้ บางคนถึงกับถกเถียงกันว่า IBM กำลังมอบรหัสเพิ่มเติมให้กับ PhoneGap มากกว่า Nitobi มันเป็นเรื่องจริงหรือไม่ดีที่รู้ว่า PhoneGap กำลังพัฒนาอยู่

PhoneGap ยังคงยึดถือเทคโนโลยีเว็บอย่างต่อเนื่องเช่น HTML, CSS และ JavaScript ดูเหมือนว่า PhoneGap จะไม่มีแผนที่จะเชื่อมโยงฟีเจอร์ UI ดั้งเดิมกับ JavaScript เช่นเดียวกับไทเทเนียม ในขณะที่ Web UI ยังคงล้าหลัง UI ดั้งเดิมบนประสิทธิภาพและรูปลักษณ์และความรู้สึกดั้งเดิมช่องว่างดังกล่าวถูกปิดอย่างรวดเร็ว มีสองแนวโน้มในเทคโนโลยีเว็บที่สร้างความมั่นใจว่าฟีเจอร์ที่สดใสสำหรับ UI บนมือถือในแง่ของประสิทธิภาพคือ:

  1. เอ็นจิ้น JavaScript ย้ายจากล่ามไปยังเครื่องเสมือน JavaScript นั้น JIT ถูกคอมไพล์เป็นโค้ดเนทีฟเพื่อการทำงานที่รวดเร็วขึ้น โปรแกรม Safari JS: SquirrelFish Extreme

  2. การแสดงผลหน้าเว็บย้ายจากการใช้ CPU ไปสู่การใช้การเร่งความเร็วของ GPU งานกราฟิกเข้มข้นเช่นการเปลี่ยนหน้าและภาพเคลื่อนไหว 3 มิติกลายเป็นเรื่องราบรื่นมากขึ้นด้วยความช่วยเหลือของการเร่งฮาร์ดแวร์ Compositing เร่ง GPU ใน Chrome

การปรับปรุงดังกล่าวที่มาจากเบราว์เซอร์เดสก์ท็อปจะถูกส่งไปยังเบราว์เซอร์มือถืออย่างรวดเร็ว ในความเป็นจริงตั้งแต่ iOS 3.2 และ Android 2.0 การควบคุมมุมมองเว็บบนมือถือได้กลายเป็นประสิทธิภาพมากขึ้นและเป็นมิตรกับ HTML5 อนาคตของเว็บบนมือถือมีแนวโน้มที่จะดึงดูดเด็กตัวใหญ่เข้ามาสู่เมือง: JQuery เพิ่งประกาศกรอบเว็บของมือถือ ด้วย JQuery Mobile ที่ให้แกดเจ็ต UI และ PhoneGap ให้คุณสมบัติโทรศัพท์พวกเขาทั้งสองรวมกันสร้างแพลตฟอร์มเว็บมือถือที่สมบูรณ์แบบในความคิดของฉัน

ฉันควรพูดถึงSencha Touch ด้วยเป็นอีกหนึ่งเฟรมเวิร์กแกดเจ็ตของเว็บมือถือ Sencha Touch เวอร์ชัน 1.0 เปิดตัวเมื่อเร็ว ๆ นี้ภายใต้รูปแบบสิทธิการใช้งานคู่ซึ่งรวมถึง GPLv3 Sencha Touch ทำงานได้ดีกับ PhoneGap เช่นเดียวกับ JQuery Mobile

หากคุณเป็นโปรแกรมเมอร์GWT (เช่นฉัน) คุณอาจต้องการตรวจสอบGWT Mobileซึ่งเป็นโครงการโอเพ่นซอร์สสำหรับการสร้างเว็บแอปมือถือด้วย GWT ประกอบด้วยตัวห่อหุ้ม PhoneGap GWT ที่ทำให้สามารถใช้ PhoneGap ใน GWT


10
อืม ... คุณพูดว่า "PhoneGap ไม่ได้เป็นเพียง wrapper ดั้งเดิมของแอปบนเว็บ" คุณยังคงหารือเกี่ยวกับการเข้าถึงที่ให้คุณสมบัติการทำงานของอุปกรณ์ดั้งเดิม ฉันคิดว่าฉันพูดถึงเรื่องนี้เมื่อฉันเขียนว่า: "สิ่งที่ PhoneGap มอบให้นั้นเป็นสะพานเชื่อมระหว่าง JavaScript กับ API ของอุปกรณ์ดั้งเดิมดังนั้นคุณจึงเขียน JavaScript กับ PhoneGap APIs และ PhoneGap จึงทำการโทรที่เหมาะสมตามลำดับ แตกต่างจากการปรับใช้แอปพลิเคชันเว็บธรรมดาแบบเก่า " หากคุณลงทะเบียนเพียงเพื่อปฏิเสธคำแถลงของฉันคุณควรอ่านให้ครบถ้วน ฉันรู้ว่าโพสต์ของฉันมีความยาว แต่ ... ยังคง
Rory Blyth

5
ฉันน่าจะชัดเจนกว่า แต่รายละเอียดของ API ที่ซับซ้อนเนื่องจากมีการเปลี่ยนแปลงตลอดเวลาจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่งที่คุณสามารถทำได้ (ปรับปรุงให้ดีขึ้นมาก แต่เมทริกซ์ฟีเจอร์สำหรับแพลตฟอร์มที่แตกต่างกันนั้นมีการแก้ไขไม่กี่ครั้ง) ฉันเขียนเกี่ยวกับหนึ่งในความแตกต่างที่สำคัญและสิ่งที่ฉันเขียนนั้นถูกต้อง - ในความเป็นจริงมันสอดคล้องกับสิ่งที่คุณเขียน คุณเพียงแค่เข้าไปดูรายละเอียดเพิ่มเติมเกี่ยวกับ API ที่คุณสามารถเข้าถึงได้
Rory Blyth

9
สำหรับ Titanium และ "native bits" ฉันเดาว่าความผิดพลาดของฉันคืออ่านบนเว็บไซต์ของพวกเขา - อยู่ที่หน้าแรกของ Appcelerator: "มันทำงานได้ดีมากเพราะเรารวบรวม Titanium เป็นรหัสพื้นเมืองเพื่อประสิทธิภาพสูงสุด" บางทีคุณควรเขียนถึงพวกเขาเพื่อให้พวกเขารู้ว่าพวกเขาผิด ลองดู: tinyurl.com/yzlzvk5
Rory Blyth

6
สำหรับข้อมูลเพิ่มเติมโปรดดูคำถามที่พบบ่อยของไทเทเนียม - หัวข้อแรก "เป็นเว็บแอปมือถือหรือแอปพลิเคชั่นมือถือทั่วไป" ครอบคลุมปัญหาอย่างกระชับ ฉันจะโพสต์ข้อความที่นี่ แต่ฉันคิดว่าคุณควรจะได้รับมันจาก บริษัท โดยตรงเพราะฉันเชื่อว่าเจ้าหน้าที่ของผลิตภัณฑ์ของพวกเขา: tinyurl.com/ya9topg
Rory Blyth

4
เดนนิสขอบคุณสำหรับคำตอบที่ดี คุณยังพัฒนากับไทเทเนียมอยู่หรือไม่? คุณสามารถแสดงความคิดเห็นในขณะนี้ว่า 1.7 ได้ลงจอดแล้วหรือยัง?
PaulM

193

จากสิ่งที่ฉันรวบรวมนี่เป็นข้อแตกต่างระหว่างสองอย่างนี้:

  • PhoneGap นั้นสร้าง wrappers ดั้งเดิมสำหรับสิ่งที่ยังคงเป็นเว็บแอพ มันแยกออกเป็นโครงการ AnyYourPlatformIs ของคุณคุณสร้างมันและปรับใช้ หากเรากำลังพูดถึง iPhone (ซึ่งเป็นที่ที่ฉันใช้เวลา) ดูเหมือนจะไม่แตกต่างจากการสร้างตัวเรียกใช้งานแอปบนเว็บ (ทางลัดที่ได้รับไอคอน Springboard ของตัวเองเพื่อให้คุณสามารถเปิดใช้งานได้เช่น ( ชอบ ) แอปเนทีฟ) "แอป" นั้นยังคงเป็น html / js / etc และทำงานภายในตัวควบคุมเบราว์เซอร์ สิ่งที่ PhoneGap มอบให้นั้นเป็นสะพานเชื่อมระหว่าง JavaScript และ API อุปกรณ์เนทิฟ ดังนั้นคุณเขียน JavaScript กับ PhoneGap APIs และ PhoneGap จากนั้นทำการโทรที่เหมาะสม ในส่วนที่มันเป็นความแตกต่างจากการปรับใช้เว็บแอปธรรมดาเก่า

  • แหล่งไททาเนียมได้รับการรวบรวมลงในบิตพื้นเมือง นั่นคือ html / js / etc ของคุณ ไม่ได้แนบมากับโปรเจคและจากนั้นโฮสต์ภายในตัวควบคุมเว็บเบราว์เซอร์ ตัวอย่างเช่นหมายความว่าอินเทอร์เฟซของแอปของคุณจะประกอบด้วยส่วนประกอบ UI ดั้งเดิม มีวิธีรับรูปลักษณ์และความรู้สึกแบบดั้งเดิมโดยไม่ต้องมีแอพแบบดั้งเดิม แต่ ... ดี ... เป็นฝันร้ายที่มักจะกลายเป็น

ทั้งสองมีความคล้ายคลึงกันในการที่คุณเขียนเนื้อหาทั้งหมดของคุณโดยใช้เทคโนโลยีเว็บทั่วไป (html / js / css / blah blah blah) และคุณได้รับการเข้าถึงฟังก์ชั่นพื้นฐานผ่าน JavaScript API ที่กำหนดเอง

แต่อีกครั้งแอพ PhoneGap (PhonGapps ฉันไม่รู้ ... นั่นคือชื่อโง่หรือเปล่าง่ายกว่าที่จะพูดว่า - ฉันรู้มากว่า) เริ่มชีวิตของพวกเขาในฐานะเว็บแอปและจบชีวิตด้วยเว็บแอป บน iPhone html / js / etc ของคุณ ถูกเรียกใช้งานภายในการควบคุม UIWebView และ API การ PhoneGap JavaScripts การโทร js ของคุณจะถูกกำหนดเส้นทางไปยัง API ดั้งเดิม

แอพ Titanium กลายเป็นแอพพื้นฐาน - พัฒนาโดยใช้เทคโนโลยีเว็บ dev

สิ่งนี้หมายความว่าอย่างไร

  1. แอพ Titanium จะดูเหมือนแอพ"ของจริง" เพราะในที่สุดมันก็เป็นแอพ "ของจริง"

  2. แอพ PhoneGap จะมีลักษณะเหมือนเว็บแอปที่โฮสต์อยู่ในการควบคุมเบราว์เซอร์เพราะท้ายที่สุดแล้วมันเป็นแอปพลิเคชันเว็บที่โฮสต์ในการควบคุมเบราว์เซอร์

สิ่งใดที่เหมาะกับคุณ

  • หากคุณต้องการเขียนแอพพื้นฐานโดยใช้ทักษะการพัฒนาเว็บ Titanium เป็นทางออกที่ดีที่สุดของคุณ

  • หากคุณต้องการเขียนแอพโดยใช้ทักษะการพัฒนาเว็บที่คุณสามารถนำไปใช้กับหลายแพลตฟอร์มได้อย่างสมจริง (iPhone, Android, Blackberry และอื่น ๆ ที่พวกเขาตัดสินใจรวมไว้) และถ้าคุณต้องการเข้าถึงชุดย่อยของคุณสมบัติแพลตฟอร์มดั้งเดิม (GPS) accelerometer และอื่น ๆ ) ผ่าน JavaScript API แบบครบวงจร PhoneGap น่าจะเป็นสิ่งที่คุณต้องการ

คุณอาจจะถามว่า: ทำไมฉันต้องการเขียน PhoneGapp (ฉันตัดสินใจใช้ชื่อ) แทนที่จะเป็นแอปพลิเคชันเว็บที่โฮสต์บนเว็บ ฉันยังคงเข้าถึงฟีเจอร์ของอุปกรณ์เนทีฟบางอย่างไม่ได้ แต่ยังมีความสะดวกในการปรับใช้เว็บจริงแทนที่จะบังคับให้ผู้ใช้ดาวน์โหลดแอป "ดั้งเดิม" ของฉันและติดตั้งหรือไม่

คำตอบคือ: เพราะคุณสามารถส่ง PhoneGapp ของคุณไปยัง App Store และคิดค่าใช้จ่าย คุณยังได้รับไอคอนตัวเรียกใช้งานซึ่งทำให้ผู้ใช้ลืมแอปของคุณได้ยากขึ้น (ฉันมักจะลืมบุ๊กมาร์กมากกว่าไอคอนแอพ)

คุณสามารถเรียกเก็บเงินสำหรับการเข้าถึงแอปพลิเคชันเว็บที่โฮสต์บนเว็บของคุณได้แน่นอน แต่มีคนกี่คนที่ต้องผ่านกระบวนการนี้ ด้วย App Store ฉันเลือกแอปแล้วแตะปุ่ม "ซื้อ" ป้อนรหัสผ่านและฉันก็เสร็จแล้ว มันติดตั้ง ไม่กี่วินาทีต่อมาฉันใช้มัน หากฉันต้องใช้อินเทอร์เฟซการทำธุรกรรมผ่านเว็บบนมือถือของคนอื่นซึ่งน่าจะหมายถึงการแตะชื่อที่อยู่หมายเลขโทรศัพท์หมายเลข CC และสิ่งอื่น ๆ ที่ฉันไม่ต้องการแตะออก ไม่ผ่านมันไป นอกจากนี้ฉันเชื่อมั่นใน Apple - ฉันมั่นใจว่า Steve Jobs จะไม่บันทึกข้อมูลของฉันและเก็บค่าสมัครสมาชิกนิตยสารซุกซนไว้ใน CC ของฉันเพื่อเริ่มเล่น

อย่างไรก็ตามยกเว้นความจริงที่ว่าเทคโนโลยีเว็บ dev นั้นมีส่วนเกี่ยวข้อง PhoneGap และ Titanium นั้นแตกต่างกันมาก - จนถึงจุดที่เปรียบเทียบได้เพียงผิวเผินเท่านั้น

ฉันเกลียดแอปพลิเคชันบนเว็บโดยผู้ใช้และหากคุณอ่านบทวิจารณ์ของ iTunes App Store ผู้ใช้จะสังเกตเห็นได้ดี ฉันจะไม่ตั้งชื่อชื่อใด ๆ แต่ฉันมี "แอพ" สองสามตัวบนโทรศัพท์ของฉันที่มีลักษณะและการทำงานเหมือนขยะและเป็นเพราะพวกเขาเป็นเว็บแอปที่โฮสต์ภายในอินสแตนซ์ของ UIWebView ถ้าฉันต้องการใช้เว็บแอปฉันจะเปิด Safari แล้วคุณก็รู้ว่าจะไปที่ใด ฉันซื้อ iPhone เพราะฉันต้องการสิ่งที่เป็น iPhone-y ฉันไม่มีปัญหาในการใช้พูดแอปพลิเคชันเว็บของ Google ที่ซุกซนใน Safari แต่ฉันก็รู้สึกว่าถูกหลอกหาก Google เพิ่งคั่นหน้าเว็บที่ Springboard โดยนำเสนอแอปพลิเคชันเว็บเป็นภาษาเนทีฟ

ต้องไปแล้ว แฟนของฉันมองดูใบหน้าของเธอในแบบที่คุณ - ได้โปรดหยุดใช้โดยใช้คอมพิวเตอร์เป็นเวลาสามวินาที


22
ปัญหาของคำตอบก็คือส่วนใหญ่ผิด ดูคำตอบของ DennisJZH ด้านล่าง
jbwiv

9
@jbwiv - ปัญหาเกี่ยวกับความคิดเห็นของคุณคือส่วนใหญ่จะขึ้นอยู่กับคำตอบของ DennisJZH ซึ่งส่วนใหญ่ผิด ดูคำตอบของฉันด้านล่าง เพื่อหลีกเลี่ยงความสับสนต่อไปผมขอแนะนำให้คุณทั้งสองจะดูที่เอกสารอย่างเป็นทางการสำหรับผลิตภัณฑ์และยังอ่านโพสต์ของฉันเต็ม ขอบคุณมาก.
Rory Blyth

15
@ Matthew - โอ้ gf มีลำดับความสำคัญแน่นอน :) สำหรับคำถามเหล่านี้ไม่เกี่ยวข้องโดยทั่วไปเนื่องจากการเปลี่ยนแปลงเกิดขึ้น (ถ้าฉันเข้าใจผิดความหมายของคุณฉันขอโทษ) ความจริงก็คือผู้คนต้องการคำตอบสำหรับปัญหาที่มีอยู่ในขณะนี้ เราอาจโต้เถียงว่าไม่มีสิ่งใดเกิดขึ้นเนื่องจากโลกกำลังจะสุกในอนาคตโดยดวงอาทิตย์เมื่อมันเผาผลาญเชื้อเพลิงและขยายทำลายดาวเคราะห์ของเรา แต่ ... สิ่งนี้ทำให้เราทำอะไรได้ในขณะที่เรารอ
Rory Blyth

2
@ Matthew - นอกจากนี้บุคคลนี้ยินดีลองสิ่งใหม่ ๆ อาจไม่ใช่วิธีที่คุณชอบ แต่ก็ยังใหม่อยู่ คุณยังต้องเรียนรู้เกี่ยวกับการพัฒนา iPhone (อ่านเอกสารเกี่ยวกับหลักเกณฑ์ UI และอื่น ๆ ) ไม่มีเหตุผลอันสมควรที่จะต้องพยายามทำให้ใครบางคนหลุดพ้นจากการพยายามทำบางสิ่งให้สำเร็จเพราะคุณไม่เห็นคุณค่าของมัน ตัวอย่างเช่นฉันเกลียดเห็ด แต่อย่าพยายามห้ามไม่ให้คนอื่นกินพวกเขา ฉันเข้าใจว่าพวกเขาชอบเห็ดในแบบเดียวกับที่ฉันรักหญ้าฝรั่นและฉันรู้ว่าฉันไม่ต้องการให้ใครพยายามเอาหญ้าฝรั่นไปจากฉันเพียงเพราะพวกเขาไม่ชอบมัน
Rory Blyth

1
ใช่ แต่ถ้าคุณเป็นตัวช่วยสร้างเทคโนโลยีเว็บที่แท้จริงฉันมั่นใจว่าจะไม่มีใครรู้ว่า "เว็บแอป" ของคุณไม่ใช่แอพทั่วไป ในกรณีที่เห็นได้ชัดว่าแอพเป็น "เว็บแอพ" ห่อใน UIWebView นั่นหมายความว่าผู้สร้างไม่ได้ใช้เวลาหรือใส่ใจมากพอที่จะทำให้มันมีคุณภาพสูงพอ
trusktr

62

ฉันกำลังเรียนหลักสูตรการพัฒนา 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 เพิ่มความเร็วรอบการทดสอบและข้อผิดพลาดในการดีบัก]


1
ด้วยการเปิดตัวไททาเนียม 1.4 ตอนนี้ฉันได้ดูไฟล์. apk ที่ส่งมาจากไททาเนียมและพวกมันก็ไม่ค่อยดีเท่าไหร่ มันทำงานได้ แต่ไดเรกทอรีบิลด์ที่สมบูรณ์นั้นอยู่ในประเภทเดียวกัน นั่นหมายความว่าข้อบกพร่องเล็ก ๆ น้อย ๆ ของการสร้างเช่นการคัดลอกหน้าจอสแปลชไปยังสถานที่ต่าง ๆ สามแห่งในระหว่างการสร้างนั้นจู่ๆมันก็กินเพราะฉันมีภาพหน้าจอขนาดใหญ่ประมาณ 1 เมกะไบต์ในโทรศัพท์ และนั่นเป็นเพียงตัวแปรที่ง่ายมากของสวัสดีโลก ซอร์สโค้ดจาวาสคริปต์จะถูกคัดลอกไปยังบิลด์และลงในไฟล์. apk และส่งไปยังลูกค้าทุกคน
288299

รีลีส 1.5 ออกแล้วและได้รับการกล่าวขานว่าสำคัญสำหรับแพลตฟอร์ม Android ฉันจะไม่ทดสอบสิ่งนี้เพราะฉันจำเป็นต้องเรียนรู้การพัฒนา Android ดั้งเดิมตอนนี้
288299

รีลีส 1.5 ออกแล้วและได้รับการกล่าวขานว่าสำคัญสำหรับแพลตฟอร์ม Android ฉันจะไม่ทดสอบสิ่งนี้เมื่อเราได้เรียนรู้การพัฒนา Android ดั้งเดิมแล้ว เนื่องจากเราทุกวันนี้ได้รับการสอนเกี่ยวกับวงจรชีวิตของ Android พื้นเมืองฉันเชื่อว่าปัญหาที่ฉันมีกับหน้าต่างบางส่วนที่สูญเสียเนื้อหาตัวแปรในครั้งที่สองที่พวกเขาแสดงนั้นเกิดจากไททาเนียมไม่ได้บันทึกสถานะก่อนสถานะ onPause () developer.android.com/guide/topics/fundamentals.html#lก็ตาม การเรียก Titanium.Map.MapView.hide () และแสดงในภายหลัง () อาจฆ่าตัวแปรท้องถิ่นของคุณสำหรับแผนที่
user288299

1
เพิ่งเล่นกับ 1.7 คำอธิบายของคุณถูกต้อง แพลตฟอร์มนี้ได้รับผลกระทบอย่างมากด้วยประสิทธิภาพที่ยอดเยี่ยมและการทำงานหลายชั่วโมงในการค้นหา หากคุณมีทรัพยากรในช่วงเริ่มต้นของโครงการให้สร้างเนทิฟสำหรับแต่ละแพลตฟอร์ม
Jonathon Kresner

25

Corona SDK (Ansca Mobile) ใช้ Lua เป็นภาษาการเขียนโปรแกรม ดู lua.org สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Lua

ในขณะที่เราวางแผนที่จะเพิ่มการรวมเว็บเพิ่มเติมและองค์ประกอบเนทีฟ UI โฟกัสของเราจะมีแนวโน้มที่จะใช้งานแอพพลิเคชั่นที่เน้นกราฟิกเช่นการพัฒนาเกมเมื่อเทียบกับเทคโนโลยีบนเว็บ กล่าวอีกนัยหนึ่งเราไม่คาดหวังให้ผู้คนเขียนแอป Corona ทั้งหมดใน Javascript / HTML / CSS


คุณมีแผนหรือมาตราส่วนเวลาสำหรับการเขียนสคริปต์ UI ดั้งเดิมหรือไม่ ฉันทำมาแล้วไม่นานกับ Lua และฉันอยากจะรัก Corona สำหรับการพัฒนาที่ไม่ใช่เกม Titanium ดูเหมือนจะล้ำหน้าไปอีกเล็กน้อย
uroc

4
สวัสดีอืม เรามีฟีเจอร์ UI ดั้งเดิมที่จะมาถึงในรุ่น 1.1 (ETA ในสัปดาห์นี้!) และอีกมากมายที่จะติดตามในไม่ช้า อย่างไรก็ตามความรู้สึกของไทเทเนียมคือพวกเขาทำงานได้ดีในการเปิดเผยองค์ประกอบ UI ดั้งเดิมจำนวนมากในขณะที่เรากำลังจะมุ่งเน้นไปที่องค์ประกอบ UI ที่สำคัญที่สุดในขณะที่ผลักดันความพยายามด้านวิศวกรรมเข้าสู่คุณลักษณะภาพเคลื่อนไหวและการแสดงผลมากขึ้น เหตุผลก็คือ (i) มีผลิตภัณฑ์ที่ดีอยู่แล้วสำหรับแอพ UI อย่างเดียว (ii) UI เป็นส่วนที่เป็นมิตรที่สุดของ Cocoa (ค่อนข้างพูดได้!) แต่ (iii) สิ่งใด ๆ ที่เกี่ยวข้องกับภาพเคลื่อนไหว OpenGL เป็นจุดเจ็บปวดบน iPhone ขณะ
Evan Kirchhoff

ดูเหมือนว่า Corona จะเหมาะสำหรับการพัฒนาเกมแทนแอพใช่มั้ย
anticafe

18

ฉันทำงานกับ Titanium มานานกว่าหนึ่งสัปดาห์แล้วและรู้สึกว่าฉันมีความรู้สึกที่ดีเกี่ยวกับจุดอ่อนของมัน

1) หากคุณหวังว่าคุณจะใช้รหัสเดียวกันบนหลายแพลตฟอร์มขอให้โชคดี! คุณจะเห็นอะไรบางอย่างเช่น backgroundGradient และต้องประหลาดใจจนกว่าคุณจะทราบว่า Android เวอร์ชันไม่รองรับ ถ้าอย่างนั้นก็ต้องกลับไปใช้ภาพไล่ระดับสีและอาจใช้ทั้งสองเวอร์ชันเพื่อทำให้โค้ดง่ายขึ้นใช่มั้ย

2) พฤติกรรมแปลก ๆ มากมายบน Titanium android sdk คุณต้องเข้าใจว่าหน้าต่าง "หนัก" เพียงเพื่อให้ได้ปุ่มย้อนกลับมาทำงานหรือการติดตามเหตุการณ์ที่ดีขึ้น นี่ไม่ใช่วิธีที่แพลตฟอร์ม Android เป็นจริง แต่เป็นวิธีที่ Titanium พยายามทำให้ API ทำงานได้

3) การโยนของคุณในที่มืดสิ่งต่าง ๆ จะล้มเหลวและคุณต้องเริ่มแสดงความคิดเห็นรหัสและเมื่อคุณพบมันอย่าใช้มัน มีข้อบกพร่องบางอย่างที่เห็นได้ชัดเช่นการวางแนวและร้อยละบน Android ที่ได้รับปัญหามานานกว่าหกเดือน

4) บั๊ก .... มีข้อบกพร่องมากมายและพวกเขาจะได้รับการรายงานนั่งเป็นเวลาหลายเดือนรับการแก้ไขในไม่กี่วัน ฉันประหลาดใจที่พวกเขากำลังวางแผนที่จะปล่อยแบล็กเบอร์รี่มือถือ sdk เมื่อมีปัญหาอื่น ๆ อีกมากมายกับ Android

5) Titanium Iphone กับ Titanium javascript engine นั้นแตกต่างกันอย่างสิ้นเชิง ในรุ่น Android คุณสามารถดาวน์โหลดไฟล์จาวาสคริปต์ระยะไกลรวมและใช้ไลบรารีเช่น mootools, jquery และอื่น ๆ ฉันอยู่ในสวรรค์เมื่อฉันพบสิ่งนี้เพราะฉันไม่จำเป็นต้องรวบรวมแอพ Android ของฉัน กระบวนการติดตั้ง android apk ใช้เวลานานมาก! Iphone ไม่มีสิ่งใดที่เป็นไปได้และรุ่น iphone มีเครื่องมือจาวาสคริปต์ที่เร็วกว่ามาก

หากคุณอยู่ห่างจากส่วน UI ดั้งเดิมมากมายเช่นใช้ setInterval เพื่อตรวจจับการเปลี่ยนแปลงการวางแนวการไล่ระดับสีไล่ตามลืมเรื่องปุ่มย้อนกลับสร้างภาพเคลื่อนไหวของคุณเองลืมส่วนหัวของหน้าต่างแถบเครื่องมือและแดชบอร์ด คุณสามารถสร้าง API ที่ใช้ได้กับทั้งสองอย่างซึ่งไม่ต้องการการเขียนซ้ำจำนวนมาก แต่ ณ จุดนั้นมันช้าเหมือนเว็บแอพ

ดังนั้นมันคุ้มค่าหรือไม่ หลังจากความเจ็บปวดทั้งหมดมันคุ้มค่าทุกนาที คุณสามารถทำให้ตรรกะเป็นนามธรรมและสร้าง UI ที่แตกต่างกันสำหรับแต่ละคนแทนที่จะเป็นอย่างอื่น ไทเทเนียมช่วยให้คุณสร้างแอพพลิเคชั่นของเหลวที่ให้ความรู้สึกรวดเร็ว คุณสูญเสียความสามารถในการจัดวางที่มีประสิทธิภาพของแต่ละแพลตฟอร์ม แต่ถ้าคุณคิดว่าง่ายสิ่งต่าง ๆ สามารถทำได้โดยใช้ภาษาเดียว

ทำไมไม่เป็นเว็บแอป ในตลาดโทรศัพท์มือถือระดับเริ่มต้นมันช้ามากในการสร้าง webview และใช้หน่วยความจำจำนวนมากที่คุณสามารถใช้เพื่อทำตรรกะที่ซับซ้อนมากขึ้น


10

นี่คือการวิเคราะห์เชิงลึกล่าสุดของ Appcelerator และ PhoneGap: http://savagelook.com/blog/portfolio/a-deeper-look-at-app-ercel-and-phonegap

และนี่คือรายละเอียดเพิ่มเติมเกี่ยวกับความแตกต่างของโปรแกรม: http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript



8

การสร้างวิดเจ็ต HTML5 นั้นดูเหมือนว่าวิดเจ็ต iphone เป็นสิ่งหนึ่ง แต่การทำให้มันทำงานได้ดีพอ ๆ กันก็เป็นอีกเรื่องหนึ่งโดยสิ้นเชิง ประสิทธิภาพของภาพเคลื่อนไหว html5 (แม้แต่การเปลี่ยนมุมมองธรรมดา) การเลื่อนรายการยาวการตอบสนองต่อท่าทางรู้สึกเหนียวและกระตุก ผู้ใช้ iPhone จะสังเกตเห็นความแตกต่าง

นอกจากนี้ยังมีความแตกต่างบางอย่างในรูปแบบของท่าทางที่รองรับโดยอุปกรณ์ต่าง ๆ ซึ่งส่งผลให้เกิดรหัสเฉพาะของแพลตฟอร์มและปัญหาการใช้งานเช่นกัน

ฉันจะอยู่กับแอพที่ใช้อยู่ตอนนี้ฉันเดาแล้ว


7

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) คล้ายกันมากกับ PhoneGap แต่เป็นเพียงกรอบงานเดียวที่มี:

  1. รูปแบบ Model View Controller (ตามที่เว็บเฟรมส่วนใหญ่มีให้)
  2. Object Relational Manager
  3. รองรับสมาร์ทโฟนยอดนิยมทั้งหมด (รวมถึง Windows Phone 7)
  4. บริการการพัฒนาที่โฮสต์ (ไม่ใช่แค่การสร้างที่โฮสต์): http://rhohub.com
  5. ดีบักเกอร์เต็มรูปแบบและโปรแกรมจำลอง SDK น้อยใน RhoStudio IDE
  6. รองรับข้อมูลออฟไลน์ที่ซิงโครไนซ์

6

สำหรับใครที่สนใจไทเทเนียมฉันต้องบอกว่าพวกเขาไม่มีเอกสารที่ดีมากบางคลาส, คุณสมบัติ, วิธีการที่ขาดหายไป แต่จำนวนมากคือ "เอกสาร" ในแอปตัวอย่างของพวกเขาคือ KitchenSink ดังนั้นจึงไม่เลว


5

ความเข้าใจของฉันเกี่ยวกับ PhoneGap คือพวกเขาให้ Javascript APIs แก่ iPhone APIs ส่วนใหญ่

Titanium ดูเหมือนง่ายขึ้นสำหรับพื้นหลังนักพัฒนาเว็บ เป็นไฟล์ XML อย่างง่ายในการสร้างแอปพลิเคชัน TabView ขั้นพื้นฐานจากนั้นทุกอย่างในพื้นที่เนื้อหาจะถูกควบคุมโดย HTML / JS ฉันยังรู้ว่า Titanium ให้การเข้าถึงจาวาสคริปต์กับเฟรมเวิร์กบางตัว (โดยเฉพาะการเข้าถึงข้อมูลตำแหน่งที่ตั้งหมายเลขโทรศัพท์ ฯลฯ )

อัปเดต: Titanium เพิ่ม Maps API ในเวอร์ชัน 0.8 ของเฟรมเวิร์ก


ตาม "Titanium ดูเหมือนง่ายขึ้นสำหรับพื้นหลังนักพัฒนาเว็บ" คำให้การ. คุณหมายถึงง่ายกว่าพื้นเมืองใช่มั้ย ดูเหมือน PhoneGap จะสอดคล้องกับใครบางคนที่มีพื้นหลังนักพัฒนาเว็บมากกว่า Titanium ...
Serhiy

4

คุณควรเรียนรู้วัตถุประสงค์และการใช้งานแอพแบบเนทีฟ อย่าพึ่งพาสิ่งเหล่านี้ที่คุณคิดว่าจะทำให้ชีวิตง่ายขึ้น Apple ทำให้แน่ใจว่าวิธีที่ง่ายที่สุดคือการใช้เครื่องมือและภาษาท้องถิ่น สำหรับจาวาสคริปต์ของคุณ 100 บรรทัดฉันสามารถทำเช่นเดียวกันในรหัส 3 บรรทัดหรือไม่มีรหัสเลยขึ้นอยู่กับองค์ประกอบ ดูบทเรียนบางส่วน - ถ้าคุณเข้าใจจาวาสคริปต์แล้ววัตถุประสงค์ c ไม่ใช่เรื่องยาก การแก้ปัญหาเป็นเรื่องที่น่าสังเวชและแอปเปิ้ลสามารถดึงปลั๊กออกได้ทุกเมื่อที่ต้องการ


3
แอปเปิ้ลอาจดึงปลั๊ก ... นั่นคือสิ่งที่ฉันกำลังที่เกี่ยวข้องกับ
มิกกี้ Shine

6
อ้างอิง: "Apple ทำให้แน่ใจว่าวิธีที่ง่ายที่สุดคือการใช้เครื่องมือและภาษาท้องถิ่น" พวกเขาไม่ได้จริงๆ หากพวกเขาต้องการทำสิ่งนั้นพวกเขาจะจัดหาพูดสนับสนุน Python มีการจัดเก็บขยะ (ซึ่งเพียงอย่างเดียวจะช่วยลดความถี่ของการเกิดปัญหา - แอป iPhone ส่วนใหญ่จะเขียนชะมัด) ฉันขุด ObjC และเช่นเดียวกับคุณฉันควรใช้มากกว่า js แต่นั่นไม่ใช่คำถามของ op MonoTouch ทำให้การพัฒนาง่ายกว่าตัวเลือกเหล่านี้ ฉันสามารถสร้างพร็อพเพอร์ตี้ในหนึ่งบรรทัด; รับการอ้างอิงไปยังโฟลเดอร์เอกสารที่มีหนึ่งบรรทัด ... และอื่น ๆ สามารถปรับปรุงบิตของ Apple ได้อย่างมาก
Rory Blyth

6
ทางออกที่ดีสำหรับ Apple คือให้ทางเลือก ObjC ของตนเอง บางอย่างสำหรับแอพที่ไม่ต้องการระดับการควบคุม ObjC ให้คุณ โดยเฉพาะอย่างยิ่งสำหรับแอประดับองค์กรที่ผู้พัฒนาซอฟต์แวร์ควรมุ่งเน้นไปที่การทำงานมากกว่าการนับการอ้างอิงและคุณสมบัติของทรัพย์สิน หรืออย่างน้อยที่สุดโดยอัตโนมัติด้วย Xcode และคอมไพเลอร์ ให้สวิตช์แก่ฉันเพื่อให้สามารถตั้งสมมติฐานบางอย่างและสามารถข้ามในรหัสที่ dev เลือก (เช่น: keep และ @synthesize คุณสมบัติวัตถุของฉันโดยค่าเริ่มต้น - และเช่น "จริง" ObjC 2.0 สร้าง local backup ของฉัน สำหรับฉัน). อื่น ๆ
Rory Blyth

2
โดยพื้นฐานแล้วสิ่งที่คุณพูดคือให้เราเขียนแอพ IPhone ใน C # :)
Justin

3

จากโซลูชันที่คุณกล่าวถึงจะไม่มีวิธีใดที่จะให้คุณสามารถเข้าถึงกรอบการทำงานของ MapKit ที่นำมาใช้โดยตรงใน OS 3.0

เนื่องจากวิดเจ็ต HTML ของ Google Maps นั้นไม่ดีเท่ากับ MapKit (ดูตัวอย่างจาก Google Latitude) คุณอาจดีที่สุดในการพัฒนาแอพพลิเคชั่น Cocoa touch แบบดั้งเดิมหรือเลือกโซลูชันที่คุณสามารถขยายเพื่อเพิ่มการรวม MapKit PhoneGap สามารถขยายได้ในลักษณะนี้ (เป็นโอเพ่นซอร์สดังนั้นจึงเป็นค่าเริ่มต้น) และโซลูชันอื่น ๆ อาจมีเช่นกัน

แก้ไข: Titanium ตอนนี้รองรับ MapKit แล้ว


ขอบคุณ. แต่ PhoneGap กับ Titanium มีความแตกต่างกันหรือไม่?
Mickey Shine

1
MapKit มีวางจำหน่ายแล้วใน Titanium เป็นเวลานาน
jhaynie

@jhaynie: ขอบคุณ ฉันได้แก้ไขคำตอบนี้เพื่อให้เห็นว่า Titanium ได้รับการสนับสนุนแล้ว (ไม่ใช่เมื่อมันถูกเขียนในเดือนกันยายน)
rpetrich

1

ฉันลองโคโรนาแล้ว มันดีจนกระทั่งฉันค้นพบว่ามันไม่รองรับการสตรีมเสียง mp3 ดังนั้นฉันหยุดตรงนั้น ฉันคิดว่าถ้าฉันอยากเป็นนักพัฒนาแอพ iphone ฉันควรเรียนรู้ obj c ทั้งหมดที่ฉันต้องการสร้างแอพที่มีรายการสถานีวิทยุและคุณคลิกที่มันเริ่มเล่น


2
Corona รองรับการเล่นไฟล์ MP3 ( developer.anscamobile.com/reference/index/mediaplaysound )
Luc Stepniewski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.