Πώς να προσθέσετε το κουμπί Reboot Recovery στο Galaxy S7 Edge Power Menu

adb pull /system/framework/services.jar



Αλλάξτε το σε ένα φάκελο της επιλογής σας.

  1. Τώρα ανοίξτε το APK Easy Tool και επιλέξτε Επιλογή δίπλα στο ' Αρχείο APK για εργασία '. Επιλέξτε το framework-res.apk που τραβήξατε από το Galaxy S7. Τώρα κάντε κλικ στο κουμπί Αποσύνδεση.



  1. Τώρα μεταβείτε στον κατάλογο του αποσυντεθειμένου αρχείου .APK και επικολλήστε τα αρχεία από το αρχείο framework-res .zip που παρείχα στο αποκωδικοποιημένο φάκελο του framework-res.apk.
  2. Τώρα χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου, προτείνω πραγματικά κάτι όπως το Σημειωματάριο ++ που μπορεί να οργανώσει κώδικα XML, να ανοίξει το res / values ​​/ arrays.xml
  3. Τώρα εδώ είναι που θα πάμε πραγματικά τεχνικά. Πρέπει να προσθέσετε όλες τις γραμμές στις οποίες εμφανίζονται τολμηρός στα ακόλουθα αποσπάσματα κώδικα.
  4. Βρείτε και Προσθήκη τι έχω τολμηρή.

εξουσία
κωδικός δεδομένων
αεροπλάνο
επανεκκίνηση
απαγόρευση κυκλοφορίας
αναφορά σφαλμάτων
χρήστες
επανεκκίνηση
λειτουργία έκτακτης ανάγκης
υπο-οθόνη
οθόνη



  • Τώρα μεταβείτε στο res / values ​​/ strings.xml και Προσθήκη ο τολμηρός .

Φόρτιση συνδεδεμένης συσκευής μέσω USB…
10,32,768,10,60
Επανεκκινήστε την ανάκτηση



  • Εντάξει, τελειώσαμε με το framework-res.apk. Τώρα μπορείτε να το μεταγλωττίσετε ξανά στο APK Easy Tool.
  • Τώρα πρόκειται να εργαστούμε στο Services.jar, οπότε αποσυνθέστε το Services.jar με το APK Easy Tool και αντιγράψτε τα αρχεία από το αρχείο .zip του βάζου υπηρεσιών που παρείχα παραπάνω στον πρόσφατα αποσυντεθέντα φάκελο Services.jar.
  • Τώρα χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου, ανοίξτε το smali / com / android / server / policy / GlobalActions.smali και πάλι θα προσθέσετε το τολμηρή γραμμή στα πεδία # παρουσίας

.field mEmergencyStringId: I
.field private mRebootRecovery: Lcom / android / server / policy / GlobalActions $ SinglePressAction;

  • Τώρα βρείτε ' .mode 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 / διακομιστής / πολιτική / GlobalActions $ 20; - > (Lcom / android / server / policy / GlobalActions; II) V move-object / from16 v0, p0 iput-object v5, v0, Lcom / android / server / policy / GlobalActions; -> m Επανεκκίνηση: Lcom / android / server / πολιτική / GlobalActions $ SinglePressAction; new-instance v4, Lcom / android / server / policy / GlobalActions $ 47; move-object / from16 v0, p0 iget-object v0, v0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context; invoke-virtual {v0}, Landroid / content / Context; -> getResources () Landroid / content / res / Resources; κίνηση-αποτέλεσμα-αντικείμενο 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;) Μεταφέρω-αποτέλεσμα v5 move-object / from16 v0, p0 iget-object v0, v0, Lcom / android / server / πολιτική / GlobalActions; -> mContext: Landroid / content / Context; invoke-virtual {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 / Πόροι ; -> getIdentifier (Ljava / lang / String; Ljava / lang / String; Ljava / lang / String;) I-result v6 move-object / from16 v0, p0 invoke-direct {v4, v0, v5, v6}, Lcom / android / διακομιστής / πολιτική / GlobalActions $ 47; -> (Lcom / android / διακομιστής / πολιτική / GlobalActions; II) V move-object / from16 v0, p0 iput-object v4, v0, Lcom / android / server / policy / GlobalActions; -> mRebootRecovery: Lcom / android / server / policy / GlobalActions $ SinglePressAction; invoke-static {}, Lcom / samsung / android / feature / SemCscFeature; -> getInstance () Lcom / samsung / android / feature / SemCscFeature; μετακίνηση-αποτέλεσμα-αντικείμενο v4 const-string / jumbo 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 new-instance v4, Lcom / android / server / policy / GlobalActions $ BugReportAction; move-object / from16 v0, p0 invoke-direct {v4, v0}, Lcom / android / server / policy / GlobalActions $ BugReportAction; -> (Lcom / android / διακομιστής / πολιτική / GlobalActions;) V move-object / from16 v0 , p0 iget-object v5, v0, Lcom / android / server / policy / 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 / διακομιστής / πολιτική / GlobalActions $ SinglePressAction; move-object / from16 v0, p0 iget-object v5, v0, Lcom / android / server / policy / 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 / διακομιστής / πολιτική / GlobalActions $ Action; Ljava / util / ArrayList; Z) Z const / 16 v6, 0x200 # sebelumnya ήταν 0x100 const / 4 v7, 0x1 move-object / from16 v0, p0 invoke-direct {v0, v6, v4, v5, v7}, Lcom / android / διακομιστής / πολιτική / GlobalActions; -> addDialogItemsIfEnabled (ILcom / android / server / Policy / GlobalActions $ Action; Ljava / util / ArrayList; Z) Z
  • Τώρα αναζητήστε const-string / jumbo v4 , 'Σιωπηλό' και προσθέστε αυτές τις γραμμές πάνω από αυτό. Οι δύο έντονες γραμμές πρέπει να ταιριάζουν.
const-string / jumbo v4, 'emergencymode' invoke-virtual {v4, v11}, Ljava / lang / String; -> ισούται με (Ljava / lang / Object;) Z μετακίνηση-αποτέλεσμα v4 if-eqz v4,: cond_15 move- αντικείμενο / από16 v0, p0 iget-αντικείμενο v4, v0, Lcom / android / server / policy / GlobalActions; -> mItems: Ljava / util / ArrayList; move-object / from16 v0, p0 iget-object v5, v0, Lcom / android / server / policy / GlobalActions; -> mEmergency: Lcom / android / διακομιστής / πολιτική / GlobalActions $ ToggleAction; invoke-virtual {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 μετακίνηση-αποτέλεσμα v4 if-eqz v4,: cond_asc1 move-object / from16 v0, p0 iget-object v4, v0, Lcom / android / server / policy / GlobalActions; -> mItems: Ljava / util / ArrayList; move-object / from16 v0, p0 iget-object v5, v0, Lcom / android / server / policy / GlobalActions; -> mRebootRecovery: Lcom / android / διακομιστής / πολιτική / GlobalActions $ SinglePressAction; invoke-virtual {v4, v5}, Ljava / util / ArrayList; -> προσθήκη (Ljava / lang / Object;) Z goto / 16: goto_7 : cond_asc1 const-string / jumbo v4, 'σιωπηλό'

Στη συνέχεια, πρέπει να προσθέσουμε ένα μέρος που λείπει από το Android 7 services.jar, οπότε θα το προσθέσουμε ξανά για να λειτουργήσει αυτό το mod.
Βρείτε τη γραμμή για .method private addCustomDialogItems (Landroid / graphic / drawable / BitmapDrawable; Ljava / lang / String; Landroid / content / Intent; ILjava / util / ArrayList;) Z

Και προσθέστε αυτήν την παραπάνω μέθοδο:



. μέθοδος στατικής συνθετικής πρόσβασης $ 500 (Lcom / android / server / policy / GlobalActions;) Landroid / content / Context; .locals 1 iget-object v0, p0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context; μέθοδος επιστροφής-αντικειμένου v0 .end

Αυτό είναι, μεταγλωττίστε τώρα το services.jar και μπορείτε να ωθήσετε τόσο το recompiled framework-res.apk όσο και το services.jar πίσω στο τηλέφωνό σας, είτε με adb ώθηση εντολή ή με το κουμπί Εύκολο εργαλείο 'Εγκατάσταση στο τηλέφωνο' του APK.

Εάν λάβετε βρόχο εκκίνησης μετά το πάτημα στο τηλέφωνο, ξεκινήστε την προσαρμοσμένη ανάκτηση και σκουπίστε Dalvik + Cache.

Διαβάστε 3 λεπτά