2.1.5 ứng dụngỨng dụng hoặc ứng dụng được xây dựng trên đầu trang của các khuôn khổ ứng dụng vàchịu trách nhiệm về sự tương tác giữa các người dùng cuối và các thiết bị. Không chắcrằng một người sử dụng trung bình là bao giờ có để đối phó với các thành phần không có trong lớp này. Cài đặt sẵn các ứng dụng cung cấp một số nhiệm vụ cơ bản người dùng muốn thực hiện(thực hiện cuộc gọi điện thoại, trình duyệt web, đọc email, vv), nhưng người dùng được tự dođể cài đặt ứng dụng bên thứ ba để sử dụng các tính năng khác (ví dụ, chơi trò chơi, xemvideo, đọc tin tức, sử dụng GPS danh mục chính, vv..). Chúng tôi thảo luận về các ứng dụng Androidchi tiết hơn trong phần 2,3.2.2 máy ảo DalvikThiết kế của Android khuyến khích các nhà phát triển phần mềm để viết các ứng dụng cung cấpngười sử dụng các chức năng phụ. Google đã quyết định sử dụng Java là nền tảng của chínhngôn ngữ lập trình vì nó là một trong những ngôn ngữ phổ biến nhất: Java cólà một số ngôn ngữ lập trình gần như liên tục qua cuối cùngthập kỷ6, và một số lớn các công cụ phát triển đang có sẵn cho nó (ví dụ:Nhật thực7và NetBeans8). Mã nguồn Java thường được biên soạn để và được phân phối như Java bytecode mà, lúc chạy, giải thích và thực hiện bởi mộtMáy ảo (VM). Cho Android, Tuy nhiên, Google đã quyết định sử dụng một khác nhaubytecode và VM định dạng tên là Dalvik. Trong quá trình biên soạnỨng dụng Android, Java bytecode được chuyển đổi sang Dalvik bytecode có thểsau đó được thực hiện bởi máy ảo Dalvik thiết kế đặc biệt.Kể từ khi một phần lớn của những đóng góp của chúng tôi liên quan đến việc sửa đổi máy ảo Dalvik, chúng tôibây giờ thảo luận chi tiết hơn một chút.2.2.1 những hạn chế phần cứngNền tảng Android được thiết kế đặc biệt để chạy trên thiết bị di động vànhư vậy có phải vượt qua một số hạn chế phần cứng khó khăn khi so sánh với hệ thống điều hành máy tính để bàn thông thường: điện thoại di động được giới hạn trong kích thướcvà được cung cấp bởi chỉ một pin. Do nhân vật này điện thoại di động, thiết bị ban đầu bao gồm một CPU tương đối chậm và đã có chỉ ít lượng RAM tráimột khi hệ thống được khởi động. Mặc dù các chi tiết kỹ thuật cổ xưa, Androidnền tảng dựa trên hệ điều hành hiện đại nguyên tắc: mỗi ứng dụng là nghĩa vụ phảichạy trong quá trình của riêng mình và có của riêng mình không gian bộ nhớ có nghĩa là mỗiứng dụng sẽ chạy trong máy ảo riêng của mình.Đó lập luận rằng những hạn chế phần cứng, đã làm cho nó khó khăn để hoàn thành cácyêu cầu bảo mật bằng cách sử dụng máy ảo Java hiện tại [8]. Để khắc phụcnhững vấn đề này, Android sử dụng máy ảo Dalvik. Một trường hợp đặc biệt của DVM làbắt đầu vào lúc khởi động mà sẽ trở thành cha mẹ của tất cả các máy ảo trong tương lai. Này VMđược gọi là quá trình hợp tử và preloads và preinitializes tất cả hệ thống lớp học (cácthư viện lõi đã thảo luận trong phần 2.1.3). Khi bắt đầu, nó lắng nghe trên một ổ cắmvà ngã ba () s trên lệnh bất cứ khi nào một khởi đầu mới của ứng dụng được yêu cầu. Bằng cách sử dụngFork() thay vì bắt đầu một máy ảo mới từ đầu tăng thời gian tăng tốc và bằng cách chia sẻ các trang bộ nhớ chứa các cài đặt sẵn hệ thống lớp học,Android cũng làm giảm các dấu chân bộ nhớ để chạy ứng dụng.Hơn nữa, trái ngược với thông thường máy ảo dựa trên stack — một cơ chế mà có thể chuyển sang bất kỳ nền tảng — DVM là dựa trên đăng ký vàđược thiết kế để cụ thể chạy trên bộ xử lý ARM. Điều này cho phép các nhà phát triển VM để thêm thêm tốc độ tối ưu.2.2.2 BytecodeBytecode giải thích bởi DVM là cái gọi là DEX bytecode (Dalvik EXecutable mã). Mã DEX là thu được bằng cách chuyển đổi Java bytecode sử dụng cáccông cụ DX. Sự khác biệt chính giữa các định dạng tập tin DEX và Java bytecodelà rằng tất cả các mã repacked vào một tập tin đầu ra (classes.dex), trong khi loại bỏchữ ký các chức năng trùng lặp, Chuỗi giá trị và mã khối. Đương nhiên, điều nàyCác kết quả trong việc sử dụng các gợi ý thêm trong DEX bytecode hơn trong Java .classcác tập tin. Nói chung, Tuy nhiên, tập tin .dex có khoảng 5% nhỏ hơn so với các đối tác của họ, các tập tin .jar nén.Đó là giá trị đề cập rằng trong khi cài đặt ứng dụng Android,tệp bao gồm classes.dex xác minh và tối ưu hóa bởi hệ điều hành. Xác minhđược thực hiện để giảm thời gian chạy lỗi và để đảm bảo rằng chương trình không thểmisbehave. Tối ưu hóa liên quan đến việc liên kết tĩnh, inlining đặc biệt (nguồn gốc)phương pháp (ví dụ như các cuộc gọi đến equals()), và cắt tỉa các phương pháp có sản phẩm nào.2,3 appsỨng dụng Android được phân phối như các tập tin gói Android (APK). APKcác tập tin là ký các tập tin ZIP có chứa các ứng dụng bytecode cùng với tất cả của nódữ liệu, tài nguyên, thư viện bên thứ ba và một tập tin bản kê mô tả các ứng dụngkhả năng. Con số 2,3 cho thấy quá trình đơn giản của cách Java mã nguồndự án đang biên dịch tập tin APK.
đang được dịch, vui lòng đợi..
