Nhãn

17 tháng 10, 2012

577. HTC One X: Odex và Deodex là gì? (Anh - Việt)


by Aatif Khan on November 06, 2010

Liên quan:

Cũng như 1 newbie (người mới) Android, điều làm tôi phiền muộn nhất là bắt gặp thuật ngữ vượt tầm hiểu biết của tôi. Không đến từ nền tảng Linux chúng [odex/deodex] khó bắt kịp với các từ đã quá quen thuộc (oh-so-commonly-used) phổ biến khắp cộng đồng phát triển. Như thế, một khi tôi không hiểu các thuật ngữ này, thì tôi không thể xác định cái gì đó có dùng cho tôi hay là không. Từ những gì tôi đã thấy, đây là vấn đề không chỉ với nhiều người mới mà thậm chí với cả người dùng bình thường.

Một từ thường xuất hiện khi chơi với các custom ROM, firmware, và thậm chí các theme là deodex và odex. Hầu hết người dùng không thể hiểu các thuật ngữ này thực ra bóng gió về cái gì, trong khi đó các developer vẫn mải mê khoác lác về các theme và các ROM đang được deodex, người dùng bình thường thì chẳng quan tâm cái gì đang diễn ra.

Trong bài này, chúng tôi sẽ thử giải thích odex và deodex nghĩa là gì, và nó mang hàm ý gì với 1 người dùng nào đó.

CÁI GÌ LÀ 1 FILE ODEX

Trong hệ thống file Adroid, ứng dụng đến ở dạng đóng gói với phần mở rộng .apk. Các APK (application package - gói ứng dụng) chứa các file .odex có chức năng được cho là để tiết kiệm không gian. Các file ‘odex’ thực ra là các tập hợp các phần của 1 ứng dụng mà được tối ưu hóa trước khi boot (start + resetting). Tăng tốc độ đáng kể quá trình boot, vì nó tải sẵn 1 phần của ứng dụng. Mặt khác, nó cũng làm việc hack các ứng dụng đó khó khăn hơn vì 1 phần mã đã được rút đến 1 nơi khác trước khi thực thi.

DEODEX

Deodex cơ bản là việc đóng gói lại các APK đó bằng 1 cách nào đó, theo cái cách mà chúng được tái cấu trúc thành các file .dex. Qua việc đó, tất cả các phần nhỏ của 1 gói ứng dụng được sắp lại ở 1 nơi, theo cách này thì khỏi phải lo 1 APK sửa đổi xung đột với 1 số phần được odex riêng rẽ. Tóm lại, các ROM (hay các APK) được deodex [nghĩa là] có tất cả các gói ứng dụng được đặt lại với nhau ở 1 nơi, cho phép dễ dàng sửa đổi thí dụ như làm theme. Khi không cần phần mã nào đến từ bên ngoài, các custom ROM hay các APK luôn được deodex để đảm bảo tính toàn vẹn.

CHÚNG LÀM VIỆC RA SAO

Phần này dành cho những người chuyên sâu hơn, hệ điều hành Android sử dụng 1 máy ảo nền tảng Java để chạy các ứng dụng, gọi là Dalvik Virtual Machine. 1 file deodex (.dex) bao gồm cache (bộ nhớ đệm) được máy ảo sử dụng (còn gọi là Dalvik-cache) cho 1 chương trình, và nó [file deodex] được cất ở bên trong APK. 1 file .odex, ngược lại, là 1 phiên bản tối ưu hóa tương tự file .dex được giữ bên cạnh APK chứ không nằm bên trong nó. Android mặc định áp dụng công nghệ này cho tất cả các ứng dụng hệ thống.

Nào, khi 1 hệ thống Android đang boot, davlik cache cho Dalvik VM được tích hợp sử dụng các file .odex này, cho phép OS biết chính xác những gì các ứng dụng sẽ được load, và như thế tăng tốc độ quá trình boot.

Bằng việc deodex các APK này, 1 lập trình viên thực sự đặt các file .odex trở lại bên trong các gói APK tương ứng. Bây giờ khi tất cả mã được chứa bên trong chính APK, nó trở nên khả thi để sửa đổi bất kỳ gói ứng dụng nào mà không bị xung đột với môi trường thực thi của hệ điều hành.

ƯU NHƯỢC ĐIỂM

Ưu điểm của việc deodex là khả năng sửa đổi. Điều này được sử dụng rộng rãi nhất trong các custom ROM và theme. Chuyên viên phát triển khi xây dựng 1 custom ROM bao giờ cũng sẽ chọn việc deodex gói ROM đầu tiên, từ đó sẽ không những cho phép anh ta sửa đổi các APK khác nhau, mà còn dễ dàng làm việc với theme.

Ngược lại, từ khi các file .odex được hỗ trợ để xây dựng nhanh dalvik cache, loại bỏ chúng có nghĩa là thời gian boot lúc đầu sẽ lâu hơn. Tuy nhiên, điều đó chỉ đúng đối với việc boot lúc đầu sau việc deodex, sau đó cache sẽ vẫn mất thời gian xây dựng khi các ứng dụng được sử dụng. Thời gian boot lâu hơn có lẽ chỉ gặp lại nếu dalvik cache bị xóa vì lý do nào đó.

Đối với người bình thường, hàm ý chính là khả năng làm theme. Theme cho Android cũng đến ở dạng APK, và nếu bạn muốn sửa gì chúng, bạn luôn nên chọn 1 custom ROM được deodex. Bài này có hữu ích không? Nếu bạn bị lúng túng với vài thuật ngữ khác và muốn chúng tôi giúp giải thích chúng, xin hãy comment cho chúng tôi biết.

-------

What Is Odex And Deodex In Android [Complete Guide]

by Aatif Khan on November 06, 2010

As an Android newbie, what bothered me most was coming across terminology beyond my comprehension. Not coming from a Linux background it became hard to keep up with the oh-so-commonly-used words spread all across the development community. Likewise, since I didn’t understand the terms, consequently I was unable to determine is something was of any use to me or not. From what I have seen, this problem extends to many novice and even average users.
One commonly occurring word when playing with custom ROMs and firmware, and even themes is deodexed and odexed. Most users fail to understand what these terms actually imply, and while developers would boast again and again about their themes and ROMs being deodexed, the average user is left clueless as to what is going on.
In this article, we’ll try to explain what odexed and deodexed means, and what implications does it bring to a casual user.

WHAT IS AN ODEX FILE?
In Android file system, applications come in packages with the extension .apk. These application packages, or APKs contain certain .odex files whose supposed function is to save space. These ‘odex’ files are actually collections of parts of an application that are optimized before booting. Doing so speeds up the boot process, as it preloads part of an application. On the other hand, it also makes hacking those applications difficult because a part of the coding has already been extracted to another location before execution.

THEN COMES DEODEX
Deodexing is basically repackaging of these APKs in a certain way, such that they are reassembled intoclasses.dex files. By doing that, all pieces of an application package are put together back in one place, thus eliminating the worry of a modified APK conflicting with some separate odexed parts. In summary, Deodexed ROMs (or APKs) have all their application packages put back together in one place, allowing for easy modification such as theming. Since no pieces of code are coming from any external location, custom ROMs or APKs are always deodexed to ensure integrity.

HOW THIS WORKS
For the more geeky amongst us, Android OS uses a Java-based virtual machine for running applications, called the Dalvik Virtual Machine. A deodexed, or .dex file contains the cache used by this virtual machine (referred to as Dalvik-cache) for a program, and it is stored inside the APK. An .odex file, on the other hand, is an optimized version of this same .dex file that is stored next to the APK as opposed to inside it. Android applies this technique by default to all the system applications.
Now, when an Android-based system is booting, the davlik cache for the Davlik VM is built using these.odex files, allowing the OS to learn in advance what applications will be loaded, and thus speeds up the booting process.
By deodexing these APKs, a developer actually puts the .odex files back inside their respective APK packages. Since all code is now contained within the APK itself, it becomes possible to modify any application package without conflicting with the operating system’s execution environment.

ADVANTAGES & DISADVANTAGES
The advantage of deodexing is in modification possibilities. This is most widely used in custom ROMs and themes. A developer building a custom ROM would almost always choose to deodex the ROM package first, since that would not only allow him to modify various APKs, but also leave room for post-install theming.
On the other hand, since the .odex files were supposed to quickly build the dalvik cache, removing them would mean longer initial boot times. However, this is true only for the first ever boot after deodexing, since the cache would still get built over time as applications are used. Longer boot times may only be seen again if the dalvik cache is wiped for some reason.
For a casual user, the main implication is in theming possibilities. Themes for android come in APKs too, and if you want to modify any of those, you should always choose a dedoexed custom ROM. Was this article helpful? If you are confused with some other terms and want us to help explain them, please let us know in the comments.

Không có nhận xét nào:

Đăng nhận xét