วิธีเพิ่มปุ่ม Reboot Recovery ในเมนูพลังงาน Galaxy S7 Edge

adb pull /system/framework/services.jar



เปลี่ยนเป็นโฟลเดอร์ที่คุณเลือก

  1. ตอนนี้เปิด APK Easy Tool แล้วเลือกเลือกถัดจาก“ APK ที่จะใช้งานได้ ”. เลือก framework-res.apk ที่คุณดึงมาจาก Galaxy S7 ของคุณ ตอนนี้คลิกปุ่ม Decompile



  1. ตอนนี้ไปที่ไดเร็กทอรีของไฟล์. apk ที่ถอดรหัสแล้วและวางไฟล์จากไฟล์ framework-res. zip ที่ฉันให้ไว้ใน โฟลเดอร์ที่แยกส่วน ของ framework-res.apk ของคุณ
  2. ตอนนี้ใช้โปรแกรมแก้ไขข้อความฉันขอแนะนำบางอย่างเช่น Notepad ++ ที่สามารถจัดระเบียบโค้ด XML เปิด res / values ​​/ arrays.xml
  3. ตอนนี้เราจะไปหาเทคนิคจริงๆ คุณต้องเพิ่มทุกบรรทัดที่ฉันแสดง ตัวหนา ในสนิปโค้ดต่อไปนี้
  4. ค้นหาและ เพิ่ม สิ่งที่ฉันมี ตัวหนา

อำนาจ
datamode
เครื่องบิน
เริ่มต้นใหม่
การปิดพื้นที่
รายงานข้อผิดพลาด
ผู้ใช้
การรีบูต
โหมดฉุกเฉิน
หน้าจอย่อย
screenrec



  • ตอนนี้ไปที่ res / values ​​/ strings.xml และ เพิ่ม ที่ ตัวหนา .

กำลังชาร์จอุปกรณ์ที่เชื่อมต่อผ่าน USB ...
10,32,768,10,60
รีบูตการกู้คืน



  • เอาล่ะเราทำ framework-res.apk เสร็จแล้ว คุณสามารถคอมไพล์ใหม่ใน APK Easy Tool ได้แล้ว
  • ตอนนี้เรากำลังจะทำงานกับ Services.jar ดังนั้นให้แยกไฟล์ Services.jar ด้วย APK Easy Tool และคัดลอกไฟล์จากไฟล์ jar. zip ที่ให้บริการที่ฉันให้ไว้ด้านบนไปยังโฟลเดอร์ Services.jar ที่แยกย่อยใหม่
  • ตอนนี้ใช้โปรแกรมแก้ไขข้อความเปิด smali / com / android / server / policy / GlobalActions.smali และอีกครั้งคุณจะเพิ่ม ตัวหนา บรรทัดในช่อง # อินสแตนซ์

.field mEmergencyStringId: I
.field ส่วนตัว mRebootRecovery: Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ SinglePressAction;

  • ตอนนี้หา“ .method private createDialog () Lcom / android / server / policy / GlobalActions $ GlobalActionsDialog; '
if-eqz v4,: cond_8 const v4, 0x10809f4: goto_4 const v6, 0x10406e2 move-object / from16 v0, p0 invoke-direct {v5, v0, v4, v6}, Lcom / android / server / policy / GlobalActions $ 20; - > (Lcom / android / server / policy / GlobalActions; II) V move-object / from16 v0, p0 iput-object v5, v0, Lcom / android / server / policy / GlobalActions; -> mRestart: Lcom / android / server / นโยบาย / GlobalActions $ SinglePressAction; v4 อินสแตนซ์ใหม่, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ 47; ย้ายวัตถุ / from16 v0, p0 iget-object v0, v0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context; เรียกใช้เสมือน {v0}, Landroid / content / Context; -> getResources () Landroid / content / res / Resources; move-result-object v0 const-string v1, 'tw_ic_do_rebootrecovery' const-string v2, 'drawable' const-string v3, 'android' invoke-virtual {v0, v1, v2, v3}, Landroid / content / res / Resources ; -> getIdentifier (Ljava / lang / String; Ljava / lang / String; Ljava / lang / String;) I move-result v5 move-object / from16 v0, p0 iget-object v0, v0, Lcom / android / server / นโยบาย / GlobalActions; -> mContext: Landroid / content / Context; เรียกใช้เสมือน {v0}, Landroid / content / Context; -> getResources () Landroid / content / res / Resources; move-result-object v0 const-string v1, 'tw_ic_do_rebootrecovery' const-string v2, 'string' const-string v3, 'android' invoke-virtual {v0, v1, v2, v3}, Landroid / content / res / Resources ; -> getIdentifier (Ljava / lang / String; Ljava / lang / String; Ljava / lang / String;) I move-result v6 move-object / from16 v0, p0 invoke-direct {v4, v0, v5, v6}, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ 47; -> (Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; II) V ย้ายวัตถุ / from16 v0, p0 iput-object v4, v0, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; -> mRebootRecovery: Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ SinglePressAction; เรียกใช้แบบคงที่ {}, Lcom / samsung / android / feature / SemCscFeature; -> getInstance () Lcom / samsung / android / feature / SemCscFeature; ย้ายผลลัพธ์วัตถุ v4 const สตริง / จัมโบ้ v5 'CscFeature_Common_ConfigBikeMode'
  • ส่วนต่อไปเป็นเรื่องยุ่งยากคุณต้อง เพิ่มเส้นหนา และแก้ไขขีดเส้นใต้
const / 16 v6, 0x80 const / 4 v7, 0x1 move-object / from16 v0, p0 invoke-direct {v0, v6, v4, v5, v7}, Lcom / android / server / policy / GlobalActions; -> addDialogItemsIfEnabled (ILcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ Action; Ljava / util / ArrayList; Z) Z อินสแตนซ์ใหม่ v4, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ BugReportAction; move-object / from16 v0, p0 invoke-direct {v4, v0}, Lcom / android / server / policy / GlobalActions $ BugReportAction; -> (Lcom / android / server / policy / GlobalActions;) V move-object / from16 v0 , p0 iget-object v5, v0, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; -> mItems: Ljava / util / ArrayList; const / 16 v6, 0x100 move-object / from16 v0, p iget-object v4, v0, Lcom / android / server / policy / GlobalActions; -> mRebootRecovery: Lcom / android / server / policy / GlobalActions $ SinglePressAction; ย้ายวัตถุ / from16 v0, p0 iget-object v5, v0, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; -> mItems: Ljava / util / ArrayList; const / 4 v7, 0x1 move-object / from16 v0, p0 invoke-direct {v0, v6, v4, v5, v7}, Lcom / android / server / policy / GlobalActions; -> addDialogItemsIfEnabled (ILcom / android / server / policy / GlobalActions $ Action; Ljava / util / ArrayList; Z) Z const / 16 v6, 0x200 #before คือ 0x100 const / 4 v7, 0x1 move-object / from16 v0, p0 invoke-direct {v0, v6, v4, v5, v7}, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; -> addDialogItemsIfEnabled (ILcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ Action; Ljava / util / ArrayList; Z) Z
  • ตอนนี้ค้นหา const สตริง / จัมโบ้ v4.0 'เงียบ' และเพิ่มบรรทัดเหล่านี้ด้านบน บรรทัดตัวหนาสองเส้นต้องตรงกัน
const-string / jumbo v4, 'emergencymode' เรียกใช้ - เสมือน {v4, v11}, Ljava / lang / String; -> เท่ากับ (Ljava / lang / Object;) Z move-result v4 if-eqz v4,: cond_15 move- object / from16 v0, p0 iget-object v4, v0, Lcom / android / server / policy / GlobalActions; -> mItems: Ljava / util / ArrayList; ย้ายวัตถุ / from16 v0, p0 iget-object v5, v0, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; -> mEmergency: Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ ToggleAction; เรียกใช้เสมือน {v4, v5}, Ljava / util / ArrayList; -> เพิ่ม (Ljava / lang / Object;) Z goto / 16: goto_7 : cond_15 const-string / jumbo v4, 'rebootrecovery' invoke-virtual {v4, v11}, Ljava / lang / String; -> เท่ากับ (Ljava / lang / Object;) Z move-result v4 if-eqz v4,: cond_asc1 ย้ายวัตถุ / from16 v0, p0 iget-object v4, v0, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; -> mItems: Ljava / util / ArrayList; ย้ายวัตถุ / from16 v0, p0 iget-object v5, v0, Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions; -> mRebootRecovery: Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions $ SinglePressAction; เรียกใช้เสมือน {v4, v5}, Ljava / util / ArrayList; -> เพิ่ม (Ljava / lang / Object;) Z goto / 16: goto_7 : cond_asc1 const-string / jumbo v4, 'silent'

ต่อไปเราต้องเพิ่มส่วนที่ขาดหายไปของ Android 7 services.jar ดังนั้นเราจะเพิ่มอีกครั้งเพื่อให้ม็อดนี้ใช้งานได้
ค้นหาบรรทัดสำหรับ. method private addCustomDialogItems (Landroid / graphics / drawable / BitmapDrawable; Ljava / lang / String; Landroid / content / Intent; ILjava / util / ArrayList;) Z

และเพิ่มวิธีการข้างต้นนี้:



. วิธีการเข้าถึงการสังเคราะห์แบบคงที่ $ 500 (Lcom / android / เซิร์ฟเวอร์ / นโยบาย / GlobalActions;) Landroid / content / Context; .locals 1 iget-object v0, p0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context; วิธี return-object v0 .end

เพียงเท่านี้ก็คอมไพล์ services.jar ใหม่แล้วและคุณสามารถพุชทั้ง framework-res.apk และ services.jar ที่คอมไพล์ใหม่กลับเข้ามาในโทรศัพท์ของคุณด้วย adb push คำสั่งหรือด้วยปุ่ม APK Easy Tool“ ติดตั้งลงในโทรศัพท์”

หากคุณได้รับลูปสำหรับบูตหลังจากกดไปที่โทรศัพท์ให้บูตเข้าสู่การกู้คืนแบบกำหนดเองและล้าง Dalvik + แคช

อ่าน 3 นาที