Đối tác - Liên kết

Thêm khả năng đổi giao diện danh bạ, tin nhắn, status bar,… vào bất kì theme ZenUI (không root)

Thảo luận trong 'Thông tin công nghệ' bắt đầu bởi zac, 29/12/15.

  1. zac

    zac New Member

    Tham gia ngày:
    16/1/14
    Bài viết:
    116
    Đã được thích:
    0
    Điểm thành tích:
    0
    [​IMG]

    Trước đây mình có viết một bài hướng dẫn thay đổi các biểu tượng trên thanh status bar trên máy Zenfone /Zenpad không cần root bằng cách tác động vào theme ZenUI gốc. Ở bài viết này, bạn sẽ biết được cách mod một theme ZenUI bất kì thay đổi được giao diện thanh status bar và nâng cao hơn nữa là các ứng dụng khác như danh bạ, tin nhắn... Và tất nhiên là bạn không cần root máy để thực hiện việc đối mới giao diện theo cách này.

    Mục đích để các bạn đọc bài viết hướng dẫn này là gì?
    -Giao diện ứng dụng thay đổi theo theme mà bạn sử dụng.
    -Không cần can thiệp vào trực tiếp ứng dụng gốc khi muốn thay đổi giao diện.
    -Thay đổi giao diện cực kì linh hoạt và dễ dàng hơn.
    -Hạn chế tối đa lỗi cho ứng dụng muốn thay đổi giao diện.
    -Không cần root máy.

    Nguyên lý hoạt động

    Bạn bắt buộc phải đọc và hiểu phần này để có thể vẫn dụng tự mod theme. Mặc dù những diễn giải sau đây đều theo cách hiểu của mình, nhưng nếu các bạn không hiểu thì cũng chịu, mình sẽ không mod theme hộ các bạn. Ai thấy phần nào mình nói sai thì comment để chỉnh lại bài viết cho hoàn thiện nhé.

    Đầu tiên nói sơ qua về ứng dụng Android, ứng dụng trên nền tảng Android được đóng gói trong một file nén duy nhất có định dạng là apk. Đôi khi một số thành phần được tách ra như odex, lib nhưng chỉ là để tối ưu hóa tốc độ thực thi. Như vậy toàn bộ các thiết kế của ứng dụng như biểu tượng, layout cũng đều được gói gọn trong một file apk này. Cách mod giao diện ứng dụng thông thường, người ta sẽ sử dụng cách thức giải nén file apk của ứng dụng, sau đó thay các nguyên liệu thiết kế như các biểu tượng, chỉnh sửa layout… rồi đóng gói lại thành file apk như ban đầu, cuối cùng là cài đặt lại để sử dụng.
    [​IMG]
    Tuy nhiên, cách này tồn tại cực kì nhiều vấn đề, đầu tiên là các ứng dụng hệ thống như systemui liên quan đến thanh status bar bạn cần phải root máy mới có thể tương tác với các ứng dụng như thế này, thứ hai việc chuyển đổi cũng cực kì không thuận tiện và nếu làm lỗi có thể làm treo bootloop. Một các khác được nhiều bạn sử dụng đó là module xposed, cách này thực hiện cực kì đơn giản như phải root máy và sử dụng xposed cũng không ổn định và có thể bootloop.

    Các theme ZenUI đã cho phép thay thế giao diện của các ứng dụng khác một cách dễ dàng hơn, bạn có thể thấy một số theme thay đổi được cả giao diện danh bạ, tin nhắn, thanh status bar… Bằng cách tích hợp vào trong nó một file apk hoàn toàn tương tự như file apk của ứng dụng gốc nhưng đã bỏ hết các thành phần chỉ giữ lại phần thiết kế (biểu tượng, layout), và vì hoàn toàn giống ứng dụng gốc đến cả ID nên khi được áp dụng nó sẽ hoạt động đè lên ứng dụng gốc ở những thành phần mà nó giữ lại. Ví dụ đơn giản như ta muốn thay biểu tượng trên thanh statusbar, các biểu tượng này nằm trong ứng dụng SystemUI có file apk là com.android.systemui.apk , việc ta cần làm là đưa file com.android.systemui.apk (đã lược bỏ hết các thành phần ứng dụng chỉ giữ lại các icon sóng pin) vào bên trong file theme ZenUI, thì khi cài đặt và áp dụng theme này systemui gốc sẽ bị ghi đè bằng systemui trong theme ở thành phần sóng pin, các thành phần khác không đổi. Và như vậy ta không cần tác động vào ứng dụng systemui trong hệ thống(cần quyền root) mà vẫn hoàn toàn đạt được mục đích.

    Thêm nữa cách này được được gọi là overlay, theo đúng nghĩa đen là bao phủ (lên cái gốc), nên mình sẽ gọi các file apk nằm trong theme là “overlay apk”.
    Yêu cầu:

    -1 ứng dụng giải nén và nén lại file apk
    , ở đây mình thích mod trực tiếp trên điện thoại nên sẽ dùng APKtool, các bác sài trên PC thì tự kiếm tool tương tự nhé. Ở đây có nhiều phiên bản APKTool cho từng dòng chip Intel hay ARM(Snap,Mediatek…), tùy vào chiếc Zenfone/Zenpad của bạn mà tải về và sử dụng nhé:

    APKTool chip Intel:
    https://drive.google.com/file/d/0B2oMRhweQ4CHeUJ3MjdxLW9halU

    APKTool chip ARM:
    https://drive.google.com/file/d/0B2oMRhweQ4CHVlRhUDFtRUFESGs

    APKTool chip ARM64:
    https://drive.google.com/file/d/0B2oMRhweQ4CHYXpzXzNWVVpLU2M

    - Các theme ZenUI tùy thích ở dạng APK
    Một là bạn tải theme được chia sẻ ở dạng APK.
    Hai là nếu bạn cài đặt theme từ kho của ASUS hay Google Play Store thì cần tách file apk theme nằm trong phân vùng data/app

    - Một số overlay apk

    Overlay systemUI (thay đổi icon thanh status bar)
    https://drive.google.com/file/d/0B2oMRhweQ4CHZmprSmRJTWN4Z1E/view?usp=sharing

    Overlay Settings:
    https://drive.google.com/file/d/0B2oMRhweQ4CHNlNocFY0eENGMDA/view?usp=sharing

    Overlay Message (ứng dụng tin nhắn)
    https://drive.google.com/file/d/0B2oMRhweQ4CHOVFqNWJkSjBsYVk

    Overlay Contacts (ứng dụng danhbạ)
    https://drive.google.com/file/d/0B2oMRhweQ4CHbEZ2UG1ZSnRucms

    Overlay Darktheme Contacts (chế độ nền tối danh bạ)
    https://drive.google.com/file/d/0B2oMRhweQ4CHQmJ2R1JvUEJKUkU

    Overlay Music (ứng dụng nhạc)
    https://drive.google.com/file/d/0B2oMRhweQ4CHc3pLYVIwcWtMRzQ

    [​IMG]

    -Ứng dụng ApkTool có thể tải dễ dàng miễn phí trên Google play Store.

    Sau đây là danh mục các chủ đề mình sẽ nói tới:


    1.Tách file apk theme khi cài đặt qua store
    2.Thêm overlay apk vào theme bất kì
    3.Mod giao diện các overlay apk.
    4.Trích overlay từ các theme ZenUI khác


    1.Tách file apk theme khi cài đặt qua store

    Nếu bạn đã có file apk của theme muốn mod và đã sẵn sàng thực hiện thì hãy xuống phần 2. Ở đây, mình sẽ hướng dẫn các bạn cài đặt theme qua kho Google play Store hoặc ASUS Theme Store nhưng không biết tách file apk như thế nào.

    -Cách 1, các bạn có thể thực hiện thủ công bằng cách cài đặt một ứng dụng quản lý tập tin cho phép can thiệp sâu vào hệ thống, mình hay dùng Root Explorer. Sau đó, dùng ứng dụng này truy cập đến đường dẫn /data/apps, ta sẽ thấy có khá nhiều các thư mục con. Trong đó, mỗi thư mục sẽ chứa file apk của mỗi ứng dụng hay theme được cài đặt vào máy. Ở đây bạn cần nhìn vào tên của theme để tìm ra thư mục chứa apk, sau đó copy file apk này ra một thư mục riêng và đổi tên để chuẩn bị mod.

    [​IMG]

    -Nếu cách trên quá phức tạp thì bạn có thể sử dụng ngay một ứng dụng tự động đơn giản hơn. Tìm trên kho Google Play Store ứng dụng “APK Extract”, tải về và cài đặt. Mở Apk Extract, bạn sẽ thấy một danh sách các ứng dụng/ theme được cài vào máy, nhấn một chạm vào theme bạn muốn tách apk. Vậy là xong, file apk của theme đã được tách vào lưu tại /sdcard/extractedApks. Tương tự copy ra một thư mục riêng và đổi tên để tiện thao tác.

    [​IMG]


    2.Thêm overlay apk vào theme bất kì
    Sau khi đã có file apk của theme muốn mod, bạn cần tải về các overlay apk của ứng dụng muốn đổi giao diện để thêm vào theme. Lưu ý tất cả các overlay đều đã được mod sẵn giao diện Android gốc, nên các bạn không muốn thay đổi thành phần nào thì đừng thêm vào theme là được.

    Mình sẽ sử dụng theme Zen Marshmallow làm mẫu vì khá nhiều bạn thích và yêu cầu mình thực hiện với theme này.

    Đầu tiên mình sẽ tải theme Zen Marshmallow trên Google Play Store và tách file apk bỏ sang một thư mục riêng đặt tên là modtheme_sal358 trong bộ nhớ trong của máy. File apk mình đổi tên thành ZenMarshmallow.apk. Sau đó với nhu cầu của mình là thay giao diện cho thanh status bar + danh bạ nên tải 2 overlay com.android.systemui.apk và com.asus.contacts.apk cũng đưa vào chung thư mục modtheme_sal358.

    -Kế tiếp là tải ứng dụng APKtool phiên bản chip Intel theo link ở trên vì mình đang áp dụng trên con Zenfone 2 . Cài đặt ứng dụng như bình thường.

    -Mở APKtool và truy cập đến file theme sdcard/modtheme_sal358/ZenMarshmallow.apk. Nhấn vào file này và chọn “decompile all”, chờ vài giây để ứng dụng thực hiện giải nén. Sau khi ứng dụng giải nén xong file theme bạn sẽ thấy xuất hiện thêm một thư mục mới là ZenMarshmallow_src (lưu ý đuôi _src) .

    [​IMG]

    Lưu ý tùy vào file theme bạn muốn mod mà quá trình giải nén diễn ra nhanh hay chậm đến vài phút, cũng như có một số file hiện lỗi trong quá trình giải nén, cái này thì không có cách nào khắc phục hoàn toàn.

    -Bây giờ, dùng phím Home để quay về màn hình chính, mở ứng dụng Root Explorer để thực hiện các bước tiếp theo.

    -Copy 2 file overlay com.android.systemui.apk và com.asus.contacts.apk vào thư mục /ZenMarshmallow_src/assets

    -Tiếp theo là khai báo 2 overlay mới thêm này vào file AndroidManifest.xml nằm trong thư mục /ZenMarshmallow/ . Nhấn giữ vào file AndroidManifest.xml và chọn Open in Text Editor.

    Mỗi overlay bạn cần thêm một đoạn mã quy định tương tự như sau:
    -Tương tự khai báo các overlay khác bằng các thay tên vào đoan màu xanh dương mình chú thích phía bên trên.
    Trước tiên bạn cần tìm dòng </theme-pack> các đoạn mã khai báo ta phải thêm vào phía trên dòng này.
    -Đây mà file mình đã sửa xong với 2 overlay com.android.systemui và com.asus.contacts.

    [​IMG]

    -Khi đã chỉnh sửa hoàn tất, phấn vào nút có biểu tượng dấu 3 chấm bên góc phải trên chọn save and exit.

    -Bây giờ là lúc bạn mở lại ứng dụng APKTool để nén lại file apk để cài đặt.

    +Trong APKTool, nhấn vào thư mục ZenMarshMallow_src (không phải nhấn giữ), chọn recompile
    +Quá trình compile hoàn tất sẽ tạo ra một file ZenMarshMallow_src.apk nhưng chưa thể sử dụng được, bạn cần phải sign file này mới có thể cài đặt.
    +Nhấn vào file ZenMarshMallow_src.apk chọn sign và cuối cùng ta được ZenMarshMallow_src_sign.apk.

    [​IMG]

    Lưu ý:
    Quá trình recompile lại file apk theme có thể không thành công, lúc này bạn cần kiểm tra lại cấu trúc file AndroidManifest.xml có giống như hướng dẫn bên trên hay chưa.
    Tương tự như vậy, khi đã xuất ra được file ZenMarshMallow_src_sign.apk nhưng nếu hiện lỗi không thể cài đặt thì bạn kiểm tra lại file AndroidManifest.xml như bên trên và compile lại. Hoặc cũng có thể là do theme này đóng gói không chuẩn nên giải nén bị lỗi, thiếu file ngay từ đầu.

    3.Mod giao diện các overlay apk.
    Từ giờ trở đi, thay vì phải mod giao diện cho từng ứng dụng thì bạn chỉ cần mod file overlay của ứng dụng đó và bỏ vào bất kì theme nào mà bạn muốn để sử dụng. Tất nhiên là bước mod overlay này cần thực hiện trước tuy nhiên do không phải là chủ đề chính của bài viết và cũng như đã quá quen thuộc nếu bạn đã từng một lần thử mod giao diện ứng dụng nên coi như phần này là dành cho những bạn nào chưa có bất cứ kinh nghiệm nào trong việc vọc vạch thiết bị của mình.

    -Tải và cài đặt ApkEditor có sẵn trên Google Play Store.
    -Chuẩn bị các overlay muốn chỉnh sửa.
    -Dùng ApkEditor để mở từng file overlay apk, ví dụ: com.asus.contacts.apk ở chế độ simple edit.
    -Chuyển qua tab Image để xem các biểu tượng giao diện bạn có thể thay đổi. Có thể nhấn vào nút save ở mỗi mục để lưu lại hình gốc.
    -Tìm các biểu tượng thay thế ở định dạng png, kích thước không quá nhỏ, tỷ lệ không quá khác so với file gốc thì sẽ không bị vỡ hay méo hình.
    -Nhấn vào nút edit (hình bút chì) và chọn biểu tượng thay thế.
    -Khi đã thay thế hết các biểu tượng cần thiết, bạn nhấn vào nút "save" phía dưới.

    [​IMG]


    -File overlay đã mod lại giao diện sẽ tìm thấy trong đường dẫn /sdcard/ApkEditor/tmp/gen.apk. Copy file gen.apk ra một thư mục riêng và đổi tên lại như ban đầu.

    4.Trích overlay từ các themeZenUI khác
    Nếu bạn cảm thấy không đủ kiên nhẫn để mod từng icon trong các overlay ứng dụng hoặc bạn tải về một số theme thấy có thể thay đổi cả giao diện các ứng dụng khác như danh bạ, tin nhắn... và muốn đưa các overlay này vào một theme nào khác thì cũng khá đơn giản thôi. Đây là cách thực hiện.

    -Đầu tiên, tìm các theme có hỗ trợ thay đổi giao diện của các ứng dụng khác ngoài launcher ở đâu?
    +Trước khi tải về các theme trên kho ASUS theme store hay Google Play Store các bạn nên xem kĩ phần Mô tả, ngay tại dòng "Apply the theme to change:" bạn sẽ thấy các thay đổi giao diện khi áp dụng theme này, bao gồm cả các overlay.
    +Ngoài 3 thành phần thông thường bạn có thể thấy trên tất cả các theme thông dụng như LockScreen, Home Screen, Quick setting panel thì còn lại, các thay đổi khác đều là overlay, ví dụ Messaging app, Dialer and Contacts app.
    +Còn nếu bạn tải các theme được chia sẻ bằng file apk trên mạng thì tất nhiên tác giả sẽ nói rõ hỗ trợ thay đổi giao diện các thành phần nào.

    [​IMG]

    -Tiếp theo tất nhiên bạn đã có file apk của theme muốn tách.
    -Sử dụng ứng dụng ApkEditor để mở theme này ở chế độ simple edit.
    -Đầu tiên bạn sẽ thấy file AndroidManifest.xml, save nó lại (nhấn vào nút hình đĩa mềm bên cạnh).
    -Tiếp tục mở thư mục assets, save lại tất cả file apk mà bạn thấy (đây là các overlay).
    -Đến đây một số người sẽ thắc mắc rằng tại sao phải lấy file AndroidManifest.xml trong khi có các overlay apk là đã thực hiện như bài hướng trên được rồi. Bởi vì chúng ta chỉ biết một số app hệ thống có quy luật "asset-path" thế nào thì "overlay" tựa tựa như vậy.

    -Chưa chắc gì các ứng dụng khác cũng như thế cho nên để đảm bảo bạn cứ xem lại một lần file AndroidManifest cho chắc chắn.
    -Cả 3 file này đều được lưu tại đường dẫn sdcard/ApkEditor/file, hãy copy ra một thư mục riêng trước khi thực hiện việc tách các file theme khác vì các tập tin trong thư mục này chỉ là tạm thời, sẽ bị ghi đè nếu trùng tên.

    [​IMG]