Bộ phát triển Android Native (NDK) là gì?


Câu trả lời:


93

NDK (Native Development Kit) là một công cụ cho phép bạn lập trình bằng C / C ++ cho các thiết bị Android. Nó nhằm mục đích tích hợp với SDK (nó được mô tả là "công cụ đồng hành") và chỉ được sử dụng cho các phần quan trọng về hiệu suất của một dự án. Xem tại đây để biết thêm thông tin.


11
@YoushaAleayoub - Trên thiết bị Android, mã được viết bằng Java chạy trong Máy ảo Java, một chương trình do hệ thống cung cấp để diễn giải mã byte Java. Mã được viết bằng C / C ++ được biên dịch thành các lệnh máy do CPU chạy trực tiếp. Mã thứ hai này được gọi là mã "gốc" vì nó có nguồn gốc từ CPU. Lưu ý rằng các CPU khác nhau yêu cầu các hướng dẫn mã gốc khác nhau. Do đó, khi bạn sử dụng NDK, bạn có tùy chọn tạo mã cho một loại phần cứng duy nhất hoặc cho nhiều loại CPU, tất cả đều được đóng gói trong tệp .apk cho ứng dụng của bạn.
Ted Hopp

Vì vậy, nếu tôi muốn sử dụng OpenCV trên Android, tốt hơn là sử dụng phiên bản C ++ của nó?
user8663682

@ user8663682 - Tôi khuyên bạn nên sử dụng phiên bản Android . Nó vẫn yêu cầu sử dụng NDK, nhưng tất cả công việc thể hiện khả năng cho các ứng dụng Android đã được thực hiện.
Ted Hopp

56

NDK có thể cải thiện hiệu suất ứng dụng. Điều này thường đúng đối với nhiều ứng dụng có bộ xử lý. Nhiều ứng dụng đa phương tiện và trò chơi điện tử sử dụng mã gốc cho các tác vụ chuyên sâu về bộ xử lý. Các cải tiến hiệu suất có thể đến từ ba nguồn. Thứ nhất, mã gốc được biên dịch thành mã nhị phân và chạy trực tiếp trên OS, trong khi mã Java được dịch sang mã byte Java và được thông dịch bởi Máy ảo Dalvik (VM) . Ở Android 2.2 trở lên, trình biên dịch Just-In-Time (JIT) được thêm vào Dalvik VM để phân tích và tối ưu hóa mã byte Java trong khi chương trình đang chạy (ví dụ: JIT có thể biên dịch một phần của mã byte thành mã nhị phân trước khi thực thi). Nhưng trong nhiều trường hợp, mã gốc vẫn chạy nhanh hơn mã Java.

Mã Java được chạy bởi Dalvik VM trên Android. Dalvik VM được thiết kế đặc biệt cho các hệ thống có tài nguyên phần cứng bị hạn chế (không gian bộ nhớ, tốc độ bộ xử lý, v.v.).

Nguồn thứ hai để cải thiện hiệu suất tại NDK là mã gốc cho phép các nhà phát triển sử dụng một số tính năng của bộ xử lý không thể truy cập được ở Android SDK, chẳng hạn như NEON, công nghệ Đa dữ liệu theo lệnh đơn (SIMD) , cho phép xử lý nhiều phần tử dữ liệu song song. Một ví dụ về nhiệm vụ mã hóa cụ thể là chuyển đổi màu sắc cho khung video hoặc ảnh. Giả sử chúng ta chuyển đổi một bức ảnh có độ phân giải 1920x1280 pixel từ không gian màu RGB sang không gian màu YCbCr. Cách tiếp cận đơn giản là áp dụng công thức chuyển đổi cho mọi pixel (nghĩa là hơn hai triệu pixel). Với NEON, chúng tôi có thể xử lý nhiều pixel cùng một lúc để giảm thời gian xử lý.

Khía cạnh thứ ba là chúng ta có thể tối ưu hóa mã quan trọng ở cấp độ lắp ráp, đây là một thực tế phổ biến trong phát triển phần mềm máy tính để bàn.

Bất lợi

NDK không thể truy cập trực tiếp vào nhiều API có sẵn trong Android SDK và việc phát triển trong NDK sẽ luôn tạo thêm độ phức tạp cho ứng dụng của bạn.


19

Android NDK là một công cụ đồng hành chỉ được sử dụng cùng với Android SDK cho phép các nhà phát triển ứng dụng xây dựng các phần quan trọng về hiệu suất của ứng dụng của họ bằng cách sử dụng mã gốc (C / C ++).

Điều này mang lại lợi ích dưới dạng tái sử dụng mã hiện có và tăng tốc độ.

Vui lòng đi qua các liên kết dưới đây.

Liên kết-1

Liên kết-2

Liên kết-3


8

Các Android NDK là một công cụ đồng hành với SDK Android cho phép bạn xây dựng các phần biểu diễn quan trọng của ứng dụng của bạn trong mã nguồn gốc. Nó cung cấp tiêu đề và thư viện cho phép bạn xây dựng các hoạt động, xử lý đầu vào của người dùng, sử dụng cảm biến phần cứng, truy cập tài nguyên ứng dụng, v.v. khi lập trình bằng C hoặc C ++ . Nếu bạn viết mã gốc, các ứng dụng của bạn vẫn được đóng gói thành tệp .apk và chúng vẫn chạy bên trong máy ảo trên thiết bị. Mô hình ứng dụng Android cơ bản không thay đổi.

Các liên kết sau cũng trả lời câu hỏi của bạn:

NDK là gì?

Khi nào cần phát triển bằng mã gốc

Tải xuống NDK

Cách tạo ứng dụng NDK

cách làm việc với NDK

10 mẹo cho Android NDK


3

Android NDK là một bộ công cụ cho phép bạn nhúng các thành phần sử dụng mã gốc vào các ứng dụng Android của bạn.

Các ứng dụng Android chạy trong máy ảo Dalvik. NDK cho phép bạn triển khai các phần ứng dụng của mình bằng các ngôn ngữ mã gốc như C và C ++. Điều này có thể mang lại lợi ích cho một số lớp ứng dụng nhất định, dưới hình thức tái sử dụng mã hiện có và trong một số trường hợp là tăng tốc độ.

Nguồn: http://developer.android.com/sdk/ndk/overview.html

Android NDK là một công cụ đồng hành với Android SDK cho phép bạn xây dựng các phần quan trọng về hiệu suất của ứng dụng bằng mã gốc. Nó cung cấp tiêu đề và thư viện cho phép bạn xây dựng các hoạt động, xử lý đầu vào của người dùng, sử dụng cảm biến phần cứng, truy cập tài nguyên ứng dụng, v.v. khi lập trình bằng C hoặc C ++. Nếu bạn viết mã gốc, các ứng dụng của bạn vẫn được đóng gói thành tệp .apk và chúng vẫn chạy bên trong máy ảo trên thiết bị. Mô hình ứng dụng Android cơ bản không thay đổi.

Nguồn: http://developer.android.com/sdk/ndk/index.html


3

NDK chỉ là một bộ công cụ cho phép bạn viết mã C / C ++ cho ứng dụng của mình. Ví dụ: giả sử bạn muốn thêm một chức năng / hiệu suất quan trọng vào ứng dụng của mình và bạn muốn viết nó bằng C / C ++ sau đó eclipse hoặc bất kỳ thứ gì khác IDE sẽ không cho phép bạn viết C / C ++ và trong trường hợp đó, bạn phải sử dụng NDK và tích hợp nó trong ứng dụng của mình.



2

Android NDK (bộ phát triển gốc)

Android Native Development Kit (NDK) là nhà phát triển viết mã bằng C / C ++ để biên dịch thành mã gốc

Tại sao người ta nên sử dụng nó?

Mã nguồn được biên dịch trực tiếp thành mã máy cho CPU (chứ không phải thành ngôn ngữ trung gian như với Java) thì các nhà phát triển có thể đạt được hiệu suất tốt nhất

Làm thế nào một người có thể sử dụng nó?

Đây là hướng dẫn tốt nhất

https://developer.android.com/ndk/index.html

https://www.androidauthority.com/android-ndk-everything-need-know-677642/

https://www.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html

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.