การพัฒนาแอปพลิเคชันมือถือข้ามแพลตฟอร์ม [ปิด]


109

มีการเปิดตัวแพลตฟอร์มมือถือมากขึ้นเรื่อย ๆ และมี sdk ให้บริการสำหรับนักพัฒนา มีแพลตฟอร์มมือถือที่หลากหลาย: Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo เป็นต้น

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

หรือมีความเป็นไปได้โดยการเขียนโค้ดเป็น html (ประเภทของเครื่องมือ) แล้วโหลดลงในแอปพลิเคชันดั้งเดิม ฉันรู้เกี่ยวกับ Android ซึ่งเราสามารถเพิ่มมุมมองเว็บลงในแอปพลิเคชันได้โดยการโทรsetContentView(view)

โปรดแบ่งปันรายละเอียดชั้นเรียนที่เราสามารถเพิ่มมุมมอง html ลงในแอปพลิเคชันเนทีฟของแพลตฟอร์มประเภทต่างๆที่คุณรู้จัก

จุดประสงค์ของชุดข้อความนี้คือการแบ่งปันรายละเอียดทั่วไปกับนักพัฒนา ทำเครื่องหมายเป็นวิกิชุมชน

เครื่องมือและไลบรารีข้ามแพลตฟอร์ม

  • XMLVM, Codename Oneและ iSpectrum (คอมไพล์โค้ด Java จากแอพ Android หรือสร้างใหม่ตั้งแต่ต้น

  • Phone Gap (แอพมือถือข้ามแพลตฟอร์ม)

  • Titanium (เพื่อสร้างแอพมือถือและเดสก์ท็อปดั้งเดิมด้วยเทคโนโลยีเว็บ)

  • Mono Touch (C # สำหรับ iPhone)

  • rhomobile - http://rhomobile.com/ ตัวอย่างอยู่ที่นี่: http://github.com/rhomobile/rhodes-system-api-samples

  • Sencha Touch - Sencha Touch เป็นเฟรมเวิร์กแอพมือถือ HTML5 ที่ช่วยให้คุณพัฒนาเว็บแอพที่มีรูปลักษณ์และความรู้สึกดั้งเดิมบนอุปกรณ์หน้าจอสัมผัสของ Apple iOS และ Google Android http://www.sencha.com/products/touch/

  • Corona - ไลบรารีข้ามแพลตฟอร์มของแอปพลิเคชัน Iphone / Ipad / Android น่ากลัวเกินไป http://anscamobile.com/corona/

  • คำแนะนำในการพอร์ตแอพ Android ที่มีอยู่ไปยัง Windows Phone 7 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers

  • Jquery Mobile Touch-Optimized Web Framework สำหรับสมาร์ทโฟนและแท็บเล็ต

1
ในขณะที่ฉันพบหนึ่งหัวข้อที่น่าสนใจซึ่งเกี่ยวข้องกับหัวข้อนี้stackoverflow.com/questions/3326110/…
sohilv

อีกโพสต์ดีๆเกี่ยวกับ cross platform dev: stackoverflow.com/questions/51988/…
sohilv

1
โหวตให้ปิดรายการนี้ว่าซ้ำกัน สิ่งนี้สำคัญเกินกว่าที่จะแยกเป็นสองคำถาม stackoverflow.com/questions/51988/…
ripper234

1
ฉันเพิ่งเขียนบล็อกเกี่ยวกับstronia.com/2014/05/building-cross-platform-mobile-apps.html
Anshu Dwibhashi

คำตอบ:


97

คำตอบของฉันที่นี่ครอบคลุมถึงข้อ จำกัด ทางเทคนิคบางประการของเครื่องมือ cross-platfromแต่ขอขยายความหน่อย:

ฉันคิดว่าเครื่องมือข้ามแพลตฟอร์มในอดีตมักจะเป็นค่าไถ่เนื่องจากเครื่องมือดังกล่าวมีจุดเน้นทางปรัชญาที่ไม่ถูกต้อง

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

สิ่งที่เครื่องมือข้าม plaform จะไม่ขายเป็นผลประโยชน์ที่พวกเขานำให้กับผู้ใช้

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

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

ทั้งหมดนี้หมายความว่าในกรณีการใช้งานส่วนใหญ่เครื่องมือข้ามแพลตฟอร์มทำให้ผู้ใช้ปลายทางมีผลิตภัณฑ์ที่ด้อยกว่าเมื่อเทียบกับเครื่องมือที่สร้างด้วย API เฉพาะแพลตฟอร์ม ผู้ใช้จะมีทางเลือกที่ดีกว่าเสมอ

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

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


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

10
ตามทฤษฎีแล้วการพัฒนาที่เร็วขึ้นอาจจะดีกว่าสำหรับผู้ใช้ปลายทาง แต่นั่นไม่ใช่พื้นฐานทางปรัชญา APIs ข้ามแพลตฟอร์มส่วนใหญ่ ฉันได้เห็นความพยายามมากมายในการใช้เครื่องมือดังกล่าวในหลาย ๆ สภาพแวดล้อมและการมุ่งเน้นไปที่การทำให้ชีวิตของนักพัฒนาง่ายขึ้นโดยคำนึงถึงคุณภาพของผลิตภัณฑ์ขั้นสุดท้ายอยู่เสมอ ยิ่งไปกว่านั้นคำมั่นสัญญาว่าจะเร็วขึ้นและถูกลง ดูเหมือนว่าจะมีการแสดงการหยุดผูกปมที่ไหนสักแห่งที่กินเวลาส่วนใหญ่ที่บันทึกไว้
TechZen

5
เพื่อขับเคลื่อนจุดกลับบ้านของฉันให้พิจารณาสิ่งนี้: มี API ข้ามแพลตฟอร์มสำหรับฮาร์ดแวร์และระบบปฏิบัติการประเภทต่างๆ โดยส่วนตัวแล้วคุณใช้แอพข้ามแพลตฟอร์มกี่แอพเป็นประจำ? คุณเคยใช้แอพข้ามแพลตฟอร์มกี่แอพที่คุณคิดว่าดี? ผู้คนผลักดัน API ข้ามแพลตฟอร์มเนื่องจากพวกเขามีมากกว่าหนึ่งแพลตฟอร์ม แต่พวกเขาไม่เคยประสบความสำเร็จที่ไหนเลย พวกเขาไม่ประสบความสำเร็จเพราะไม่ได้ผลิตแอปที่มีประโยชน์สูงสุดสำหรับผู้ใช้
TechZen

4
@TechZen - ตอนนี้ฉันใช้ StackOverflow บนเว็บเบราว์เซอร์และไม่เห็นเหตุผลใด ๆ ที่จะมองหาไคลเอนต์ดั้งเดิม ฉันคิดว่าคุณกล่าวอ้างเกินจริง
Youval Bronicki

4
ฉันค่อนข้างเสียใจที่การอภิปรายเชิงปรัชญาเชิงอัตวิสัยประเภทนี้ได้รับเครื่องหมายที่ถูกต้องในเว็บไซต์ทางเทคนิค ยิ่งไปกว่านั้นวิทยานิพนธ์ของโพสต์นี้ไม่ถูกต้องสำหรับซอฟต์แวร์หลัก ๆ ส่วนใหญ่ที่เราใช้ในปัจจุบัน: เว็บเบราว์เซอร์เป็นข้ามแพลตฟอร์ม Photoshop, MS Office, Dropbox และวัตถุดิบเป็นข้ามแพลตฟอร์ม เพียงแค่เปิดเมนูเริ่มหรือ Finder ของคุณและแสดงรายการคนเฉพาะแพลตฟอร์ม - โอกาสที่จะพบยูทิลิตี้เครื่องเล็ก ๆ ข้อโต้แย้งของคุณจะใช้ได้หากคุณเชื่อว่าโทรศัพท์มือถือมีความแตกต่างกันอย่างสิ้นเชิง (เป็นข้อสันนิษฐานที่ถูกต้องมาก) แต่ดูเหมือนว่าจะไม่มีข้อโต้แย้งใด ๆ ที่จะสร้างรากฐานดังกล่าว
kizzx2

14

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

ใช้รหัสซ้ำ

แม้ว่าระบบปฏิบัติการมือถือทั้งหมดจะไม่ใช้ภาษาสำหรับการพัฒนาและ API เดียวกัน แต่บางครั้งคุณสามารถแชร์คลาสหรือรหัสระดับตรรกะได้ในบางครั้ง

ตัวอย่างเช่น C ++ สามารถใช้ซ้ำสำหรับแอปพลิเคชัน iOSสำหรับแอป Android โดยใช้NDKสำหรับแอป Symbian เนื่องจากได้รับการพัฒนาใน C ++ เป็นต้น

โซลูชันบางอย่างยังเสนอความเป็นไปได้ในการเขียนแอปในภาษาอื่นนอกเหนือจากภาษาที่อุปกรณ์ใช้ตามปกติ ที่มีชื่อเสียงที่สุด (อันที่จริงมีเพียงคนเดียวที่ฉันรู้จัก) เป็นเชิงพาณิชย์และมีพื้นฐานมาจากโครงการโมโน (การพัฒนา C #):

แต่ฉันไม่แน่ใจว่าเราสามารถเรียกสิ่งนี้ว่าการพัฒนาข้ามแพลตฟอร์มได้จริง ๆ เนื่องจากการใช้โค้ดซ้ำมีข้อ จำกัด ขึ้นอยู่กับอุปกรณ์:

  • Windows Phone 7 จะไม่อนุญาตให้มีการพัฒนาโค้ดเนทีฟ (อาจอยู่ในการอัปเดตเพิ่มเติม)
  • AFAIK mono like project ไม่มีอยู่สำหรับทุกแพลตฟอร์ม (หรือยัง?) bada, webOS, maemo ฯลฯ

และส่วนของ UI ยังคงเฉพาะสำหรับแต่ละอุปกรณ์

การพัฒนาเว็บ

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

การเพิ่มขึ้นของ HTML5 ทำให้เกิดฟังก์ชันการพัฒนาเว็บที่ทำได้เฉพาะกับแอปพลิเคชันเนทีฟเช่นการระบุตำแหน่งทางภูมิศาสตร์แอปพลิเคชันออฟไลน์พื้นที่เก็บข้อมูล

เราสามารถพบเฟรมเวิร์กมากขึ้นเพื่อพัฒนาเว็บแอปพลิเคชันสำหรับโทรศัพท์มือถือด้วยรูปลักษณ์ดั้งเดิมโดยใช้ประโยชน์จากมาตรฐานเว็บล่าสุด HTML5, CSS3, Js:

แต่ HTML5 ยังมีอายุน้อยมากและการนำไปใช้งานอาจแตกต่างกันไปในแต่ละเบราว์เซอร์ ส่วนใหญ่เบราว์เซอร์มือถือเริ่มต้นใช้เครื่องมือ WebKit (การยกเว้นเป็นหลักของ Windows / โทรศัพท์มือถือโดยใช้ Internet Explorer) และแม้กระทั่งเพื่อให้พวกเขาไม่จำเป็นต้องสนับสนุนฟังก์ชันการทำงานที่เดียวกัน ฐานข้อมูลท้องถิ่นยังคงใช้งานได้ยากและเราไม่สามารถแน่ใจได้ว่าเบราว์เซอร์ต่างๆจะนำไปใช้อย่างไร ยิ่งไปกว่านั้นแม้จะใช้ HTML5 แต่การพัฒนาเว็บก็ยังมีข้อ จำกัด มากเมื่อเทียบกับแอปเนทีฟ คุณไม่สามารถเข้าถึงรายชื่อกล้องเครื่องวัดความเร่ง ฯลฯ

แก้ไข: เมื่อต้นเดือนนี้ W3C ได้ส่งคำเตือนบางอย่างเกี่ยวกับวิวัฒนาการของ HTML5: บทความจาก ZDNet

ดังนั้นจึงเหมาะกับการใช้งานในประเภทที่ จำกัด เท่านั้น

กรอบงานข้ามแพลตฟอร์ม

และกว่าที่เราจะมีเฟรมเวิร์กแอปพลิเคชันมือถือข้ามแพลตฟอร์ม ซึ่งคุณสามารถพัฒนาเพียงครั้งเดียวและปรับใช้บนแพลตฟอร์มที่แตกต่างกัน โดยทั่วไปโซลูชันเหล่านี้จะมุ่งเน้นไปที่ iOS และ Android และอาศัยเครื่องมือ WebKit พวกเขามีปฏิสัมพันธ์กับฟังก์ชันโทรศัพท์มากขึ้นในขณะที่พัฒนาด้วยเทคโนโลยีเว็บ ที่รู้จักกันดี ได้แก่ Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium แต่มีคนอื่น ๆ อีกมากมายและไม่ได้ใช้เทคนิคเดียวกันทั้งหมดเช่น MoSync ซึ่งแปลรหัสของคุณเป็นภาษากลางของตัวเองก่อนที่จะรวบรวมสำหรับแพลตฟอร์มที่ต้องการ

[1] โปรดจำไว้ว่า Apple มีนโยบายพิเศษเกี่ยวกับแอปที่เขียนขึ้นสำหรับแพลตฟอร์มของตน ดูเหมือนว่าพวกเขาจะไม่บล็อกแอปเหล่านี้ในวันนี้ แต่เป็นข้อมูลที่ควรนำมาพิจารณา แก้ไข: Apple ได้เปลี่ยนนโยบายนี้ตั้งแต่วันที่ 9 กันยายน


6

คุณจะได้รับความธรรมดาบางอย่างเมื่อปรับใช้เป็นเว็บแอป (html5 ตามที่กล่าวไว้ข้างต้น) แต่สำหรับแอปเนทีฟที่สมบูรณ์ API จะแตกต่างกันอย่างสิ้นเชิงสำหรับสมาร์ทโฟนรุ่นต่างๆ

HTML5 อาจช่วยปรับปรุงสิ่งต่าง ๆ ได้บ้าง แต่ในการทำสิ่งที่น่าสนใจคุณต้องเป็นเจ้าของ

มีเฟรมเวิร์กสมาร์ทโฟน 'ข้ามแพลตฟอร์ม' เช่น Phonegap แต่ฉันเคยได้ยินเรื่องแย่ ๆ เกี่ยวกับการใช้มันสำหรับงาน "จริง" (ค่าใช้จ่ายมากมาย ฯลฯ )


5

ใช่ html5 กำลังได้รับความสนใจ คุณควรดูที่กลุ่มและแพลตฟอร์มนี้ที่จะมาในไตรมาสที่ 4 ไม่แน่ใจเกี่ยวกับความสำเร็จของโครงการนั้นเนื่องจากดูเหมือนเป็นความท้าทายอย่างมาก แต่นี่คือรายละเอียด:

เว็บไซต์: http://www.wholesaleappcommunity.com/default.aspx

ข่าวสาร: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=th&q=%22Wholesale+Applications+Community%22

WAC มีเป้าหมายที่จะเผยแพร่ข้อกำหนดเบื้องต้นและส่วนประกอบของ SDK ให้กับนักพัฒนาซอฟต์แวร์ในเดือนพฤศจิกายน ข้อกำหนดนี้จะเป็นไปตามมาตรฐาน W3C และสร้างแพลตฟอร์มที่แข็งแกร่งสำหรับการพัฒนาแอปพลิเคชันเว็บบนมือถือที่มีประสิทธิภาพ นอกจากนี้ WAC ยังให้ความเข้ากันได้แบบย้อนหลังสำหรับอุปกรณ์ตามข้อกำหนดของ JIL และ BONDI ปัจจุบัน ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021 )

.

เป็นความร่วมมือระหว่างประเทศของ บริษัท โทรคมนาคมประมาณ 25 แห่งที่มีเป้าหมายที่จะสร้างแพลตฟอร์มที่เปิดให้นักพัฒนาทุกคนและขายให้กับผู้ใช้โทรศัพท์มือถือทุกคน ( http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/ )


1

เท่าที่ฉันรู้ว่าอุปกรณ์เหล่านั้นส่วนใหญ่สามารถเรียกใช้สิ่งนี้ได้:

Java ME - แพลตฟอร์มแอปพลิเคชันที่แพร่หลายที่สุดสำหรับอุปกรณ์พกพา

ฉันคิดว่าสิ่งนี้สามารถเป็นตัวอย่างที่ดีและไม่ดีได้


จริงๆแล้วไม่มี java บน iPhone และเท่าที่ฉันรู้ java ฉันไม่ได้ทำงานบน Android
Alaa Nassef

การพัฒนา Android เป็น Java จำนวนมาก developer.android.com/reference/java/net/package-summary.html
Nick Garvey

ฉันไม่เข้าใจรายละเอียด แต่ Avian JVM อนุญาตให้ java ทำงานบนอุปกรณ์ iOS
Quazi Irfan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.