2012-02-20 28 views
12

Tôi đang xem một dự án nhúng cần màn hình cảm ứng LCD, trình điều khiển LCD, trình duyệt webkit, Avahi, máy chủ web và công cụ của chúng tôi được viết bằng C++.Android vs Linux cho ứng dụng màn hình cảm ứng nhúng

Android trong nháy mắt đầu tiên trông giống như nó có hầu hết các thành phần bên phải của hộp với ít sửa đổi nhất ... Nhưng việc sử dụng JVM có vẻ nặng cho thiết bị nhúng bộ nhớ nhỏ (128-196MB phút) và bên cạnh mã của chúng tôi là C++. Có vẻ như bạn không thể yank JVM ra vì các thành phần hệ điều hành chính đang chạy trong Java (true?).

Linux dường như có hầu hết các phần có thể được đặt lại với nhau mà không cần có hành trình không cần thiết. Dưới đây là những câu hỏi chính:

  • Khi các phần GUI được ghép lại với nhau, linux vẫn là dấu chân bộ nhớ nhỏ hơn đáng kể so với Android giả sử JVM và các thành phần ứng dụng trong Android không hữu ích cho dự án (ngay bây giờ GUI-ít linux xây dựng là khoảng 24MB)?
  • Android có thể chạy mà không có các thành phần JVM để giảm bớt dấu chân bộ nhớ nếu bạn không cần bất kỳ ứng dụng người dùng nào đang chạy trong Java không?
  • Bạn có thể viết các ứng dụng C++ hạng nhất trong Android không?
  • Linux có giao diện đa chạm trưởng thành với bàn phím cảm ứng toàn hệ thống, chạm GUI, cử chỉ broswer có thể chạm (di chuyển, thu phóng, v.v.). Hay nó đòi hỏi rất nhiều mã UI tùy chỉnh?
+0

Đây không phải là câu trả lời cho câu hỏi của bạn: nhưng bạn đã bao giờ xem xét công cụ xây dựng chưa? http://buildroot.uclibc.org/ Tôi đã sử dụng nó làm cơ sở cho hầu hết các nền tảng nhúng của mình và danh sách gói của nó khá lớn. Mặc dù, tôi chưa bao giờ thiết kế một hệ thống với GUI. Có lẽ một cái nhìn vào những gì nó cung cấp sẽ cung cấp cho bạn một ý tưởng về những gì bạn sẽ phải tạo bằng tay với một giải pháp không android? FWIW – tMC

+0

android là một hệ điều hành dựa trên Linux http://en.wikipedia.org/wiki/Android_%28operating_system%29 –

+0

@Ray, trả lời không có câu hỏi nào của anh ấy. Đặt trọng tâm vào "Một khi các phần GUI được đặt lại với nhau". Anh ta muốn so sánh Android với Linux + Z, và anh ta không biết Z là gì, hoặc nếu nó tồn tại. –

Trả lời

1

Tôi không nói từ kinh nghiệm, nhưng hãy nhìn vào http://www.omgubuntu.co.uk/2012/02/kde-spark-tablet-opens-pre-order-registration/ hoặc thậm chí dễ dàng hơn tại https://www.google.com/search?q=ubuntu+touch+interface

Vì vậy, có, Linux đã hỗ trợ cho cảm ứng. Không chắc chắn về đa cảm ứng mặc dù, theo như tôi biết nó ở đó (nhưng tôi có 0 kinh nghiệm).

Để cuộn và thu phóng, tôi đoán tất cả sẽ phụ thuộc vào những gì bạn sử dụng ở mặt sau. Câu hỏi thực sự nên là nếu webkit hỗ trợ việc cuộn và thu phóng mượt mà (nếu bạn định chạy ứng dụng của mình trong trình duyệt như tôi đã hiểu).

3

Có một số quan niệm sai lầm trong bài đăng của bạn. Tôi sẽ bắt đầu bằng cách liệt kê các câu hỏi và câu trả lời của bạn:

  • Khi các mảnh GUI được đặt lại với nhau, được linux vẫn còn là một bộ nhớ nhỏ hơn đáng kể so với Android giả định các thành phần JVM và ứng dụng trong Android không hữu ích cho dự án (ngay bây giờ xây dựng linux-less linux của chúng tôi là khoảng 24MB)?

Tất cả phụ thuộc vào trình quản lý cửa sổ bạn chọn sử dụng. Bản năng của tôi ở đây là bất cứ điều gì với sự hỗ trợ cảm ứng gần như trưởng thành vào thời điểm này sẽ nặng hoặc nặng hơn android.

  • Android có thể chạy mà không có thành phần JVM để giảm bớt dấu chân bộ nhớ nếu bạn không cần bất kỳ ứng dụng nào của người dùng chạy trong Java không?

Android không sử dụng JVM. Android sử dụng ngôn ngữ java, nhưng sử dụng máy ảo dalvik được thiết kế cho các thiết bị nhúng. Sự phổ biến kết thúc với thực tế là chúng là các máy ảo.

  • Bạn có thể viết các ứng dụng C++ hạng nhất trong Android không?

Bạn có thể viết phần lớn ứng dụng của mình bằng C hoặc C++ bằng NDK, tuy nhiên, bất kỳ mô-đun nào được viết theo cách đó cần được gọi thông qua android được viết bằng java/dalvik SDK. Bằng cách đó, bất kỳ mô-đun quan trọng nào hiệu suất như thực hiện các phép tính mở rộng đều có thể là bản địa, nhưng lớp gui sẽ không (mặc dù thường với hiệu năng lớp GUI ít có khả năng trở thành mối quan tâm). Các cửa sổ android và thư viện UI gốc được viết bằng Java, bạn sẽ phải làm lại nhiều công việc để có được các phần tử giao diện người dùng có thể sử dụng trong NDK vì Google không có ý định NDK cho điều đó.

Lời khuyên của tôi ở đây là để chế tạo thử nghiệm các ứng dụng bằng cách sử dụng SDK bình thường, bỏ cuống cho bất cứ điều gì mà sẽ được hưởng lợi từ tăng tốc phần cứng (Giữ nó mô-đun do đó, nó không phải là quá phụ thuộc lẫn nhau)

  • Liệu Linux có giao diện cảm ứng đa điểm trưởng thành với bàn phím cảm ứng toàn hệ thống, chạm vào GUI, cử chỉ broswer có thể chạm (di chuyển, thu phóng, v.v.). Hay nó đòi hỏi rất nhiều mã UI tùy chỉnh?

Phụ thuộc vào trình quản lý cửa sổ bạn sử dụng. Không có vấn đề gì bạn chọn bạn có thể sẽ cần phải đánh lừa xung quanh cho đến khi bạn tìm thấy sự kết hợp khả thi của tất cả mọi thứ. Không có một giải pháp distro tích hợp tuyệt vời nào mà tôi biết (mặc dù những người khác có thể). Ấn tượng của tôi về vùng đất này là không có nhiều việc xảy ra ở mặt trận này.

Điều cuối cùng tôi muốn thêm là viết mã java thực thi tốt trong Dalvik (hoặc thậm chí JVM) có thể chạy gần với tốc độ của mã gốc. Nếu bạn biết những gì bạn đang làm và hiểu khi nào đó là một tham chiếu, thì loại bộ sưu tập nào để sử dụng cho mục đích gì (gợi ý: Không phải mọi thứ đều là một mảng), và không sao chép các đối tượng khắp nơi, Java khá tốt.

+0

Dalvik chỉ là một triển khai JVM. Nó vẫn là một máy ảo dựa trên Java. Một tiêu chuẩn điển hình cho Java vs C cho thấy hiệu suất giảm 2-3x khi sử dụng RAM tăng gấp 3 lần (hoặc nhiều hơn). Điều này không đáng ngạc nhiên vì nó là một máy ảo và sử dụng bộ sưu tập rác tự động. Thậm chí nếu nó không phải là một máy ảo, thì bộ sưu tập rác vẫn làm cho nó thỏa hiệp giữa ram và tốc độ. Anyways mất hiệu suất 3x ở 3x RAM là một sự cân bằng đắt tiền cho một thiết bị nhúng –

+0

Dalvik không phải là một thực hiện JVM cả. Mã byte hoàn toàn khác. Khi tạo một ứng dụng android, ứng dụng này được biên dịch đầu tiên thành mã byte Java, sau đó là mã byte Dalvik. Cả hai không tương thích vì đó là việc thực hiện JVM sẽ ngụ ý. – hsanders

+0

mã byte = máy ảo.Không chắc chắn tại sao điều này không rõ ràng –

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