TUT Mở không giới hạn số lượng cửa sổ - Qslide

Thảo luận trong 'Dev Android' bắt đầu bởi okiookio, 19 Tháng năm 2014.

  1. okiookio

    okiookio Active Member

    Tham gia ngày:
    24 Tháng sáu 2013
    Bài viết:
    666
    Đã được thích:
    243
    Mở không giới hạn số lượng cửa sổ - Qslide


    Hôm nay mình sẽ hướng dẫn các bạn cách "mở không giới hạn số lượng cửa sổ - Qslide" - áp dụng với 4.1.2

    Đây là cái độc đáo nhất trong ROM Bee VN e970 của mình, cho nên các cooker khác nếu có có áp dụng thì phiền các bạn hãy chia sẻ 1 tính năng độc đáo của ROM các bạn ra nhé, vì sự phát triển của cộng đồng ;)

    [​IMG]

    Trước khi vào nội dung chúng ta thống nhất quan điểm:
    + Bạn phải biết chút ít về lập trình, hoặc tìm hiểu về câu lệnh rẽ nhánh if-then trước khi đặt câu hỏi.
    + Cách odex, deodex, decompile, build, sign file apk mình sẽ không nhắc lại nữa - các bạn có thể tìm hiểu ở các topic ngay trong diễn đàn, bạn nên đọc và tập rượt trước nếu như chưa đụng bao giờ.
    + Bài viết mình sẽ chi tiết nhất có thể, nên đừng ai kêu dài và đòi tóm lược.
    + Bạn nào có ý định comment kiểu "không cần thiết lắm" hay đại loại vậy xin phép đừng làm loãng topic, mình k hoan ngênh đâu ạ.
    + Mình sẽ hướng dẫn chứ không nhận mod hộ ai đâu nhé.
    + Không trích dẫn ( QUOTE ) cả bài nhé vì bài dài.
    * Ngoài các điều trên ra thì các bạn có thể hỏi thoải mái, mình sẽ giúp trong tầm hiểu biết.

    Vào vấn đề chính:

    Cốt lõi của vấn đề:
    ví dụ:

    + "<string name="maximum_windows">The maximum number of windows already opened</string>" // /res/values/string.xml
    + "<public type="string" name="maximum_windows" id="0x7f080003" />" // /res/values/public.xml

    Trong LGSystemUI.apk và com.lge.app.floating.res.apk, mỗi file có 1 method kiểm soát số lượng cửa sổ, số lượng cửa sổ tối đa được bật cùng lúc được fix cứng trong 1 câu lệnh rẽ nhánh.
    ==> sửa nó đi là xong.

    Cụ thể:
    + LGSystemUI.apk
    các bạn chú ý đến method checkNumOfWindows() trong "com.lge.floatinglauncher/BubbleTextView.java", phần mình bôi đen chính là phần kiểm soát số lượng của sổ tối đa;
    [​IMG]
    + com.lge.app.floating.res.apk
    các bạn chú ý method ensureMaximumFloatingWindows() trong "com.lge.app.floating/FloatableActivity.java", tương tự phần bôi đen chính là phần kiểm soát.
    [​IMG]
    i >=2 chính là chìa khóa - nếu tăng 2 lên chính là tăng số lượng cửa sổ có thể mở tối đa.
    Tuy nhiên tăng như vậy k phải là giải pháp hay, biết tăng bao nhiêu cho vừa?

    2 method này nếu trả về true thì các bạn vẫn thoải mái mở cửa sổ:
    - giải pháp 1: cho nó luôn nhả về true - xóa tất cả chỉ để lại return true;
    - giải pháp 2: xóa cái "đoạn mình bôi đen" đi - mình dùng cách này vì biết đâu sau này còn có lúc dùng đến một số thành phần khác.

    Vấn đề nẩy sinh:
    + Không thể chỉnh sửa trực tiếp vào mã nguồn java = > chọc thông qua smali ( có được sau khi decompile file apk đã deodex );
    + smali là ngôn ngữ bậc thấp nên làm việc rất khó khăn, ở đây xóa câu lệnh rẽ nhánh nên mời các bạn thao khảo cú pháp của nó trong smali:
    [​IMG]

    + bắt đầu bằng việc khai báo hằng số "const/2 <tên hằng số>, <giá trị đổ vào dạng cơ số 16>"
    + kế đến là từ khóa if-lt ....
    + kết thúc 1 nhánh bằng goto: goto_<đâu đó>

    Chuẩn bị:
    + file LGSystemUI.apk( /system/app ).
    + file com.lge.app.floating.res.apk ( /system/framework ).
    * cả 2 file phải là dạng deodex - nếu không ở dạng deodex thì lúc decompile sẽ không có file smali để sửa.

    Thực hiện:

    Tiến hành decompile LGSystemUI.apk và com.lge.app.floating.res.apk - đương nhiên phải install framework-res.apk và lge-res.apk trong /system/framework.
    + LGSystemUI : mở file BubbleTextView.smali trong /smali/com/lge/floatinglauncher tìm method checkNumOfWindows() và xóa phần mình đánh dấu:

    + com.lge.app.floating.res : mở file FloatableActivity.smali trong /smali/com/lge/app/floating tìm method ensureMaximumFloatingWindows() và xóa phần mình đánh dấu:
    Lại nẩy sinh vấn đề:
    + Với mỗi file thì tên của biến sẽ khác nhau V7,V8,V9,V10 v.v... làm sao để biết bắt đầu xóa từ đâu đến đâu?
    Mẹo:
    + các bạn mở file public.xml tìm "maximum_windows" sẽ ra cái id của nó sau đó tìm trong file smali.
    => kéo lên chút sẽ thấy const/4 vN, 0x2 , ngay dưới nó sẽ là if-lt vM, vN: cond_3 , trong đó N và M là số nất kì.
    bắt đầu từ const/4... này.

    Các bạn kéo xuống dưới cho đến khi gặp lệnh "goto : goto_" gần nhất.

    *nhớ xóa kín, căn ke để các dòng cách chuẩn đều nhau nhé - nếu k là k buid dc đâu.

    Xong xuôi rebuild file và sign, copy vào vị trí cũ (/system/app và /system/framework ) , set 644 và reboot. => thưởng thức thôi.

    [​IMG]
    Bài viết thực hiện bởi -=]OkiookiO[=-
    ở đây mình có file mẫu, sau khi mod của ROM snowJB dành cho e970 cho các bạn tham khảo.

    Bạn nào cần trao đổi thêm có thể liên hệ thông tin của mình dưới chữ kí,
    Ngoài ra thì
    FB cái nhân : She Neva Knows hoặc Tô Hùng Dương
     
    Last edited: 19 Tháng năm 2014
  2. Đạt Nguyễn

    Đạt Nguyễn Vietnam's Gsm Team

    Tham gia ngày:
    8 Tháng sáu 2013
    Bài viết:
    1,112
    Đã được thích:
    1,445
    Hú hú chờ mãi. :D
     
    nghiabradyle and okiookio like this.
  3. vuhoangpro1

    vuhoangpro1 Đột tử

    Tham gia ngày:
    13 Tháng tám 2013
    Bài viết:
    1
    Đã được thích:
    1
    Code ông bạn khiếp quá :D
     
    okiookio thích bài này.
  4. Vũ Đức Thiện

    Vũ Đức Thiện Member

    Tham gia ngày:
    8 Tháng mười 2013
    Bài viết:
    77
    Đã được thích:
    21
    hôm nào share thêm cái tut mod toggle 2g/3g nữa thì quá good luôn bác ạ :inlove::D
     
    okiookio thích bài này.
  5. minhcanhdp

    minhcanhdp Active Member

    Tham gia ngày:
    27 Tháng hai 2014
    Bài viết:
    228
    Đã được thích:
    141
    thánh òi :like::like::like::like::like::like::like:
     
    okiookio thích bài này.
  6. Naruto_Xboy

    Naruto_Xboy Active Member

    Tham gia ngày:
    26 Tháng hai 2014
    Bài viết:
    105
    Đã được thích:
    29
    Thank vì tinh thần của bác ^^
     
    okiookio thích bài này.
  7. gts8003

    gts8003 Quản lý là phụ - chém gió là chính Staff Member

    Tham gia ngày:
    10 Tháng sáu 2013
    Bài viết:
    8,057
    Đã được thích:
    3,851
    Ngon, hóng mãi :D
    Like nhiệt tình
     
    okiookio thích bài này.
  8. f120ltn

    f120ltn Active Member

    Tham gia ngày:
    21 Tháng tám 2013
    Bài viết:
    266
    Đã được thích:
    45
    Uh hay rui
     
    okiookio thích bài này.
  9. HadeS

    HadeS Active Member

    Tham gia ngày:
    9 Tháng sáu 2013
    Bài viết:
    617
    Đã được thích:
    57
    Last edited by a moderator: 21 Tháng năm 2014
  10. nthung2112

    nthung2112 Active Member

    Tham gia ngày:
    15 Tháng sáu 2013
    Bài viết:
    495
    Đã được thích:
    864
    Like tinh thần nghiên cứu của bạn, nhưng trên LTE2 thì mình chỉ cần thêm một dòng lệnh là có thể dùng thỏa mái Qslide rồi :)
     
    duykhanh2013.knock thích bài này.
  11. okiookio

    okiookio Active Member

    Tham gia ngày:
    24 Tháng sáu 2013
    Bài viết:
    666
    Đã được thích:
    243
    thêm vào build.prop đúng k bạn, nhưng cách đó k áp dụng dc cho 4.1.2
     
  12. f120ltn

    f120ltn Active Member

    Tham gia ngày:
    21 Tháng tám 2013
    Bài viết:
    266
    Đã được thích:
    45
    Cái này ah
    ro.lge.qslide.max_window=5
    4.1.2 sao ko chạy dc nhỉ
     
  13. okiookio

    okiookio Active Member

    Tham gia ngày:
    24 Tháng sáu 2013
    Bài viết:
    666
    Đã được thích:
    243
    đương nhiên là không chạy được vì floating framework không gọi đến nó anh ạ. thế nên mới phải chọc vào code đó anh :cry:
     
  14. nthung2112

    nthung2112 Active Member

    Tham gia ngày:
    15 Tháng sáu 2013
    Bài viết:
    495
    Đã được thích:
    864
    Máy mình LTE2 chạy trên 4.1.2 thêm vào chạy ok mà, chắc chỉ chạy được trên LTE2 còn dòng máy khác ko được :)
     
  15. okiookio

    okiookio Active Member

    Tham gia ngày:
    24 Tháng sáu 2013
    Bài viết:
    666
    Đã được thích:
    243
    nó k phải là dòng máy khác mà là cái framework bạn đang dùng đã được mod lại , nay mình làm cái vụ này cho ROM ARTmod cũng đã gặp, framework k phải của G mà là của Gpro :unsure: , framework đã có sự sai khác so với framework gốc.
    Cái vụ này có lẽ k phải mình mình biết, nhưng chắc chắn mình là người đầu tiên share ra :D:D
     
    ggunf and nthung2112 like this.
  16. ankuti93

    ankuti93 Active Member

    Tham gia ngày:
    8 Tháng sáu 2013
    Bài viết:
    316
    Đã được thích:
    28
    Cái này có thể mod cho vu2 đc k p? Facebook,game... chạy đc k?
     
  17. okiookio

    okiookio Active Member

    Tham gia ngày:
    24 Tháng sáu 2013
    Bài viết:
    666
    Đã được thích:
    243
    mod dc cho tất cả các máy.
    có lẽ là bạn chưa đọc bài viết nên mình giải thích lại nhé.
    bài viết hướng dẫn việc mở không giới hạn số lượng cửa sổ.
    còn việc FB, game hay bất cứ ứng dụng nào chạy được hay không thì lại phụ thuộc vào ứng dụng đó có Qslide bên trong hay không chứ không phải do framework này quy định
    nếu muốn có nhiều thêm ứng dụng nữa, bạn có thể up ROM CM, sau đó mod lại cho nó chạy small app của Sony, cái này có nhiều ứng dụng dạng cửa sổ hơn ( tầm 300 ứng dụng ), bạn có thể tìm cách mod bằng google
     
    ankuti93 thích bài này.
  18. ggunf

    ggunf Active Member

    Tham gia ngày:
    28 Tháng hai 2014
    Bài viết:
    996
    Đã được thích:
    214
    Cho mình hỏi ngu, để biết đc framework gốc hay framework đã mod lại xem ở đâu :D củng thấy hay, nghịch phát cho cái LTE2 chạy minimal 2.0 chơi.
     
  19. okiookio

    okiookio Active Member

    Tham gia ngày:
    24 Tháng sáu 2013
    Bài viết:
    666
    Đã được thích:
    243
    @ggunf muốn xem ở đâu dễ thôi :D , bạn dùng chính nó để decompile, sau đó recompile lại luôn, nếu xẩy ra lỗi thì nó là frame đã mod, thành công được xác định là trong thư mục dist có file .apk.
    ví dụ từ cái ROM bạn đang dùng, bạn trích framework-res.apk và lge-res.apk, install 2 framework này, sau đó thực hiện hành động trên với framework-res.apk này luôn.
    còn muốn biết cooker dùng framework nào để decompile và recompile thì bạn phải hỏi cooker hoặc mò ra thôi ( mò ra sao thì tuỳ vào kinh nghiệm của bạn thôi :D ).
     
    ggunf thích bài này.
  20. ggunf

    ggunf Active Member

    Tham gia ngày:
    28 Tháng hai 2014
    Bài viết:
    996
    Đã được thích:
    214
    Ok để thử :D
    Mod thu nhỏ mấy cái này để khè thằng bạn chơi mới đc, tks bạn nhé. Có khó khăn gì mình hỏi bạn liền :laugh::laugh:
     

Chia sẻ trang này