การพัฒนาข้ามแพลตฟอร์ม iOS / Android [ปิด]


113

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

ฉันสงสัยว่ามีโซลูชันข้ามแพลตฟอร์มใดบ้างและทำงานได้ดีเพียงใดในทางปฏิบัติ ฉันคิดเกี่ยวกับเว็บแอปพลิเคชัน - อาจใช้jQuery MobileหรือTitaniumหรือ Adobe Flash / Flex / Air ฉันยังไม่มี Mac ซึ่งฉันอาจจะต้องลงทุน

ดังนั้นคำถามของฉัน:

  1. มีสภาพแวดล้อมการพัฒนาข้ามแพลตฟอร์มใดบ้างสำหรับ iOS / Android (และ / หรืออุปกรณ์อื่น ๆ )

  2. คุณมีประสบการณ์อะไรกับเครื่องมือเหล่านี้บ้าง? (นี่คือสิ่งที่ฉันอยากรู้จริงๆ)


1
อลิสเตอร์คุณไม่ใช่คนแรกที่ถามคำถามแบบนี้หรือคุณเป็นคนแรกที่ต้องการคำตอบ! :) อย่าลืม PhoneGap ซึ่งฉันเคยได้ยินบทวิจารณ์ที่หลากหลายและ Red Foundry ซึ่งเป็นเครื่องตัดคุกกี้มากกว่า แต่ดูดี - ยังไม่ข้ามแพลตฟอร์ม
makdad

1
คุณสามารถใช้ PhoneGap ได้เช่นกัน ฉันได้ใช้มันและแนะนำให้คุณทำมัน มีข้อกำหนดในการสร้างไฟล์ exe (IPA สำหรับ iOS) โดยใช้แอปพลิเคชันที่พัฒนาบน PhoneGap ใน Android
Jayprakash Dubey

ฉันต้องการให้ข้อมูลอัปเดตสำหรับคำถามนี้เนื่องจากตอนนี้สิ้นสุดปี 2016 และภูมิทัศน์ของเครื่องมือข้ามแพลตฟอร์มเปลี่ยนไป ฉันว่ามันขึ้นอยู่กับภาษาการเขียนโปรแกรมที่คุณเลือกและตำแหน่งที่ทีมของคุณมี xp มากที่สุดด้วย: 1. JavaScript: ประสิทธิภาพของ Phonegap ไม่ดีบนมือถือดังนั้นการใช้เครื่องมือที่มีส่วนประกอบดั้งเดิม แต่แนะนำให้ใช้ JS สำหรับตรรกะของแอปพลิเคชัน ตัวเลือกคือ V-Play ( v-play.net/apps ) หรือ React ( reactnative.com ) 2. C #: Xamarin เป็นเพื่อนของคุณ 3. C ++: ใช้เฟรมเวิร์ก C ++ เช่น Qt ( qt.io ) Disclaimer: ฉันเป็นหนึ่งในคนที่อยู่เบื้องหลัง V-Play ซึ่งอิงตาม Qt
Christian Feldbacher

คำตอบ: Flutterเป็นเฟรมเวิร์ก UI มือถือใหม่ของ Google สำหรับสร้างอินเทอร์เฟซเนทีฟบน iOS และ Android ในเวลาบันทึก
naXa

นอกจากนี้ยังมีโครงการhaxe.org ที่น่าสนใจ
ยูจีน Gr. Philippov

คำตอบ:


104

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

กรอบเหล่านี้ใช้แนวทางที่แตกต่างกันและส่วนใหญ่ได้รับการออกแบบมาเพื่อแก้ปัญหาที่แตกต่างกัน บางคนเน้นไปที่เกมบางคนเน้นไปที่แอป ฉันจะถามคำถามต่อไปนี้:

คุณต้องการเขียนอะไร แอปพลิเคชั่นสำหรับองค์กรแอปพลิเคชั่นเพิ่มผลผลิตส่วนตัวเกมไขปริศนานักกีฬาคนแรก?

คุณชอบสภาพแวดล้อมการพัฒนาแบบไหน? IDE หรือโปรแกรมแก้ไขข้อความธรรมดา?

คุณมีความรู้สึกที่ดีเกี่ยวกับภาษาโปรแกรมหรือไม่? จากกรอบงานที่ฉันคุ้นเคยคุณสามารถเลือกจาก ActionScript, C ++, C #, Java, Lua และ Ruby

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

  • Unity www.unity3d.comเป็นเอนจิ้นเกม 3 มิติ มันแตกต่างจากสภาพแวดล้อมการพัฒนาอื่น ๆ ที่ฉันเคยทำจริงๆคุณสร้างฉากด้วยโมเดล 3 มิติและกำหนดพฤติกรรมโดยการแนบสคริปต์เข้ากับวัตถุ คุณสามารถเขียนสคริปต์ใน JavaScript, C # หรือ Boo หากคุณต้องการเขียนเกมที่ใช้ฟิสิกส์ 3 มิติซึ่งจะทำงานบน iOS, Android, Windows, OS X หรือคอนโซลนี่อาจเป็นเครื่องมือสำหรับคุณ คุณยังสามารถเขียนเกม 2 มิติโดยใช้เนื้อหา 3 มิติได้อีกด้วยตัวอย่างที่ดีของเกมนี้คือMax และ Magic Markerซึ่งเป็นตัวเลื่อนด้านข้างแบบฟิสิกส์ 2 มิติที่เขียนด้วย Unity หากคุณไม่ทราบเราขอแนะนำให้ตรวจสอบ (โดยเฉพาะอย่างยิ่งหากมีบุตรหลานในบ้านของคุณ) Max มีให้บริการสำหรับ PC, Wii, iOS และ Windows Phone 7 (แม้ว่ารุ่นหลังจะเป็นพอร์ตเนื่องจาก Unity ไม่รองรับ WinPhone) Unity มาพร้อมกับเกมตัวอย่างบางเกมที่มาพร้อมกับเนื้อหาและพื้นผิว 3 มิติซึ่งจะช่วยให้เร็วขึ้นกับสภาพแวดล้อมที่ค่อนข้างซับซ้อน

  • Corona www.anscamobile.com/coronaเป็นเกมเอนจิ้น 2 มิติที่ใช้ภาษาสคริปต์ Lua และรองรับ iOS และ Android จุดขายของ Corona คือความสามารถในการเขียนเกมที่ใช้ฟิสิกส์ได้อย่างรวดเร็วโดยใช้โค้ดไม่กี่บรรทัดและเกมที่ใช้โคโรนาจำนวนมากในแอปสโตร์ของ iOS เป็นเครื่องพิสูจน์ถึงความสำเร็จ สภาพแวดล้อมมีความเอนเอียงมากซึ่งจะดึงดูดบางคน มันมาพร้อมกับโปรแกรมจำลองและดีบักเกอร์ คุณเพิ่มโปรแกรมแก้ไขข้อความที่คุณเลือกและคุณมีสภาพแวดล้อมการพัฒนา SDK พื้นฐานไม่มีส่วนประกอบ UI ใด ๆ เช่นปุ่มหรือกล่องรายการ แต่มีส่วนเสริม CoronaUI ให้บริการสำหรับสมาชิก

  • Particle SDK www.particlecode.comเป็นโซลูชันข้ามแพลตฟอร์มทั่วไปเล็กน้อยที่มีพื้นหลังในเกม คุณสามารถเขียนใน Java หรือ ActionScript โดยใช้โมเดลแอ็พพลิเคชัน MVC มันมี IDE ที่ใช้ Eclipse พร้อมกับตัวแก้ไข UI แบบ WYSIWYG ปัจจุบันเราสนับสนุนการสร้างสำหรับอุปกรณ์ Android, iOS, webOS และ Windows Phone 7 คุณยังสามารถแสดงผล Flash หรือ HTML5 สำหรับเว็บได้ เดิมกรอบนี้ได้รับการพัฒนาสำหรับเกมโซเชียลออนไลน์ที่มีผู้เล่นหลายคนเช่นโป๊กเกอร์และแบ็คแกมมอนและเหมาะกับเกม 2D และแอปที่มีตรรกะที่ซับซ้อน เฟรมเวิร์กรองรับกราฟิก 2 มิติและมีเอ็นจิ้นฟิสิกส์ 2 มิติ

หมายเหตุ:

วันนี้เราได้ประกาศว่า Appcelerator ได้รับ Particle Code ซึ่งเป็นผู้ผลิต Titanium cross-platform framework

...

ตั้งแต่วันที่ 1 มกราคม 2012 [ Particle Code ] จะไม่รองรับแพลตฟอร์ม[ Particle SDK ] อย่างเป็นทางการอีกต่อไป

แหล่ง

  • Airplay SDK www.madewithmarmalade.comเป็นเฟรมเวิร์ก C ++ ที่ให้คุณพัฒนาได้ทั้งใน Visual Studio หรือ Xcode รองรับทั้งกราฟิก 2D และ 3D Airplay กำหนดเป้าหมายเป็น iOS, Android, Bada, Symbian, webOS และ Windows Mobile 6 พวกเขายังมีส่วนเสริมสำหรับสร้างแอป AirPlay สำหรับ PSP C ++ ของฉันเป็นสนิมมากฉันไม่ได้เล่นกับมันมากนัก แต่มันก็ดูดี

ในแง่ของเส้นโค้งการเรียนรู้ฉันจะบอกว่า Unity มีช่วงการเรียนรู้ที่สูงชันที่สุด (สำหรับฉัน) Corona เป็นสิ่งที่ง่ายที่สุดและ Particle และ Airplay อยู่ระหว่างกัน

อีกประเด็นที่น่าสนใจคือกรอบการทำงานจัดการกับปัจจัยรูปแบบต่างๆอย่างไร Corona รองรับการปรับขนาดแบบไดนามิกซึ่งนักพัฒนา Flash จะคุ้นเคยกันดี สิ่งนี้ใช้งานง่ายมาก แต่หมายความว่าคุณจะสิ้นเปลืองพื้นที่หน้าจอเมื่อเปลี่ยนจากหน้าจอ 4: 3 เช่น iPhone ไปเป็น 16: 9 เหมือนอุปกรณ์ Android qHD ใหม่ ตัวแก้ไข UI ของ Particle SDK ช่วยให้คุณสามารถออกแบบเลย์เอาต์ที่ยืดหยุ่นได้ตามขนาด แต่ยังช่วยให้คุณปรับเลย์เอาต์สำหรับขนาดหน้าจอแต่ละขนาดได้ด้วย การดำเนินการนี้ใช้เวลามากกว่าเล็กน้อย แต่ให้คุณปรับแต่งแอปสำหรับแต่ละหน้าจอได้

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

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

หวังว่านี่จะช่วยได้


ฉันกำลังคิดถึงการพัฒนาองค์กรมากขึ้น แต่คุณอาจเป็นแรงบันดาลใจให้ฉันพิจารณา SDK เหล่านี้เพื่อความสนุกสนาน
Alister

ลิงก์ไปยังแต่ละเฟรมเวิร์กจะมีประโยชน์
Petrus Theron

2
อัปเดต: Appcelerator ผู้ผลิต Titanium ได้รับรหัสอนุภาคดังนั้นชะตากรรมของ Particle SDK จึงไม่แน่นอน Airplay เปลี่ยนชื่อเป็น "Marmalade" อย่างอธิบายไม่ถูก
DocDude

15

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

จับตาดูhttp://www.xamarin.com/มันจะน่าสนใจเพื่อดูว่ามีอะไรบ้าง


12

ประสบการณ์ของฉันกับการทำบางสิ่งที่ง่ายมากใน PhoneGap + jQuery Mobile นั้นดี ฉันสามารถทำได้อย่างรวดเร็วสำหรับ iOS อย่างไรก็ตามมันใช้ไม่ได้กับโทรศัพท์ Android ของฉันโดยไม่ทำการเปลี่ยนแปลงบางอย่าง โปรเจ็กต์นี้เป็นแอพที่ง่ายมากในการถ่ายภาพและโพสต์ลงบนเว็บไซต์ และในตอนท้ายของวันนั้นมันให้ความรู้สึก "อึดอัด" เมื่อเทียบกับแอปที่มาพร้อมเครื่องจริงๆ

ฉันไม่เชื่อว่าจะมีการพัฒนาข้ามแพลตฟอร์มได้ง่ายๆ ฉันคิดว่าเบราว์เซอร์อยู่ใกล้ที่สุดเท่าที่คุณจะได้รับ การเลือกบางอย่างเช่น PhoneGap ฉันคิดว่าคุณแค่แลกเปลี่ยน Pain Point ชุดเดียวกับ Pain Point ที่แตกต่างกัน


7

ในกรณีที่คุณไม่ต้องการใช้เฟรมเวิร์กเต็มรูปแบบสำหรับการพัฒนาข้ามแพลตฟอร์มลองดูที่ C ++ เป็นตัวเลือก iOS รองรับการใช้ C ++ อย่างเต็มที่สำหรับตรรกะแอปพลิเคชันของคุณผ่าน Objective-C ++ ฉันไม่รู้ว่าการรองรับ C ++ ของ Android ผ่าน NDK นั้นเหมาะกับการทำธุรกิจตรรกะของคุณใน C ++ มากกว่าแค่ข้อมูลโค้ดที่มีความสำคัญต่อประสิทธิภาพ แต่ในกรณีที่ใช้กรณีนี้ได้รับการสนับสนุนอย่างดีคุณสามารถลองดูได้

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

ตามความเป็นจริง C ++ เป็นภาษาโปรแกรมเดียวที่ได้รับการสนับสนุนอย่างกว้างขวางที่สุด (ยกเว้น C) ดังนั้นจึงเป็นภาษาหลักของแอปพลิเคชันข้ามแพลตฟอร์มขนาดใหญ่ส่วนใหญ่


3
Btw, Android จริงดูเหมือนจะสนับสนุนกิจกรรมเขียนใน C ++ โดยตรง: developer.android.com/reference/android/app/NativeActivity.html
องค์รักษ์

4
ด้วยข้อแม้เดียว - ไม่มีการเข้าถึง Java (ดังนั้นจึงไม่มีการรวมไลบรารีของบุคคลที่สามหรือการเข้าถึง SDK) จาก NativeActivity ทำให้ไม่เหมาะสำหรับหลายวัตถุประสงค์
rbgrn

6

แม้ว่าฉันจะเพิ่งเริ่มมองไปที่ส่วนของการพัฒนานี้ แต่ฉันคิดว่ามันมาจากความแตกต่างพื้นฐานนี้: เครื่องมือบางอย่างยังคงรักษารหัสดั้งเดิมไว้และบางพอร์ตไปยังเนทีฟ ...

ตัวอย่างเช่น PhoneGap จะเก็บโค้ด HTML / CSS / JS ที่คุณเขียนและรวมไว้ในโค้ด iOS ที่เพียงพอเพื่อให้มีคุณสมบัติเป็นแอพในขณะที่ Appcelerator มอบโปรเจ็กต์ XCode ให้คุณ ... ดังนั้นหากคุณไม่คุ้นเคยกับ iOS แล้วที่จะไม่ได้จริงๆให้ประโยชน์ใด ๆ ให้กับคุณมากกว่า PhoneGap แต่ถ้าคุณทำรู้อีกเล็กน้อยที่อาจทำให้คุณเพียงเล็กน้อยความสามารถมากขึ้นในการปรับแต่งรุ่นพื้นเมืองหลังจากความพยายามการเข้ารหัสของคุณมีขนาดใหญ่

ฉันไม่ได้ใช้ appcelerator ด้วยตัวเอง แต่ทำงานในโครงการเมื่อสองสามสัปดาห์ก่อนโดยสมาชิกในทีมคนหนึ่งของเราสร้างแอป iPad ทั้งหมดโดยใช้เวลาประมาณ 24 ชั่วโมง

และใช่ในการส่งไปที่ apple คุณจะต้องซื้อ mac แต่ถ้านั่นไม่ใช่แพลตฟอร์มการทำงานหลักของคุณคุณสามารถไปได้ในราคาถูก


3

คาปูชิโนหรือPhoneGap

บางครั้งแม้ว่าการพยายามหาทางลัดจะไม่ช่วยให้คุณประหยัดเวลาหรือให้ผลิตภัณฑ์ที่เทียบเคียงได้



3

หากคุณเคยใช้ LUA คุณอาจลอง Corona SDK เพื่อสร้างแอปที่ทำงานบน IOS และ Android

https://coronalabs.com/

ฉันดาวน์โหลดมาแล้วและยุ่งเกี่ยวกับบางส่วนฉันพบว่า LUA เป็นภาษาสคริปต์ที่ง่ายมากในการเรียนรู้โดยไม่ต้องยุ่งยาก / ข้อ จำกัด ของภาษาสคริปต์ ...


2

นอกจากนี้ยังมี BatteryTech ที่เราใช้งานมาตลอด 18 เดือนที่ผ่านมาและได้เปิดตัวเกมหลายเกม http://www.batterypoweredgames.com/batterytech

รองรับ C ++, Android และ iOS ทั้งหมดผู้ใช้ทุกคนจะได้รับแหล่งข้อมูลทั้งหมด v2 ใหม่มีการผูก lua


3
ณ วันที่ 5/30/12: $ 200 สำหรับใบอนุญาตสำหรับนักพัฒนา 5 คนหรือน้อยกว่า $ 800 สำหรับมากกว่า 5 ไม่สามารถใช้สำหรับโครงการโอเพ่นซอร์ส
Roger Dahl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.