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