Google Android จะรองรับ. NET หรือไม่ [ปิด]


253

ตอนนี้ G1 พร้อมระบบปฏิบัติการ Android ของ Google พร้อมใช้งานแล้ว (เร็ว ๆ นี้) แพลตฟอร์ม Android จะรองรับ. Net หรือไม่?


24
ตอนนี้จะเป็นสิ่งที่!
Calanus

ที่สำคัญกว่านั้นคือ Microsoft จะเคยพอร์ต. NET ไปยังแพลตฟอร์มอื่นที่ไม่ใช่ Windows หรือไม่?
Kerry

คำตอบ:


325

อัปเดต : ตั้งแต่ฉันเขียนคำตอบนี้เมื่อสองปีก่อนเราจึงผลิต 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


1
ดีฉันพูดไม่ใช่ MS หรือ Google แต่อาจ Miguel และที่นี่คุณ (ดีฉันรู้ว่ามันไม่ใช่คุณ แต่อย่างใดปิด) ลิงค์ที่ดี Miguel คุณคิดว่า Google จะให้การสนับสนุนหรือไม่ ฉันหมายถึงพวกเขารับพอร์ตภายใต้ประทุนของพวกเขา? :) ถ้าฉันสามารถฉันจะ downvote คำตอบของฉันเอง :)
OscarRyz

6
อืมนั่นคือ "เท่านั้น" กำลังทำงานในเดเบียนที่ทำงานบนฮาร์ดแวร์เดียวกัน ในความคิดของฉันไม่ได้แจ้งว่า "android" แต่ดูเหมือนว่าไม่ใช่ปัญหาใหญ่ในการย้ายพอร์ตอย่างสมบูรณ์ดูเหมือนว่า
sandos

1
ฉันสงสัยว่ามีการพูดคุยกับ Google หรือไม่เพื่อให้ง่ายต่อการติดตั้ง อาจนำมาใช้เป็นไฟล์ดาวน์โหลดฟรีจาก Market หรือไม่ อนุญาตให้แอป. Net วางตลาดหรือไม่
csauve

1
เสียดายที่มันใช้ไม่ได้กับ Visual Studio Express ...
Rockcoder

1
น่ากลัว ดีใจที่เห็นคำตอบที่อัปเดตแล้ว +1 Miguel
Steven Evers

78

ใช่มันจะเป็นไปได้และมันจะไม่ยากอย่างนั้น ทุกสิ่งที่จำเป็นที่จุดนี้เพื่อเริ่มต้นด้วยการเป็นชนิดของการแปลงบางอย่างที่จะเปิดเข้าไปใน 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 ) ตามที่ระบุไว้ข้างต้น


ใช่เราไม่เคยรู้ ... บางทีอาจจะ ... ทำให้มันเป็นเวลา 4 ปีแทนที่จะเป็น 10 ... : P
OscarRyz

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

4
@Brian วิดีโอที่คุณโพสต์เป็นเรื่องเกี่ยวกับ iPhone ไม่ใช่ Android
lubos hasko

14
ด้วยความสัมพันธ์แบบจาวาของ Google ของ Google จึงไม่น่าแปลกใจที่พวกเขาไม่ได้ใช้. NET กับสิ่งนี้ ใช่การใช้ Mono อาจเป็นไปได้ แต่ฉันเกือบแน่ใจว่า Google จะหลีกเลี่ยงการใช้. NET ด้วยความกระตือรือร้นเช่นเดียวกับที่ Microsoft หลีกเลี่ยงการใช้ Linux
Joey

2
บริษัท ขนาดเล็กจะไม่วางเดิมพันอนาคตของพวกเขาหาก บริษัท ขนาดใหญ่บางแห่งวางน้ำหนักไว้เบื้องหลัง Novell เป็นผู้สนับสนุนอยู่แล้ว และ Microsoft สนับสนุนโครงการอนุพันธ์ Moonlight ทั้งโดยการให้ตัวแปลงสัญญาณและชุดทดสอบ
sblom

23

Miguel de Icaza ประกาศในบล็อกของเขาในวันที่ 17 กุมภาพันธ์ 2010 ว่าพวกเขาเริ่มทำงานโมโนสำหรับ Android ซึ่งจะเรียกว่า MonoDroid

สิ่งนี้จะคล้ายกับ MonoTouch บน iPhone แต่สำหรับ Android แทน

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

อย่างไรก็ตามคุณจะสามารถนำไลบรารีระดับล่างที่มีอยู่กลับมาใช้ใหม่โดยไม่จำเป็นต้องคอมไพล์ใหม่


Monodroid beta มีให้สำหรับผู้ที่สมัครใช้งานโปรแกรมเบต้าก่อนหน้านี้
เดเมียน

ใช่ปัจจุบันอยู่ในรุ่นเบต้าส่วนตัวซึ่งฉันได้ลงทะเบียน แต่ยังไม่ได้รับเชิญ :(
trampster

9

นั่นคือ Mono สำหรับ Android,. NET Framework ที่พอร์ตสำหรับ Android และมี MonoDroid ซึ่งเป็นกลุ่มการพัฒนาสำหรับการใช้ C # และ core .NET APIs เพื่อพัฒนาแอปพลิเคชันที่ใช้ Android MonoDroid Preview 1 เปิดตัวเมื่อไม่กี่วันที่ผ่านมา


9

เนื่องจากนี่เป็นลิงค์แรกใน Google เมื่อค้นหา Android และ. net การสนับสนุนจึงเป็นเพียงการโพสต์ที่นี่

โครงการโมโนทำงานบน SDK เพื่อพัฒนาแอปพลิเคชัน Android ที่ใช้ภาษา CIL เช่น C # ข้อเสียคือมันจะเป็นผลิตภัณฑ์เชิงพาณิชย์ monodroid


7

MonoDroid ไม่พร้อมใช้งานสำหรับการแสดงตัวอย่าง ฉันคิดว่านั่นจะลดช่องว่าง อย่างไรก็ตาม MonoDroid อาจเป็นตัวเลือกที่มีราคาแพงสำหรับการพัฒนา เครื่องมือพัฒนาอื่น ๆ ของพวกเขามีราคาอยู่ที่ $ 199 ถึง $ 4,000 (MonoTouch .. เครื่องมือ iPhone dev ... มีราคาอยู่ระหว่าง $ 399 ถึง $ 3999) หากผู้คนพัฒนาแอพด้วยเครื่องมือเหล่านี้พวกเขาต้องการโมเดลธุรกิจที่แข็งแกร่งเพื่อดูผลตอบแทน


6

ลองดูxmlvmนี้ฉันคิดว่ามันเป็นไปได้ อาจจะสามารถตรวจสอบวิดีโอนี้


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

4

นอกจากนี้พอร์ตMono ที่ได้รับการแก้ไขก็สามารถทำได้เช่นกัน


@akdom คุณมีประสบการณ์เกี่ยวกับการย้ายซอฟต์แวร์จากเดสก์ทอป / เซิร์ฟเวอร์ไปยังระบบปฏิบัติการที่ฝังอยู่หรือไม่ ฉันมีประสบการณ์การพัฒนามือถือ (Java และ Brew) และ IMHO คุณประเมินความพยายามต่ำเกินไป มันอาจเป็นไปได้ แต่จะไม่มีใน 3 ปีถัดไป
ddimitrov

@ddmitrov: คำถามคือว่าแพลตฟอร์ม Android ที่เคยสนับสนุน. NET หรือไม่ไม่ว่าจะเป็นภายในสามปีถัดไป ฉันแค่บอกว่าตั้งแต่ Mono เป็นการนำโอเพ่นซอร์สของ. NET มันจะง่ายกว่าที่จะสร้าง android เวอร์ชันของ Mono มากกว่าเริ่มจากศูนย์
akdom

2
มันไม่ได้ใช้เวลาสามปีในที่สุด และคนที่ซามารินวางแผนที่จะทำมันอีกครั้งในเวลาไม่ถึงหกเดือน
Justin

4

. NET กระชับกรอบได้รับการ ported เพื่อ Symbian OS ( http://www.redfivelabs.com/ ) หาก. NET เป็นแพลตฟอร์มแบบ "ปิด" สามารถเชื่อมต่อกับแพลตฟอร์มนี้ได้ฉันไม่สามารถมองเห็นสาเหตุใด ๆ ที่ทำให้ Android ไม่สามารถทำได้


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

4

. NET และ Mono เป็นสภาพแวดล้อมที่ยอดเยี่ยมพร้อมเครื่องมือมากมายและฐานทักษะที่ยอดเยี่ยมของผู้ที่รู้วิธีใช้งาน

ฉันคิดว่าโมโนมีโอกาสที่จะเป็นสภาพแวดล้อมการพัฒนาข้ามแพลตฟอร์มที่เลือกเนื่องจากเป็นทางเลือกเดียวสำหรับ Objective-C บน iPhone และควรพกพาไปที่ Android และ NET อยู่บน Windows Mobile อยู่แล้ว

ฉันหวังเป็นอย่างยิ่งว่าจะได้เห็นการใช้งาน Mono บน Android ด้วย wrappers สำหรับ Android API เช่นเดียวกับ Monotouch และพร้อมที่จะจ่ายให้กับมันเพราะฉันไม่สามารถทำมันเองได้


3

คุณมีโอกาสมากขึ้นที่จะเห็นการใช้งาน Silverlight ของ Android ตัวแทน Microsoft ยืนยันว่าเป็นไปได้เทียบกับ iPhone ที่ตัวแทนแจ้งว่าเป็นปัญหา

แต่เวอร์ชันของ. NET Framework นั้นเป็นไปได้ แค่ต้องการใครสักคนที่จะใส่ใจมันมาก :)

แต่จริงๆแล้วการย้ายจาก C # ไปยัง Java นั้นไม่ใช่เรื่องใหญ่และเมื่อพิจารณาถึงความแตกต่างอย่างมากระหว่างสองแพลตฟอร์ม (PC กับ G1) ดูเหมือนว่าไม่น่าเป็นไปได้ที่คุณจะได้รับรหัสฐานเดียวสำหรับแอปใด ๆ คุณต้องการที่จะทำงานทั้งสองอย่าง


3

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

แต่แอปพลิเคชั่น. NET บนเดสก์ท็อปที่รันบน Android จะรู้สึกเหมือนคนต่างด้าวเนื่องจากมี GUI-Like GUI แบบคลาสสิกซึ่งไม่สามารถใช้งานได้บนอุปกรณ์ระบบสัมผัส หากในอีกทางหนึ่งคุณต้องใช้รหัส GUI ที่คล้ายกับ android ใน. NET คุณจะต้องใช้ชุดตัวห่ออีกชุดหนึ่ง (สังเกตว่าการห่อเป็นเพียงอีกวิธีหนึ่งที่ตรงกันข้ามกับตัวห่อที่กล่าวถึงข้างต้น)

ฉันไม่แน่ใจว่าแอปพลิเคชันมือถือ. NET จะรู้สึกเป็นเจ้าของบน Android หรือไม่ แต่ฉันเดาว่าจะไม่เป็นเช่นนั้น

บางทีคุณอาจสนใจวิธีอื่น: คุณสามารถเขียนแอปพลิเคชันของคุณเป็นภาษาจาวา จากนั้นคุณสามารถคอมไพล์มันลงใน. NET ผ่าน Microsoft J # (ฉันรู้ว่ามันเลิกใช้แล้ว แต่คุณยังสามารถดาวน์โหลดและใช้งานได้) และใช้รหัส Java เดียวกันบน Android อีกครั้งสำหรับคลาสหลักหรือตรรกะทางธุรกิจและอีกครั้งคุณจะต้องเขียนพ่วง GUI บางทีคุณอาจทำให้ J2ME เจ็บปวดได้เช่นกันซึ่งคุณจะไม่สามารถทำได้ถ้าคุณใช้. NET


ไม่ว่าคุณจะไม่สมมติว่ารูปแบบการชนะจะได้รับการย้ายพอร์ตซึ่งเป็นความคิดที่แย่จริงๆ MonoDroid จะเชื่อมโยงกับวิดเจ็ต Android UI ดังนั้นมันจะมีลักษณะเหมือนแอพ Android ดั้งเดิมผู้ใช้ไม่จำเป็นต้องรู้ ทำงานบน MonoDroid
trampster

นอกจากนี้ CLI Bytecode to Dalvik ยังเป็นแนวคิดที่ไม่ดีรันไทม์โมโนและ VM ทำงานบน ARM อยู่แล้วทำให้การรันบน Android จะไม่เป็นปัญหา และเมื่อเห็นว่าโมโนเป็น JIT ที่คอมไพล์และ Dalvik ถูกตีความ การรันบนรันไทม์แบบโมโนจะเร็วกว่ามาก
เท้า

2

.NET สำหรับ Android ดูเหมือนเป็นไปได้จริงสำหรับฉัน มีข่าวว่า Microsoft จะปล่อย Silverlight ที่เหมาะสมสำหรับ Android - อย่าประมาทข้อดีของ Microsoft ในการใส่การบู๊ตลงใน Apple สมาร์ทโฟนที่เร็วกว่ามีฟีเจอร์ที่หลากหลายและเร็วกว่าวงจรการพัฒนาฮาร์ดแวร์ที่น่าประทับใจแฟลชและ Silverlight เป็นมาตรฐานที่ติดตั้งได้

Microsoft มีความสนใจที่จะพัฒนา Android และในเวลาเดียวกันแอพพลิเคชั่นจะ devloped สำหรับ Silverlight บน Android จะทำงานบนระบบปฏิบัติการ Windows Phone 7 ด้วยมัลติทัช GPS และอื่น ๆ

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