Có quan trọng để biết C / C ++ để phát triển Android không?


8

Có thể chỉ sử dụng Java (không có C ++ / NDK) để xây dựng các ứng dụng Android tốt, nhanh, đẹp (bao gồm cả phát triển 3D) không?

Khi tôi tìm kiếm các yêu cầu vị trí nhà phát triển Android (vị trí tuyển dụng), tôi thấy rằng kiến ​​thức về C / C ++ / NDK là rất quan trọng. Một số công ty thậm chí yêu cầu xây dựng các nhiệm vụ thử nghiệm của họ chỉ bằng C ++ (OpenGL).


Tại sao bạn không muốn biết điều gì? Vì nó ít nhất là hữu ích , tốt hơn bạn nên dành một vài ngày và tìm hiểu nó.
SK-logic

Bạn đã bao giờ thử sử dụng OpenGL trong Java chưa? Đó là một nỗi đau thực sự để làm.
Sulthan

Câu trả lời:


6

Trong hầu hết các trường hợp, bạn không cần c / c ++ để phát triển cho Android.

Theo Tổng quan về NDK của Android

II. Android NDK không có mục tiêu:

NDK không phải là một cách tốt để viết mã gốc chung chạy trên thiết bị Android. Đặc biệt, các ứng dụng của bạn vẫn phải được viết bằng ngôn ngữ lập trình Java, xử lý các sự kiện hệ thống Android một cách thích hợp để tránh hộp thoại "Ứng dụng không phản hồi" hoặc xử lý vòng đời của ứng dụng Android.

tuy nhiên c / c ++ rất quan trọng nếu bạn muốn sử dụng các thư viện c / c ++ hiện có.

Ví dụ: Android không có bộ mã hóa mp3 tích hợp nhưng bạn có thể sử dụng thư viện què mở .

Điều tương tự có thể áp dụng cho xử lý hình ảnh 3d


4
Đó chỉ là sự cường điệu từ Google - tất cả các trò chơi nhanh và lạ mắt mà tôi có trên điện thoại của mình đều được xây dựng bằng NDK - hãy tự mình tìm kiếm, phát hiện Addons (ban đầu để hiển thị các mạng quảng cáo tinh ranh) và xem phần bộ công cụ dành cho nhà phát triển. Bạn sẽ thấy tất cả những thứ tốt được xây dựng với NDK. Bây giờ cho dù đó là vì java hút hay vì tất cả các nhà phát triển tốt nhất sử dụng C / C ++ đều gây tranh cãi.
gbjbaanb

2
@gbjbaanb: trò chơi có phần đặc biệt (trên cả máy tính để bàn và trên nền tảng di động). Cấp, trên nền tảng di động, họ là một trường hợp đặc biệt phổ biến rộng rãi hơn ;-)
Joachim Sauer

@gbjbaanb: quan tâm khi biết rằng hầu hết các trò chơi nhanh được phát triển trong c / c ++. Là những trò chơi đa nền tảng? (tức là tồn tại cho Android và iphone?)
k3b

1
Ngôn ngữ duy nhất cho phép viết các ứng dụng di động vẫn là C ++. Đó đơn giản là sự thật. Một số nền tảng di động có Java, một số có CLR, nhưng không có sẵn trên tất cả. Do đó, bất kỳ ứng dụng phức tạp nào cũng sẽ có lõi C ++. Trên hết, nó có thể có giao diện người dùng Java cho Android.
Jan Hudec

3

Có nhiều ứng dụng trong Java. Phát triển trong Java nhanh hơn và các thiết bị ngày nay rất mạnh mẽ đến nỗi hiệu quả không thành vấn đề khi ứng dụng chủ yếu là giao diện người dùng tuyệt vời cho một số dữ liệu được lấy ra khỏi mạng. Đó là phần lớn các ứng dụng ngoài kia. Vì vậy, bạn chắc chắn có thể có được một công việc phát triển ứng dụng Android ngay cả khi không có kiến ​​thức về C ++.

Tuy nhiên, có một số lý do rất tốt để chọn C ++ cho các ứng dụng phức tạp hơn:

  1. Cho đến ngày nay, C ++ vẫn là ngôn ngữ duy nhất có thể mang theo cho tất cả các nền tảng. Một số nền tảng di động có Java, một số có CLI / CLR (.NET), nhưng không có sẵn trên tất cả chúng. Viết ứng dụng di động trong C ++ là rất nhiều công việc, nhưng có thể thực hiện được và được chứng minh bằng nhiều ví dụ.
  2. Java có bộ nhớ không hiệu quả được tích hợp vào ngôn ngữ. Nếu bạn nhìn vào các so sánh khác nhau, tác vụ tương tự thường chiếm bộ nhớ trong Java gấp 3-10 lần so với C ++. Vì vậy, nếu bạn đang làm một cái gì đó cần nhiều dữ liệu trong bộ nhớ, Java sẽ không phải là lựa chọn tốt (lưu ý rằng tình huống sẽ tốt hơn nhiều với CLI / CLR).
  3. Dalvik, JVM trên Android, hơi chậm so với các JVM giống nhất như HotSpot. Vì vậy, nếu bạn đang làm một cái gì đó thực sự cần sức mạnh tính toán thô, Java không phải là một lựa chọn tốt trên Android. Tuy nhiên, có rất ít ứng dụng thực sự cần nhiều năng lượng như vậy. Hầu hết các ứng dụng chỉ cần ngồi đó và xoay ngón tay cái 99% thời gian chờ người dùng nhấp vào một cái gì đó và đối với loại ứng dụng đó Java vẫn ổn (đối với hầu hết trong số họ, ngay cả Python cũng sẽ ổn).

Tôi nghĩ rằng lý do đầu tiên là quan trọng nhất.


1
Chỉnh sửa cho tôi nếu tôi sai, nhưng ngay cả các ứng dụng NDK cũng không phải biên dịch sang Dalvik để thậm chí chạy trên thiết bị Android?
Michael K

@MichaelK: Vâng, có và không. Mã riêng là mã máy riêng, không phải Dalvik. Nhưng nó cần một chút keo Java và Dalvik được tải cho nó và chạy keo đó (và phần gốc được tải vào nó dưới dạng thư viện dùng chung). NDK mới nhất giảm nhu cầu keo rất nhiều, nhưng tôi không chắc liệu hoàn toàn.
Jan Hudec

2

Nó phụ thuộc vào mức độ 'bản địa' ứng dụng của bạn sẽ hoạt động. Có vẻ như hiện tại, nhiều ứng dụng cần phải có nguồn gốc để cung cấp Ux / UI đầy đủ mà người dùng cuối yêu cầu. Liệu sự trừu tượng API dựa trên HTML5 & Java có đủ tốt để không cần điều này tiếp tục không? Ai biết :-)


1

Nó hoạt động hoàn hảo khi sửa đổi mã C / C ++, nhưng khi mã java được sửa đổi, nó không tự động xây dựng lại. Sửa đổi Java không được gửi đến trình giả lập hoặc thiết bị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.