Kinh nghiệm Vấn đề về sign apk

Thảo luận trong 'Dev Android' bắt đầu bởi lamdoba93, 26 Tháng chín 2015.

  1. lamdoba93

    lamdoba93 Well-Known Member

    Tham gia ngày:
    1 Tháng tám 2013
    Bài viết:
    528
    Đã được thích:
    309
    Chào các bạn. Mình xin đóng góp 1 tut cho anh em sau 1 thời gian vọc vạch. Thấy vấn đề này có nhiều người thắc mắc mà cũng chưa thấy ai post lên nên hôm nay mình có vài điều chia sẻ vs các bạn!

    Khi port thêm 1 chức năng cho apk vd như mod knock off cho launcher Miui thì phải thêm 1 quyền
    Mã:
    <uses-permission android:name="android.permission.DEVICE_POWER"/>
    
    Vào AndroidMainfest.xml.

    Vấn đề là sau khi recompile app thì sign trước đó sẽ bị hư. Cho nên app ko thể load được.
    Vậy nên ta phải sign app với 1 key mới.

    Tới đây về cơ bản thì app có thể chạy được. Nhưng vs 1 số app nhất định thì nó sẽ bị check sign khi chạy. Dẫn đến app ko chạy đc nếu khác sign hệ thống

    Vấn đề tới đây cơ bản là hết. Vậy có 2 hướng giải quyết.
    1. Disable check sign trong service.jar
    2. Sign all rom.

    Bạn chọn cách nào cũng được. Mình hay chọn cách 1 vì nó nhanh, gọn.
    Cách 2 thì chỉ mất công sign tất cả app ban đầu. Sau này khi edit thì bạn dùng key đó mà sign tiếp. Vậy thôi

    Một vài tips cho các bạn tham khảo để khỏi tìm gu gồ cho mắc công:

    1. Disable check sign:
    Vào service.jar/
    \com\android\server\pm\PackageManagerService.smali

    Tìm method compareSignatures và thay nó bằng method mới dưới đây
    Lưu ý: 1 method bắt đâu và kết thúc bằng
    .method
    .end method
    Mã:
    .method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
    .locals 7
    
    const/4 v0, 0x0
    
    return v0
    .end method
    
    Xong!

    2. Sign all rom
    Bạn cần tìm 1 key nào đó rồi sign. Dùng jbart chẳng hạn.
    Tất nhiên có vài apk ko nên sign lại như Gaaps,...
    ...
    Bài viết còn nhiều thiếu sót và dựa trên kinh nghiệm. Mong các bạn góp ý!
    Thân ái.
     

Chia sẻ trang này