Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Tổng quan NDK android

  1. #1
    Ngày gia nhập
    10 2008
    Nơi ở
    sài gòn
    Bài viết
    422

    Mặc định Tổng quan NDK android

    Giới thiệu về NDK
    Là bộ công cho phép nhúng các mã code lên các ứng dụng android. ứng dụng Android chạy trong máy ảo Dalvik. NDK cho phép chúng ta dùng các ứng dụng viết bằng ngôn ngữ C và C++ lên thiết bị android.
    NDK cung cấp một số hỗ trợ sau: • Một tập hợp các Toos và files build dùng để tạo ra các thư viện mã từ sources C và
    C++.
    • Cách để nhúng các thư viện mã vào một file (.apk) gói ứng dụng mà chúng ta có thể chạy được trên các thiết bị android.
    • Tài liệu, ví dụ và một số hướng dẫn.
    • Một bộ các thư viện C/C++ được hỗ trợ trong tất cả các phiên bản sau này của hệ điều hành Android, bắt đầu từ Android 1.5. Từ phiên bản 2.3 trở đi, hệ điều hành android còn hỗ trợ them cách viết Activity bằng C/C++.
    NDK cung cấp bộ header cho libc ( bột thư viện C ), libm (bột thư viện toán học), openGL ES(thư viện đồ họa 3D), giao diện JNI(là giao diện để liên lạc giữa java và native code), một số thư viện khác, được chứa trong Development Tools.
    Khi nào thì Native code Không phải khi nào NDK cũng đều có lợi với tất cả các ứng dụng. Vì vậy chúng ta cần
    cân bằng lợi ích với nhược điểm của nó. Đặc biệt trong trường hợp sử dụng native code không làm tăng hiệu suất thực thi mà làm tăng sự phức tạp của ứng dụng. Nói chung chỉ nên sử dụng native code nếu nó là cần thiết đối với ứng dụng của mình. Chứ không phải vì chúng ta thích chương trình trong C/C++.
    Frame android cung cấp 2 cách để dùng native code : • Dùng Android framework để viết ứng dụng của mình và dùng JNI để truy cập API
    được cung cấp bởi Android NDK. Kỹ thuật này cho phép chúng ta tận dụng các tiện ích của

    Android framework, nhưng vẫn cho phép chúng ta viết native code khi cần thiết. Chúng ta có thể cài ứng dụng sử dụng Native code thông qua JNI trên thiết bị chạy android 1.5 hoặc mới hơn.
    • Viết một native activity, cho phép chúng ta thực hiện cài đặt vòng đời của ứng dụng android trên native code. Android SDK cung cấp lớp NativeActivity cho phép chúng ta cài đặt vòng đời thông qua các hàm sau (onCreate(), onResume(), ..).
    Development tool NDK gồm một bộ công cụ (compilers, linkers, ...) dùng để tạo ra mã nhị phân cho bộ vi
    xử lý ARM trên hệ điều hành Linux, OS X, và Windows(với Cygwin). Cung cấp một bộ headers của hệ thống cho các API native chuẩn mà được đảm bảo
    được hỗ trợ trong tất cả các phiên bản sau này của nền tảng: • Libc (thư viện C) headers. • Libm (thư viện toán học) headers. • Giao diện JNI headers.
    • Liblog (Android logging) header. • OpenGL ES 1.1 và OpenGL ES 2.0(thư viện graphics library) headers. • Libjnigraphics (Pixel buffer access) header(for Android 2.2. trở lên). • Thư viện OpenSL ES native audio. • API cho ứng dụng android.
    NDK cũng cung cấp một hệ thống biên dịch giúp chúng ta làm việc hiệu quả với mã nguồn của mình mà không cần điều khiển chi tiết các công cụ/ nền tảng/ CPU/ ABI. Người dùng chỉ cần tạo các file biên dịch đơn giản để mô tả mã nguồn của mình mà trong ứng dụng Android sử dụng. Và hệ thống biên dịch sẽ sử dụng các file này để biên dịch, và tạo ra một thư viện động bỏ trực tiếp vào trong dự án của mình.

    Hệ thống và phần mềm yêu cầu • The Android SDK

    - Hoàn tất cài đặt một Android SDK (bao gồm tất cả các phụ thuộc). - Phiên bản SDK Android 1.5 trở đi. • Hệ điều hành hỗ trợ - Window XP (32-bit) hoặc vista (32- hoặc 64 -bit).
    - Mac Os x10.4.8 hoặc hơn (đối với X86). - Linux (32 hoặc 64 bit, thử nghiệm trên Linux Ubuntu Dapper Drake). • Các công cụ Cần Thiết - Đối với tất cả các nền tảng, bắt buộc GNU Make 3.81 trở lên. - Đối với Window, bắt buộc Cygwin 1.7 trở lên. NDK không làm việc với Cygwin 1.5. • Nền tảng Android tương thích
    Các thư viện native được tạo ra bởi Android NDK chỉ có thể sử dụng trên các thiết bị Android phiên bản 1.5 trở đi. Điều này là do Bộ công cụ và ABI liên quan đến những thay đổi làm cho các thư viện native không tương thích với hình ảnh hệ thống 1.0 và 1.1.
    Vì lí do này nên chúng ta nên sử dụng thư viện native được tạo ra với NDK trong ứng dụng mà được triển khai trên các thiết bị chạy trên nền tảng android 1.5 trở đi.
    Để đảm bảo tính tương thích, một ứng dụng dùng thư viện native tạo ra với NDK phải khai báo <uses- sdk> phần tử trong file mainfese của nó, với một giá trị thuộc tính của android:minSdkVersion 3 hoặc lớn hơn.
    Ví dụ:
    <manifest>
    <uses-sdk android:minSdkVersion="3" />
    ... </manifest>
    Hoạt động của JNI và quy trình biên dịch Như chúng ta đều biết, ứng dụng android chạy trên nền chính là Java. Muốn chạy
    C/C++ ta có hai giải pháp:
    - Sử dụng JNI: từ android 1.5 trở về sau. - Sử dụng Native Activity: từ android 2.3 trở về sau. Native Activity là phương án lựa chọn tốt hơn, bởi vì chương trình sẽ không tốn chi phí
    giao dịch giữa máy ảo Java và C/C++. Tuy nhiên, tới thời điểm hiện tại, số lượng các thiết bị hổ trợ Android 2.3 tương đối hiếm nên chúng ta sẽ sử dụng giải pháp JNI.
    Hoạt động của JNI được mô tả như sau:
    - Các phương thức JNI được đánh dấu bằng từ khóa native. - Các phương thức này được viết bằng C++ và biên dịch ra thư viện liên kết động .so. - Thư viện liên kết động được Load lên trong chương trình Java bằng lời gọi
    System.loadLibrary(...);
    - Khi trong chương trình Java có lời gọi tới hàm native, máy ảo Java sẽ tìm kiếm trong thư viện động xem hàm này đã được cài đặt chưa, sau đó các đối tượng Java sẽ được chuyển thành C++ để thực hiện lời gọi tới C++.
    - Trong C++ cũng cung cấp các thư viện cho phép giao tiếp tới máy ảo và chương trình Java.
    Quy trình xây dựng một chương trình có sử dụng JNI như sau: - Khai báo phương thức native ở trong lớp Java.
    - Khai báo và cài đặt phương thức này trong C. (Nếu C++ thì phải sử dụng extern “C” để tránh sửa tên trong C++). Quy tắc đặt tên hàm đó như sau:

    -
    tengoi_tenlop_tenphuongthuc
    Sau đó dùng NDK để biên dịch mã nguồn C thành thư viện liên kết động và thư viện này được tự động bỏ vào thư mục lib của dự án android. Viết chương trình java gọi các hàm native này. Dùng bộ SDK để biên dịch thành ứng dụng apk.
    - - Do các bước sử dụng NDK để biên dịch được thực hiện trên dấu nhắc lệnh, do đó chúng
    ta sẽ tạo tập tin lệnh để thực hiện điều này.
    Đã được chỉnh sửa lần cuối bởi haian : 08-09-2011 lúc 11:39 PM.
    cố gắng

  2. #2
    Ngày gia nhập
    09 2011
    Bài viết
    84

    thấy bạn giới thiệu hay quá nhưng tải NDK ở đâu vậy bạn ?
    RISC better than CISC
    phamthechung0@gmail.com

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi hardwire Xem bài viết
    thấy bạn giới thiệu hay quá nhưng tải NDK ở đâu vậy bạn ?
    Sẵn trong Android-SDK, vào: http://developer.android.com/ nhé.
    Chỉ khi nào cần phải viết ứng dụng hay xử lý cần độ tối ưu cao (enhance/improve performance) như xử lý đồ họa, tối ưu hóa thuật toán...thì hãy dùng native code, còn không chả để làm gì phí phạm tài nguyên.
    Không biết Java thì không dùng được NDK đâu nhé, gọi rõ hơn là viết code C++ rồi port native sang Java, gọi là JNI.
    None!

Các đề tài tương tự

  1. Chia sẻ quan điểm về mô hình MVC - Android
    Gửi bởi prt_awm trong diễn đàn Lập trình Android và Java Mobile
    Trả lời: 4
    Bài viết cuối: 07-09-2013, 09:45 PM
  2. Máy Ảo Android VirtualBox cài sẵn (2.3 và 4.3) chuyên chơi game và lập trình android
    Gửi bởi huyrua350 trong diễn đàn Tutorials và Thủ thuật lập trình Java
    Trả lời: 0
    Bài viết cuối: 06-08-2013, 02:16 AM
  3. Shared Sách liên quan tới java basic, android, jsp
    Gửi bởi kimcy1992 trong diễn đàn Công cụ, ebooks Java
    Trả lời: 1
    Bài viết cuối: 21-07-2013, 01:46 AM
  4. [Android] Cần outsource app khóa tất cả ứng dụng trên android [ chưa root ]
    Gửi bởi prt_awm trong diễn đàn Giải trí - Thư giãn
    Trả lời: 1
    Bài viết cuối: 06-07-2013, 01:25 PM
  5. Android Galaxy S II chạy android siêu mượt chơi game cực đã
    Gửi bởi rongcon88 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 19-08-2012, 06:09 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn