ตอนนี้ G1 พร้อมระบบปฏิบัติการ Android ของ Google พร้อมใช้งานแล้ว (เร็ว ๆ นี้) แพลตฟอร์ม Android จะรองรับ. Net หรือไม่?
ตอนนี้ G1 พร้อมระบบปฏิบัติการ Android ของ Google พร้อมใช้งานแล้ว (เร็ว ๆ นี้) แพลตฟอร์ม Android จะรองรับ. Net หรือไม่?
คำตอบ:
อัปเดต : ตั้งแต่ฉันเขียนคำตอบนี้เมื่อสองปีก่อนเราจึงผลิต Mono เพื่อให้ทำงานบน Android งานดังกล่าวรวมถึงขั้นตอนต่าง ๆ : การย้าย Mono ไปเป็น Android รวมเข้ากับ Visual Studio การสร้างปลั๊กอินสำหรับ MonoDevelop บน Mac และ Windows และการเปิดเผย Java Android APIs เป็นภาษา NET ตอนนี้มีให้ที่http://monodroid.net
Mono บน Android ใช้งานบนรันไทม์โมโน 2.10 และใช้ค่าเริ่มต้นเป็นโปรไฟล์ 4.0 พร้อมคอมไพเลอร์ C # 4.0 และใช้เอนจิ้นการเก็บขยะ SGen ใหม่ของโมโนรวมถึงระบบการเก็บขยะแบบกระจายใหม่ที่ใช้ GC ทั่ว Java และ Mono
ลิงค์ด้านล่างสะท้อนโมโนบน Android ตั้งแต่เดือนมกราคมปี 2009 ฉันได้เก็บรักษาไว้เพื่อบริบททางประวัติศาสตร์
Mono ได้ทำงานบน Android ด้วยการทำงานของ Koushik Dutta และ Marc Crichton
คุณสามารถดูวิดีโอของมันทำงานที่นี่: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
และคุณสามารถรับคำแนะนำในการสร้าง Mono ได้ที่นี่: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
คุณสามารถรับมาตรฐานเปรียบเทียบล่าม JIT กับ Dalvik ของ Mono ได้ที่นี่: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
และแน่นอนคุณสามารถรับรูปภาพที่กำหนดค่าล่วงหน้าด้วย Mono ได้ที่นี่ (ไปที่ด้านล่างของโพสต์เพื่อดูรายละเอียดการใช้งาน): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
ใช่มันจะเป็นไปได้และมันจะไม่ยากอย่างนั้น ทุกสิ่งที่จำเป็นที่จุดนี้เพื่อเริ่มต้นด้วยการเป็นชนิดของการแปลงบางอย่างที่จะเปิดเข้าไปใน MSIL Dalvik bytecode เนื่องจากทั้งสองรูปแบบเป็นแบบ open-source และมีเอกสารที่ดีจึงไม่มีปัญหาใด ๆ
ดังนั้นการเขียนแอปพลิเคชั่น Android ใน C # หรือ VB.NET จะเป็นไปได้คำถามคือจะสนับสนุนไลบรารีมาตรฐานของ. NET Framework จำนวนเท่าใด แต่นั่นเป็นปัญหาอื่น
Oscar Reyes เขียนว่า:
ฉันค่อนข้างมั่นใจว่าถ้า google มอบความสนใจใด ๆ กับ. net พวกเขาจะออกแบบบางอย่างในขณะที่ Android อยู่ในช่วงแรกไม่ใช่ตอนนี้เมื่ออยู่ในขั้นตอนการผลิต ฉันไม่ได้หมายความว่ามันเป็นไปไม่ได้สิ่งที่ฉันพูดคือพวกเขาไม่สนใจ อาจจะอยู่ใน mmm hhhh 10 ปี
จริงๆแล้วสิ่งที่พวกเขาได้ออกแบบมานั้นเข้ากันได้กับ Java และ. NET
พวกเขาไม่สามารถทำทุกอย่างในครั้งเดียว แต่ถ้าคุณมองเข้าไปใน Android SDK มีเครื่องมือที่เรียกว่าDX เครื่องมือนี้แปลง Java bytecode เป็น Dalvik bytecode ดังนั้นคุณสามารถรันโปรแกรมที่เขียนด้วย Java บน Android ได้โดยไม่ต้องใช้ความพยายามเลย ตอนนี้จำเป็นต้องใช้เครื่องมือเดียวกันสำหรับ. NET
เมื่อพิจารณาว่า. NET และ Java มีความคล้ายคลึงกันเพียงใดมันเป็นเรื่องของเวลา
ddimitrov เขียนว่า:
.Net-> Java-> การแปล Dalvik สามารถทำได้แม้ตอนนี้ ( http://dev.mainsoft.com/ ) แต่ฉันคิดว่าคุณดูถูกดูแคลนการขาดไลบรารี. Net แน่นอนว่าบางคนสามารถทำพอร์ตโมโนได้ แต่มันเป็นความพยายามที่ไม่สำคัญ
ไม่จำเป็นต้องพอร์ต Mono Android มี VM และ API พื้นฐานอยู่แล้ว สิ่งที่จำเป็นทั้งหมดคือ CIL-> ตัวแปลง Dalvik และ wrapper .NET ขนาดเล็กสำหรับ Android API (และอาจมีการใช้งานขั้นพื้นฐานของคลาส NET. มาตรฐานบางตัว) แค่นั้นแหละ.
อัปเดต: . NET ทำงานบน Android แล้ว - คุณจะต้องใช้ผลิตภัณฑ์ชื่อ Monodroid ( http://monodroid.net ) ตามที่ระบุไว้ข้างต้น
Miguel de Icaza ประกาศในบล็อกของเขาในวันที่ 17 กุมภาพันธ์ 2010 ว่าพวกเขาเริ่มทำงานโมโนสำหรับ Android ซึ่งจะเรียกว่า MonoDroid
สิ่งนี้จะคล้ายกับ MonoTouch บน iPhone แต่สำหรับ Android แทน
มันจะให้ผลผูกพันกับ android UI ดังนั้นแอปจะมีรูปลักษณ์และความรู้สึกแอพ Android ที่ใช้งานจริง สิ่งนี้จะทำให้คุณต้องเขียน UI เฉพาะสำหรับ Android
อย่างไรก็ตามคุณจะสามารถนำไลบรารีระดับล่างที่มีอยู่กลับมาใช้ใหม่โดยไม่จำเป็นต้องคอมไพล์ใหม่
นั่นคือ Mono สำหรับ Android,. NET Framework ที่พอร์ตสำหรับ Android และมี MonoDroid ซึ่งเป็นกลุ่มการพัฒนาสำหรับการใช้ C # และ core .NET APIs เพื่อพัฒนาแอปพลิเคชันที่ใช้ Android MonoDroid Preview 1 เปิดตัวเมื่อไม่กี่วันที่ผ่านมา
เนื่องจากนี่เป็นลิงค์แรกใน Google เมื่อค้นหา Android และ. net การสนับสนุนจึงเป็นเพียงการโพสต์ที่นี่
โครงการโมโนทำงานบน SDK เพื่อพัฒนาแอปพลิเคชัน Android ที่ใช้ภาษา CIL เช่น C # ข้อเสียคือมันจะเป็นผลิตภัณฑ์เชิงพาณิชย์ monodroid
MonoDroid ไม่พร้อมใช้งานสำหรับการแสดงตัวอย่าง ฉันคิดว่านั่นจะลดช่องว่าง อย่างไรก็ตาม MonoDroid อาจเป็นตัวเลือกที่มีราคาแพงสำหรับการพัฒนา เครื่องมือพัฒนาอื่น ๆ ของพวกเขามีราคาอยู่ที่ $ 199 ถึง $ 4,000 (MonoTouch .. เครื่องมือ iPhone dev ... มีราคาอยู่ระหว่าง $ 399 ถึง $ 3999) หากผู้คนพัฒนาแอพด้วยเครื่องมือเหล่านี้พวกเขาต้องการโมเดลธุรกิจที่แข็งแกร่งเพื่อดูผลตอบแทน
นอกจากนี้พอร์ตMono ที่ได้รับการแก้ไขก็สามารถทำได้เช่นกัน
. NET กระชับกรอบได้รับการ ported เพื่อ Symbian OS ( http://www.redfivelabs.com/ ) หาก. NET เป็นแพลตฟอร์มแบบ "ปิด" สามารถเชื่อมต่อกับแพลตฟอร์มนี้ได้ฉันไม่สามารถมองเห็นสาเหตุใด ๆ ที่ทำให้ Android ไม่สามารถทำได้
. NET และ Mono เป็นสภาพแวดล้อมที่ยอดเยี่ยมพร้อมเครื่องมือมากมายและฐานทักษะที่ยอดเยี่ยมของผู้ที่รู้วิธีใช้งาน
ฉันคิดว่าโมโนมีโอกาสที่จะเป็นสภาพแวดล้อมการพัฒนาข้ามแพลตฟอร์มที่เลือกเนื่องจากเป็นทางเลือกเดียวสำหรับ Objective-C บน iPhone และควรพกพาไปที่ Android และ NET อยู่บน Windows Mobile อยู่แล้ว
ฉันหวังเป็นอย่างยิ่งว่าจะได้เห็นการใช้งาน Mono บน Android ด้วย wrappers สำหรับ Android API เช่นเดียวกับ Monotouch และพร้อมที่จะจ่ายให้กับมันเพราะฉันไม่สามารถทำมันเองได้
คุณมีโอกาสมากขึ้นที่จะเห็นการใช้งาน Silverlight ของ Android ตัวแทน Microsoft ยืนยันว่าเป็นไปได้เทียบกับ iPhone ที่ตัวแทนแจ้งว่าเป็นปัญหา
แต่เวอร์ชันของ. NET Framework นั้นเป็นไปได้ แค่ต้องการใครสักคนที่จะใส่ใจมันมาก :)
แต่จริงๆแล้วการย้ายจาก C # ไปยัง Java นั้นไม่ใช่เรื่องใหญ่และเมื่อพิจารณาถึงความแตกต่างอย่างมากระหว่างสองแพลตฟอร์ม (PC กับ G1) ดูเหมือนว่าไม่น่าเป็นไปได้ที่คุณจะได้รับรหัสฐานเดียวสำหรับแอปใด ๆ คุณต้องการที่จะทำงานทั้งสองอย่าง
ในความคิดของฉันมันเป็นไปได้ในทางเทคนิคที่จะแปลง CLI Bytecode เป็น Dalvik และเขียนคลาส wrapper สำหรับคุณสมบัติหลักบางอย่างเช่นคอลเลกชันการเข้าถึงไฟล์และอื่น ๆ แม้ว่ามันจะทำงานหนัก
แต่แอปพลิเคชั่น. NET บนเดสก์ท็อปที่รันบน Android จะรู้สึกเหมือนคนต่างด้าวเนื่องจากมี GUI-Like GUI แบบคลาสสิกซึ่งไม่สามารถใช้งานได้บนอุปกรณ์ระบบสัมผัส หากในอีกทางหนึ่งคุณต้องใช้รหัส GUI ที่คล้ายกับ android ใน. NET คุณจะต้องใช้ชุดตัวห่ออีกชุดหนึ่ง (สังเกตว่าการห่อเป็นเพียงอีกวิธีหนึ่งที่ตรงกันข้ามกับตัวห่อที่กล่าวถึงข้างต้น)
ฉันไม่แน่ใจว่าแอปพลิเคชันมือถือ. NET จะรู้สึกเป็นเจ้าของบน Android หรือไม่ แต่ฉันเดาว่าจะไม่เป็นเช่นนั้น
บางทีคุณอาจสนใจวิธีอื่น: คุณสามารถเขียนแอปพลิเคชันของคุณเป็นภาษาจาวา จากนั้นคุณสามารถคอมไพล์มันลงใน. NET ผ่าน Microsoft J # (ฉันรู้ว่ามันเลิกใช้แล้ว แต่คุณยังสามารถดาวน์โหลดและใช้งานได้) และใช้รหัส Java เดียวกันบน Android อีกครั้งสำหรับคลาสหลักหรือตรรกะทางธุรกิจและอีกครั้งคุณจะต้องเขียนพ่วง GUI บางทีคุณอาจทำให้ J2ME เจ็บปวดได้เช่นกันซึ่งคุณจะไม่สามารถทำได้ถ้าคุณใช้. NET
.NET สำหรับ Android ดูเหมือนเป็นไปได้จริงสำหรับฉัน มีข่าวว่า Microsoft จะปล่อย Silverlight ที่เหมาะสมสำหรับ Android - อย่าประมาทข้อดีของ Microsoft ในการใส่การบู๊ตลงใน Apple สมาร์ทโฟนที่เร็วกว่ามีฟีเจอร์ที่หลากหลายและเร็วกว่าวงจรการพัฒนาฮาร์ดแวร์ที่น่าประทับใจแฟลชและ Silverlight เป็นมาตรฐานที่ติดตั้งได้
Microsoft มีความสนใจที่จะพัฒนา Android และในเวลาเดียวกันแอพพลิเคชั่นจะ devloped สำหรับ Silverlight บน Android จะทำงานบนระบบปฏิบัติการ Windows Phone 7 ด้วยมัลติทัช GPS และอื่น ๆ