2014-05-10 28 views
7

Tôi thấy rằng các ứng dụng Xamarin chạy trong Mono runtinme trên Android và mọi thứ được chuyển đến Dalvik. Nhưng những gì tôi có thể không understant là làm thế nào là nó có thể là ứng dụng đang chạy trong Mono, nhưng ứng dụng bình thường được thực hiện trong Dalvik. Có gì khác biệt trong ứng dụng Mono mà nó chạy trong Mono chứ không phải Dalvik.Mono dành cho Android - Cách hoạt động?

Làm cách nào để Mono có cùng cấp độ với Dalvik? Mono nên được lưu trữ bằng cách nào đó trong ứng dụng chạy trong Dalvik, tôi nghĩ vậy.

Vui lòng giải thích cho tôi cách có thể và xin lỗi vì ngôn ngữ xấu của tôi.

Architecture

+2

Tôi không biết tại sao rất nhiều downvotes và các yêu cầu đóng câu hỏi? Nếu câu trả lời rõ ràng như vậy, hãy làm cho nó nhanh chóng –

+0

Do tính chất nguồn mở của cả Mono và Dalvik/Android, trong khi Xamarin.Android không phải là nguồn mở, câu hỏi của bạn về các chi tiết kỹ thuật, chỉ có thể dẫn đến nghi ngờ ý định của bạn . Bạn có thực sự tò mò về các chi tiết kỹ thuật, hoặc bạn có kế hoạch sao chép nó từ đầu? SO là một nơi để trao đổi kiến ​​thức, nhưng tôi không nghĩ rằng đó là một nơi để đảo ngược kỹ thuật. BTW, tôi đã không bỏ phiếu cho câu hỏi của bạn. –

Trả lời

8

Một ứng dụng được phát triển bởi Xamarin có thời gian chạy mono mà phải mất với nó vào thiết bị. Gói ứng dụng có chứa mã trung gian .net, mã p, rõ ràng không phải là Dalvik dễ hiểu.

Xamarin.Android phát triển truy cập vào các tính năng khác nhau trong hệ điều hành bằng cách gọi API .NET mà họ biết (để truy cập ở mức độ thấp) hoặc sử dụng các lớp được hiển thị trong không gian tên Android. được tiếp xúc bởi Dalvik.

http://docs.xamarin.com/guides/android/under_the_hood/architecture/ đây là nơi bạn có thể tìm thêm chi tiết.

+0

OK, tôi hiểu rồi. Nhưng khi tôi chạy một ứng dụng java bình thường nó chạy trong Dalvik. Một cái gì đó trong ứng dụng chỉ định trong thời gian chạy nó sẽ chạy? Những gì tôi không hiểu là làm thế nào Dalvik có thể được trên cùng cấp như Mono, khi Mono được chứa trong ứng dụng –

+1

Khi bạn có ứng dụng Android được viết bằng java, chúng được biên dịch sang bytecode. Sau đó, chúng được chuyển đổi từ các tệp lớp Java tương thích JVM sang các tệp .dex và odex tương thích Dalvik trước khi cài đặt trên thiết bị. Nhưng ở đây bạn có các ứng dụng được viết bằng C#. Vì vậy, có một nhu cầu của một cái gì đó mà có thể xử lý các hội đồng C#, mà rõ ràng là mono. MFA (Mono cho Android) cung cấp thời gian chạy Mono, có thể bao quanh mọi thứ và gọi xuống thời gian chạy Dalvik hoặc thậm chí có thể bỏ qua Dalvik hoàn toàn. Điều gì sẽ xảy ra tùy thuộc vào mã. –

+2

Hiện tại, Mono không có mặt trên thiết bị Android theo mặc định. Vì vậy, phải có một cách mà nó có thể được thực hiện để được đặt và chạy trên thiết bị. Vì vậy, một gói ứng dụng là một cách rõ ràng trong đó chúng ta có thể làm được điều này. Và thậm chí chúng tôi cũng có thể chạy mono để có thể chạy ứng dụng của chúng tôi. Đừng chấp nhận câu trả lời nếu nó giúp bạn theo cách nào đó. –

Các vấn đề liên quan