Trình biên dịch Android hoạt động như thế nào? Liệu nó loại bỏ các ý kiến trong mã Java và các tập tin XML Android trên biên dịch?Điều gì xảy ra với các nhận xét sau khi các tệp java được biên dịch trong Android?
Trả lời
Nhận xét trong tệp Java bị xóa hoặc bỏ qua khi chúng được biên dịch thành tệp lớp. Các tệp lớp không dành cho người đọc - chúng được tối ưu hóa để chạy hiệu quả trên máy ảo. Nếu các bình luận vẫn còn, chúng sẽ chỉ khiến các tệp lớp lớn hơn yêu cầu, và không có thêm lợi ích (tức là trình biên dịch và các máy ảo không hiểu ý kiến, vậy tại sao lại bao gồm chúng)
Các tệp XML, các bình luận thường được giữ lại. Trong khi một tệp lớp được biên dịch chỉ có 1 mục đích (để chạy trên một máy ảo), một tệp XML có thể phục vụ cho nhiều mục đích. Ví dụ, bạn có thể tải một tệp XML vào ứng dụng của bạn và thao tác nó. Tùy thuộc vào việc sử dụng tệp XML trong ứng dụng của bạn, nó có thể được yêu cầu để giữ các nhận xét trong đó - trên thực tế, ứng dụng của bạn có thể tìm kiếm các nhận xét cụ thể. Bởi vì các tệp XML có thể có nhiều phạm vi sử dụng, các nhận xét không bị xóa khỏi các tệp XML trong trường hợp chúng được yêu cầu cho một số mục đích khác.
Cảm ơn! Hiểu rồi. :) Có lẽ tôi cần xóa một số nhận xét của tôi về XML trước khi xuất ứng dụng của tôi vì mục đích bảo mật. – Arci
Tôi chắc chắn sẽ khuyên bạn nên xóa các nhận xét khỏi XML nếu bạn lo lắng về các tác động bảo mật. Nếu bạn có nhiều nhận xét, nó cũng sẽ khiến ứng dụng chạy chậm hơn một chút vì nó phải bỏ qua tất cả các nhận xét khi đọc tệp XML. Nó trả tiền để nhớ rằng các tập tin XML được cố tình thiết kế để được con người có thể đọc được :-) – wattostudios
Cảm ơn! Tôi sẽ xóa nhận xét của tôi rồi. – Arci
Nhận xét không có mặt trong các mã byte/phiên bản .class của file..comments được bỏ qua bởi trình biên dịch tại thời điểm biên soạn ..
Một trình biên dịch làm việc theo một cách mà nó chuyển đổi tất cả các cao Cấp mã ngôn ngữ để máy Code dễ hiểu .. tất cả cùng một lúc .. không dòng theo dòng như một thông dịch viên .. trong trường hợp của Android .. trình biên dịch chuyển đổi các tập tin nguồn .java vào tập tin bytecode/.class..và sau đó để .dex tập tin (Dalvik thực thi) .. Tất cả các ứng dụng trong Android chạy trên đầu trang của một máy ảo được gọi là Dalvik Virtual Machine cần các tập tin .dex ..
Hãy thử mở một tập tin apk như một zip .. usin g bất kỳ kho lưu trữ nào .. bạn sẽ thấy tệp classes.dex trong đó ..
Và theo như các tệp xml có liên quan .. chúng chỉ được ứng dụng sử dụng khi bạn hiển thị nội dung nào đó trên màn hình (tức là Hoạt động kết xuất) .. do đó tại thời điểm hoạt động được hiển thị..its tập tin xml tương ứng được sử dụng để xây dựng giao diện người dùng .. quá trình này được gọi là lạm phát!
EDIT: [Nhưng 1 điểm tôi nhớ bây giờ liên quan đến điều này .. các ứng dụng hệ thống có mặt trong điện thoại Android..với tất cả các ứng dụng được Google cung cấp (Gmail, Maps, v.v.), Danh bạ, Điện thoại. apk vv ..tất cả những người có hệ thống apks..present trong/hệ thống/app/thư mục .. họ có thể hoặc có thể không chứa các tập tin .dex trong chúng ..
nếu chúng chứa .dex bên trong các tập tin apk (giống như bất kỳ ứng dụng bình thường nào mà chúng ta phát triển) .. sau đó ROM được gọi là ROM (phần vững của hệ điều hành Android) .. nhưng điều này dẫn đến việc khởi động chậm hơn khi ROM được cài đặt lần đầu tiên do sao chép tất cả các tệp .dex từ tệp .apk của hệ thống vào bộ nhớ cache dalvik..sau khi tất cả các tệp .dex của hệ thống apks là cần thiết khi khởi động/khởi động hệ thống ..
Nhưng nếu ROM là odexed .. tất cả các tệp .dex của hệ thống .apk không có trong tệp .apk nhưng dưới dạng tệp riêng biệt trong/system/app/directory .. với phần mở rộng .odex
Đối với tất cả các ứng dụng bạn và tôi phát triển (các ứng dụng không phải hệ thống) .. chỉ là các ứng dụng của cửa hàng trò chơi..có chứa .dex bên trong .apk]
EDIT: tôi biết nó không liên quan nhiều đến công việc hoặc câu hỏi .. nhưng chỉ muốn đề cập đến sự khác biệt của vị trí của các tập tin .dex cho các ứng dụng sys và không phải sys! :)
Hy vọng điều đó đã hữu ích! :)
- 1. Điều gì xảy ra với mã JavaScript sau khi ứng dụng được biên dịch bằng Titanium Mobile
- 2. Điều gì sẽ xảy ra khi tôi biên dịch?
- 3. Điều gì sẽ xảy ra nếu bạn biên dịch một tệp java rỗng?
- 4. Điều gì sẽ xảy ra với con trỏ FILE sau khi tệp được đóng?
- 5. Điều gì sẽ xảy ra khi biên dịch và chạy khi ghép nối một chuỗi rỗng trong Java?
- 6. Điều gì đã xảy ra với Android AAPT?
- 7. Duy trì nhận xét trong các tệp .js sau khi biên soạn từ .coffee
- 8. điều gì đã xảy ra với syscalls.h?
- 9. Điều gì sẽ xảy ra sau khi gói bị bắt?
- 10. Điều gì đã xảy ra với java của emacs?
- 11. Nhập tĩnh Java gây ra lỗi biên dịch. Lỗi trình biên dịch có thể xảy ra?
- 12. Điều gì xảy ra với WeakReference sau GC của WeakReference.Target
- 13. Android - Điều gì xảy ra khi khóa ký hết hạn?
- 14. Điều gì sẽ xảy ra với AsyncTasks sau onPause?
- 15. điều gì thực sự xảy ra khi truyền các đối tượng trong java?
- 16. Điều gì xảy ra khi chương trình java bắt đầu?
- 17. Khi xảy ra gián đoạn, điều gì xảy ra với hướng dẫn trong đường ống?
- 18. Java: openGL: JOGL: Điều gì xảy ra sau hậu trường khi tôi gọi phương thức display()?
- 19. Các tệp Jspx và các nhận xét có điều kiện
- 20. Điều gì sẽ xảy ra với các bộ mô tả tệp trong Python 3 khi .close() không thành công?
- 21. Điều gì xảy ra với app.config trong dự án được tham chiếu
- 22. Java có bao gồm các nhận xét trên mã đã biên dịch không?
- 23. Điều gì sẽ xảy ra khi Java Compiler thấy nhiều chuỗi nối trong một dòng?
- 24. Các tệp JSP Java (* __ jsp.java) được biên dịch ở đâu?
- 25. Biên dịch các tệp .java bên ngoài từ trong Java
- 26. Điều gì đã xảy ra với regtlibv12?
- 27. Điều gì xảy ra với lớp System.Linq.Expressions.LogicalBinaryExpression?
- 28. Điều gì sẽ xảy ra khi va chạm băm xảy ra trong khóa Từ điển?
- 29. Điều gì xảy ra khi các loại giá trị được tạo?
- 30. Điều gì xảy ra với các ràng buộc khi một khung nhìn bị xóa
nhận xét bị bỏ qua bởi trình biên dịch và không nằm trong mã byte hoặc mã máy kết quả –