Chia sẻ Mỗi tuần một bài viết hữu ích về android.[ tuần 2 ]

Thảo luận trong 'Dev Android' bắt đầu bởi hyunhnhan886, 18 Tháng mười một 2013.

  1. hyunhnhan886

    hyunhnhan886 Đột tử

    Tham gia ngày:
    8 Tháng sáu 2013
    Bài viết:
    2,408
    Đã được thích:
    1,549
    Như các bạn đã biết Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh... Android là một mã nguồn mở và được đóng gói dưới dạng apk, nhờ vào điều này các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên.
    * Bài viết được thực hiện bởi hyunhnhan886 (lgviet.com)
    Tuần này mình sẽ giới thiệu với các bạn hiểu rõ hơn về odex và deodex trong apk. Bước đầu tiên để chúng ta biết được trước khi chỉnh sửa một file apk.
    *Vậy odex và deodex là gì?

    file deodex
    uploadfromtaptalk1384759982422.jpg
    file odex
    uploadfromtaptalk1384759959866.jpg

    - Android OS dùng máy ảo trên nền tảng Java cho các ứng dụng đang chạy, được gọi là Dalvik Virtual Machine .file deodexed có chứa bộ nhớ đệm (cache) dùng bởi máy ảo này (được gọi là Dalvik-cache) và được nằm trong file apk. Mặt khác file .odex, là 1 phiên bản được tối ưu hóa của chính file .dex và thường nằm bên cạnh file .apk. Android áp dụng mặc định kỹ thuật này cho tất cả các file hệ thống.

    Khi hệ điều hành Android khởi chạy, Davlik-cache trong máy ảo Davlik sử dụng các file .odex cho phép hệ điều hành biết trước những gì ứng dụng sẽ chạy, và do đó tăng tốc quá trình khởi động.

    Bằng cách deodex các ứng dụng, các nhà phát triển thực tế đã đưa những file .odex vào trong gói ứng dụng .apk tương ứng. Như vậy các mã sẽ được chứa trong các ứng dụng đó, giúp việc tùy chỉnh các ứng dụng mà không xung đột với môi trường thực thi của hệ điều hành.

    Nhà phát triển xây dụng 1 bản rom tùy chỉnh, đầu tiên sẽ luôn chọn deodex. Từ đó, cho phép tùy chỉnh các ứng dụng khác nhau. Mặt khác, do file .odex được coi là giúp nhanh chóng hoàn thành Dalvik-cache, loại chúng đi sẽ khiến thời gian khởi động lâu hơn. Tuy nhiên, điều này chỉ đúng trong lần đầu khởi động sau khi deodex, vì bộ nhớ cache vẫn sẽ được xây dựng theo thời gian lúc ứng dụng được dùng. Thời gian khởi động lâu hơn chỉ có thể gặp lại khi xóa (wipe) Dalvik-cache, vì 1 lý do nào đó .

    Đối với người dùng thông thường, ý nghĩa chủ chốt là ở khả năng thay đổi giao diện.cho Android có thể có dưới dạng .apk, và nếu bạn muốn tùy chỉnh chúng, bạn luôn nên chọn 1 rom đã được deodex.

    Cấu trúc và thành phần trong file apk.



    SNAG-13112423240400.png

    * file Androidmanifest.xml:
    -Là nền tảng của mọi file apk, file này được đặt trong thư mục root và cho biết những thành phần có trong ứng dụng của: các activities, các services,...cũng như cách các thành phần ấy gắn bó với nhau. theo mình biết được thì các nhà gian lận thường gắn mã kích hoạt để thu lợi nhuận thường nằm trong file này.
    *Mục Assets:
    SNAG-13112614341400.png
    -Nơi chứa các file tỉnh, được yêu cầu đi kèm với ứng dụng.
    *Mục res:
    SNAG-13112614353700.png
    -Chứa các tài nguyên của ứng dụng. Icons, GUI layouts, xml...
    trong thư mục res này còn có nhiều thư mục con nữa:
    + Layout: chứa các tập tin dưới dạng .xml. Đây là nơi quy định màu sắc, vị trí từng thành phần của ứng dụng.
    + anim: chứa toàm bộ hiệu ứng của ứng dụng.
    + raw: có thể chưa file âm thanh, các account...
    + menu: chi tiết các menu, cài đặt, dưới dạng .xml...
    + values: chứa các string, clors, arrays... dưới dạng .xml. Ai muốn việt hóa thì tất cả đều nằm trong thư mục này.
    + drawable:
    - chứa các file hình ảnh, nó còn gồm các thư mục khác như: drawable-hdpi, idpi, mdpi, xhdpi. tương ứng với mỗi màn hình điện thoại khác nhau. ai thích thay đổi những gì về hình ảnh thì vào đây.
    *Mục smali:
    SNAG-13112614363700.png

    -Đây là nơi chưa toàn bộ cấu trúc dữ liệu của ứng dụng. Bên trọng mục này có chứa rất nhiều file .smali khác. tất cả những gì file apk có thể kết nối được đều liên quan đến mục này. ai muốn hack ứng dụng hay trò chơi đều nằm ở đây.
    ngoài ra còn có các thư mục khác như: bin, src, zml, data... tùy theo mỗi file apk ( ứng dụng hay game mà nhà sản xuất viết ra).
     
  2. tuan287

    tuan287 Active Member

    Tham gia ngày:
    29 Tháng tám 2013
    Bài viết:
    347
    Đã được thích:
    78
    thank....không hiểu gì nhiều nhưng rất co ích

    like
     
  3. hyunhnhan886

    hyunhnhan886 Đột tử

    Tham gia ngày:
    8 Tháng sáu 2013
    Bài viết:
    2,408
    Đã được thích:
    1,549
    cập nhật cho ai cần
     
  4. minh mũ đỏ

    minh mũ đỏ Active Member

    Tham gia ngày:
    9 Tháng sáu 2013
    Bài viết:
    727
    Đã được thích:
    155
    Anh nhân ơi chỗ mục res, n là anim (viết tắt của animation) chứ không phải admin
     
  5. trinhngocphuc

    trinhngocphuc Active Member

    Tham gia ngày:
    17 Tháng chín 2013
    Bài viết:
    766
    Đã được thích:
    1,873
    Thằng này bỏ cái hình đại diện đi..xấu như ma.

    Sent from my LG-E988 using LG Việt mobile app
     
  6. MaiHoang

    MaiHoang Active Member

    Tham gia ngày:
    13 Tháng hai 2014
    Bài viết:
    796
    Đã được thích:
    313
    Mở file XML trong các bản ROM Android dùng gì nhỉ. Notepad toàn lỗi font
     
  7. Trần Anh

    Trần Anh Well-Known Member

    Tham gia ngày:
    9 Tháng sáu 2013
    Bài viết:
    3,245
    Đã được thích:
    1,281
    thêm 2 dấu cộng => notepad ++ :D
     
  8. MaiHoang

    MaiHoang Active Member

    Tham gia ngày:
    13 Tháng hai 2014
    Bài viết:
    796
    Đã được thích:
    313
    Nói notepad chung chung vậy chứ ++ với gì thử hết r. :(
     
  9. Trần Anh

    Trần Anh Well-Known Member

    Tham gia ngày:
    9 Tháng sáu 2013
    Bài viết:
    3,245
    Đã được thích:
    1,281
    à, tùy xml trong rom mới mở đc. phải dịch ngược nó ra giống kiểu trong apk mới đọc đc
     
    MaiHoang thích bài này.
  10. okiookio

    okiookio Active Member

    Tham gia ngày:
    24 Tháng sáu 2013
    Bài viết:
    666
    Đã được thích:
    243
    https://play.google.com/store/apps/details?id=com.aor.droidedit&hl=vi

    @hyunhnhan886 mình góp ý thêm về
    + Layout: thư mục này k chứa quy định về màu sắc ( dưới dạng .xml ), màu sắc thường được chứa ở ./value các file colors.xml , drawables.xml và styles.xml , thư mục Layout chỉ chứa file .xml giao diện của các activity.

    + nói thêm về res/value , đúng như tên gọi của nó, nó chứa các giá trị,
    - string.xml chứa chủ yếu là cá chuỗi liên quan đến hiển thị, với việc việt hoá, để hiệu quả hơn, các bạn nên tìm hiểu thêm về đa ngôn ngữ trên android tại đây http://duythanhcse.wordpress.com/2013/05/15/bai-tap-27-da-ngon-ngu-trong-android/
    - dimens.xml chứa thông tin về kích thước của các thành phần trong activity.
    - public.xml theo mình nghiệm và phỏng đoán thì đây có lẽ là dấu vết còn sót lại của file R sau khi đóng gói project.
    + phần drawable : cụm này ngoài chứa các file ảnh còn chứa các file .xml custom giao diện nữa (ví dụ như khi ấn vào nút lõm xuống nó sẽ màu đen, nhấc tay lên nó sẽ màu trắng chẳng hạn vậy v.v...)

    + phần smali : phần này chính là các file .java sau khi đóng gói project ra .apk, tên của các thư mục dẫn đến file .smali chính là tên package của project , tên của file smali là tên của file .java
    Screen Shot 2014-05-05 at 11.28.32 PM.png
    + phần AndroidManifest.xml :
    - với mã kích hoạt thì mình với gặp trên file .jar dành cho các máy đời cũ s40 s60 v.v... nhưng với Android thì không làm thế được, phải add thêm permission vào manifest và đưa vào kèm theo .smali và một vài cái khác ( ở VN mình thấy có adflex của eWay dùng phương pháp này để gắn thêm quảng cáo vào file apk ).
    - trong Manifest chứa user-permission, là phạm vi mà cái app khi chạy có thể đụng chạm vào.
    - chứa danh sách các activity có trong file apk, về cấu tạo thì nói nôm na là activity = .xml + .java , thông qua dánh sách activity này có thể lần ra thêm nhiều cái để mod nhất là mod giao diện
    - chứa uses-library là danh sách các thư viện mà file apk sẽ dùng
    - chứa minSDK và targetSDK - hiểu nôm na là phiên bản android tối thiểu có thể chạy file apk này và phiên bản android mà file này được xây dựng để chạy.
    Screen Shot 2014-05-06 at 12.02.42 AM.png
    _____ trên topic cũng chỉ là chug các file apk tạo từ SDK ngoài ra nếu game dùng thêm engine đồ hoạ thì sẽ có vài cái linh tinh nữa (bạn đã đề cập rồi)___

    phần nói về odex với deodex thì mình chỉ hỏi bạn xác nhận ngắn gọn giùm là
    odex là moi file .dex ra khỏi apk ( sẽ bao gồm .apk + .odex )
    deodex là đưa .odex trở vào apk ( chỉ còn .apk )
    đúng k vậy?

    nếu đúng thì sau khi deodex nó lại thành .apk như lúc đầu ? file sau khi deodex có gì khác so với lúc chưa deodex ?

    p/s chữ "đưa" tức là đã bao gồm quá trình này nọ nọ kia - không bàn.
     
    Last edited: 6 Tháng năm 2014
    MaiHoang thích bài này.
  11. tuan2sky

    tuan2sky Member

    Tham gia ngày:
    22 Tháng hai 2014
    Bài viết:
    136
    Đã được thích:
    15
    Lâu ko thấy bác cập nhậ thêm
    Với cho hỏi sao máy em, thử extract 1 file apk ra lại ko thấy file .dex nào ạ. Chỉ có mấy file arsc, xml, thư mục res... thôi ạ. Như vậy hiểu là sao ạ
     
    Last edited: 22 Tháng sáu 2014

Chia sẻ trang này