So kompilieren und theme Android APKs
Hast du jemals eine Android App geöffnet und das verwendete Farbthema nicht gemocht? Was, wenn Sie beispielsweise einen weißen Hintergrund in einer App in Schwarz ändern möchten? Heute werde ich Ihnen zeigen, wie Sie eine .APK-Datei dekompilieren, damit Sie die darin enthaltenen Dateien bearbeiten und neu kompilieren und auf Ihrem Android-Telefon installieren können.
Hinweis: Einige Apps sind schwieriger zu gestalten als andere. Facebook Messenger zum Beispiel ist notorisch schwierig zu thematisieren. Ich werde Sie anhand der Dropbox-App durch dieses Handbuch führen, da es zu den am einfachsten zu bearbeitenden gehört.
Bedarf
- Notizblock ++
- APKTool + neueste AAPT
- APKMulti Werkzeugskript
- Ein Fotoeditor wie Photoshop / GIMP
- [Optional] Dropbox .apk (zum Folgen dieses Handbuchs)
Laden Sie alle erforderlichen Tools herunter und installieren Sie sie auf Ihrem PC, einschließlich der oben bereitgestellten test.apk. Dropbox ist eine der einfacheren Apps zum Thema, also werden wir es für dieses Tutorial verwenden.
Sie sollten framework-res.apk auch von Ihrem Telefon auf Ihren PC übertragen, sie befindet sich in / system / framework / auf Ihrem internen Speicher.
Legen Sie das APKTool und das AAPT im Ordner "Other" im Hauptverzeichnis des APK Multi Tools ab.
Ziehe die test.apk in den Ordner Place-apk-here-for-modding im APK Multi Tool-Verzeichnis und du wirst mit einem Kommando-Terminal begrüßt.
Drücken Sie eine beliebige Taste, um fortzufahren, und Sie sehen ein Terminalmenü mit einer Reihe von Optionen. Wählen Sie die Option 24.
Sie kehren zum Hauptbildschirm des Terminals zurück, aber test.app wird Ihr Projekt sein. Drücken Sie 9, um die APK zu dekompilieren, und drücken Sie dann 12, um einen Test-Build zu starten. Dies ist eine gute Übung, um zu sehen, ob etwas falsch eingerichtet wurde. Wenn die App korrekt erstellt wurde, drücken Sie 2 und minimieren Sie das angezeigte Skript.
Da der Testaufbau ausgecheckt ist, wollen wir uns dem Bearbeiten des XML-Codes der Apk widmen. Bitte folgen Sie sorgfältig.
Wechseln Sie im extrahierten .apk-Ordner in den Ordner res und öffnen Sie AndroidManifest.xml mit Notepad ++. Drücken Sie nun STRG + F, um die folgende Zeichenfolge zu finden:
Android: Hintergrund
Verwenden Sie die Option Alle suchen, und es sollten ungefähr 190 Zeichenfolgen gefunden werden. Jetzt müssen Sie jede hervorgehobene Zeichenfolge durchlaufen, um sicherzustellen, dass Sie keine verpassen, wenn wir die Hintergrundfarbe der App ändern.
Blättern Sie durch, bis Sie Camera_upload_grid.xml finden, die die Zeichenfolge android enthält: background = @ * android: color / white. Kopieren Sie den gesamten String und drücken Sie STRG + H, bis der Ersetzen-Dialog erscheint. Fügen Sie die Zeichenfolge in die obere und untere Zeile ein, aber wir müssen sie ändern.
Wechseln Sie im dekompilierten .apk-Ordner in /res/values/colors.xml, und öffnen Sie es in Notepad ++. Suchen Sie nach der Linie abs__background_holo_dark, die definitiv ein Hintergrund ist. Kopieren Sie also diese Zeichenfolge und kehren Sie zur ersten geöffneten XML-Datei zurück, wobei das Feld Ersetzen noch geöffnet ist und fügen Sie in der unteren Zeile die Zeichenfolge ein, die Sie gerade kopiert haben. Sie sollten nun in der unteren Zeile des Ersetzen-Dialogs stehen:
Android: Hintergrund = @ Farbe / abs__Hintergrund_Holo_Dark
Jetzt drücke Alle ersetzen, und es wird alle @android: Farbe / Weiß ändern, um stattdessen die Hintergrund_Holo_Dark zu verwenden. Scrollen Sie nun durch die gesamte .xml und suchen Sie nach android: Hintergrund-Strings, die einen Hex-Wert (#fffffff) oder etwas anderes als das, was wir gerade durch sie ersetzt haben, benutzen. Für die gefundenen, ändern Sie die Zeichenfolgen, um die neue zu verwenden (abs__background_holo_dark).
Also haben wir den Hintergrund geändert, jetzt werden wir die Textfarbe ändern. Folgen Sie dem gleichen Vorgang, den wir gerade gemacht haben, aber diesmal ein STRG + F für Android: textColor. Du wirst 166 Zeilen gefunden.
Sie werden Dinge wie Android sehen: textColor = # ffbbbbbb, etc. Also schauen Sie wieder in die Colors.xml und wir müssen herausfinden, welche Zeilen für die Textfarbe zu ersetzen sind.
Sie können den Android: textColor = # ffbbbbbb, #ffffffff, # ff717171 und #ffcccccc im Screenshot und in Ihren Suchergebnissen in Note ++ sehen. Öffnen Sie jetzt Ihre Colors.xml erneut, um die Zeile zu finden, die wir für die Textfarbe verwenden möchten.
Also gehe zurück zur ersten .xml und führe STRG + H für den Ersetzen-Dialog erneut aus. Kopieren Sie nun die Zeichenfolge android: textColor = # ffbbbbbb nach oben und unten und ändern Sie die untere Zeile in android: textColor = @ color / text.
Jetzt noch einmal, durchsuchen Sie alle android: textColor Zeilen und ändern Sie alles, was einen Hex-Wert in der Zeichenfolge hat. Schließlich, wenn Sie zu der Datei styles.xml gelangen, möchten Sie die Umkehrung aus ein paar Zeilen entfernen, beginnend bei Zeile 260 und weiter für ein paar Zeilen nach unten. Löschen Sie also die Inverse von diesen Strings.
Als Nächstes sehen Sie einige Hex-Werte in den Zeilen 527, 536, 573, 579, 585, 601 und einigen anderen. Ersetzen Sie die Werte von (#ffffffff) bis (@ color / text).
Drücken Sie STRG + F, um in Notepad ++ nach cacheColorHint, Teiler, @ * android: color / und Inverse zu suchen.
Der cacheColorHint ist der scrollende Hintergrund, also müssen wir sicherstellen, dass sie unsere Hintergrundfarbe verwenden. Die Teiler sind selbsterklärend und wir können ihre Hexadezimalwerte ändern, wenn Sie möchten. Das einzige ist, dass du nichts anfassen darfst, das auf @drawable zeigt. Dies sind normalerweise Bilder, die als .png-Dateien an anderer Stelle im .apk-Ordner gespeichert werden.
Wenn Sie nach inverse suchen, werden Verweise auf textAppearanceInverse angezeigt. Sie müssen auf jeden einzelnen davon doppelklicken und das Inverse von diesen Strings löschen.
Schließlich wird die Suche nach @ * android: color / nur überprüft, ob wir irgendwelche Framework-Änderungen verpasst haben. Wenn Sie etwas finden, das sagt Android: PopupBackground> @ * Android: Farbe / weiß, müssen Sie es in Android ändern: popupBackground> @ color / abs__background_holo_dark. Dazu gehört die Zeile 911, die verwirrend sein kann, da sie bereits auf Android verweist: Farbe / Schwarz.
Als nächstes öffnen wir res / values / colors.xml und ändern es wie folgt:
Nächste res / values / styles.xml, und scrollen Sie nach unten bis zur Zeile 328. Ändern Sie es wie folgt:
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken() sollte zu () geändert werden
Tun Sie dasselbe für Zeile 479 und ändern Sie das Licht in Schwarz .
Gehen Sie nun in res / v11 / styles.xml und entfernen Sie das Licht, wo es Holo.Light heißt.
Als nächstes öffnen Sie res / v14-Stile, die viele Zeichenfolgen enthalten. In den ersten 46 Zeilen möchten Sie also alle Light- und Inverse- Referenzen entfernen und dann die Eltern in den Zeilen 53 und 54 zu @ * android: style / Theme.Holo ändern.
Entfernen Sie in Zeile 69 auf der rechten Seite das übergeordnete Element @ * android: style / Theme.Holo.Light.Dialog.
Das ist eine Menge Arbeit, oder? Vielleicht sind Sie von nun an App-Themen und Skins wertvoller!
Als nächstes gehen wir in den Ordner res / color . Dort sind einige Textdateien, die auf schwarz zeigen. Öffnen Sie res / colors / action_mode_item_text_color_state_list.xml
So sieht es auf Lager aus. Unten ist, wie Sie es machen müssen.
Sie müssen die gleichen Änderungen an den folgenden XML-Dateien im Ordner / res / colors vornehmen: Bottom_button.xml, Button_update.xml, Filelist_text_name.xml, Dateilist_text_klein.xml, Link_button.xml, Name_der_fileliste_text.xml, Local_filelist_text_small.xml, ss_bottom_bottom_text_color_dark. xml, ss_bottom_bottom_text_color_light.xml, tab_text_foreground.xml.
Wenn Sie damit fertig sind, öffnen Sie / res / drawbar und es gibt Xmls, die Hintergrundfarbe steuern. Also geh sie durch und lass sie so aussehen:
Wenden Sie die gleichen Änderungen auf alle anderen drawable.xml-Dateien an.
Öffnen Sie nun die Datei test.apk und drücken Sie STRG + linke Maustaste, um Smali und AndroidManifest zu markieren, klicken Sie dann mit der rechten Maustaste und Edit mit Notepad ++ erneut. Stimme allen 1999 Smali-Dateien zu. Wenn es geladen wird, führen Sie eine STRG + F Suche nach -0x100 (schwarz)
Sie erhalten ungefähr 8 Treffer, und der gewünschte ist smali / com / dropbox / android / activity / TextEditActivity.smali, in Zeile 599. Doppelklicken Sie auf diese Zeile.
Zeile 599 enthält -0x100 und Zeile 601 SetTextColor. Es gibt auch eine Variable, die mit Zeile 599 übereinstimmt. Um also kurz zu erklären: -0x100, -0x1000000 und sogar 0x0 bedeuten Schwarz, -0x1000000 ist auch schwarz und sogar 0x0. Ändere die Zeile 599, indem du die beiden 0 von den 100 entfernst und die / high16 wie folgt entfernst:
Als nächstes suchen wir nach @ * android: style, aber in smali. Das xml enthält eine extra 0 nach dem x, aber in smali benutzen wir es nicht. Es muss 0x103004f statt 0x0103004f sein.
Suchen Sie in Notepad ++ nach @ * android: style /, das 0x103 enthält.
Der zweite Treffer ist const v7, 0x1030073. Suchen Sie das in Ihrer public.xml von framework-res.apk erneut. Sie werden feststellen, dass es sich um die ID für Theme.Holo.Light.Dialog handelt. Sie müssen es in die öffentliche ID des anderen Themenstils ändern.
Da dies Theme.Holo.Light.Dialog ist, möchten Sie es Theme.Holo.Dialog machen. Theme.Holo.Dialog hat eine ID von 0x103006f. Das ändert eine Popup-Dialog-Alarmbox, um ein dunkleres Holo-basiertes Thema anstelle eines leichteren Holo.Light-basierten Themas zu verwenden.
Der nächste, den wir ändern müssen, ist 0x103006e, was Theme.Holo.Light ist. Also mach weiter und mach es zum entgegengesetzten Thema. In Ihrer public.xml von framework-res.apk sehen Sie die ID für Theme.Holo ist 0x0103006b. Lass uns diese Zeile so ändern, dass sie so aussieht:
Es gibt nur noch zwei davon. Der nächste up ist 0x103000c, was für Theme.Light in der public.xml ist. Das Gegenteil davon ist Theme.Black, nicht ThemeHolo. In der public.xml sehen Sie also die ID für Theme.Black ist 0x01030008 - ändern Sie sie wie folgt:
In anderen Apps gibt es andere Dinge zu bearbeiten und zu ändern, und mit genügend Übung können Sie fast alles neu gestalten. Aber jetzt sind wir mit allen Codebits fertig ( endlich!) .
Jetzt können Sie das Skript über das Apk Multi Tool öffnen und 12 drücken, um die App zu kompilieren. Wenn Fehler angezeigt werden, können Sie versuchen, im Fehlerprotokoll nachzusehen, was falsch gelaufen ist, aber wahrscheinlich haben Sie während der Code-Bearbeitung einen Tippfehler oder einen anderen Fehler gemacht.
Wenn der Build abgeschlossen ist, drücken Sie 2 und dann 13, um die App erneut zu signieren.
Die Aktien-App enthält einen Ordner namens Templates - Sie müssen diesen in Ihre unsignierte APK ziehen, indem Sie etwas wie 7zip verwenden. Kopieren Sie die Datei unsigned.apk in den Ordner "apk-here-for-signing" in Apk Multi Tool. Drücken Sie nun 18 im Terminal-Skript, um die Apps in diesem Ordner zu signieren. Wenn es fertig ist, wird das Skript automatisch beendet. Sie können die .apk jetzt auf Ihr Gerät laden!
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken