[MOD][TUTORIAL] Höhe der NavigationsBar anpassen

Flextrick

Flextrick

App-Anbieter (unklar)
1.567
Hallo,
da verstärkt Anfragen für eine kleinere NavigationsBar kommen und ich nicht die Zeit, Lust und Nerven habe, jedem seine gewünschte Größe zu realisieren, erkläre ich es in dieser Anleitung.

Dieses Tutorial ist bei jedem ROM anwendbar! Ganz egal ob CM, AOKP, oder AOSP.

Was ihr braucht:

.. dann mal los


Es gibt 2 Optionen, wie ihr das lösen könnt: entweder von Hand mit Cmd, oder mit meinem selbstprogrammierten AndroidApktool.


1. Option (manuell im cmd):


Bevor ihr loslegt, macht ihr am besten gleich ein Nandroid Backup. Falls etwas schief laufen sollte (Bootloop etc), könnt ihr dieses dann wiederherstellen!

Das Dekompilieren:

Als erstes erstellt ihr euch einen Ordner mit dem Verzeichnis C:\apktool. Dann ladet ihr euch das Apktool herunter und entpackt es in euren neu angelegten Ordner (apktool).
  • framework-res.apk nach C:\apktool kopieren
  • Eingabeaufforderung/Cmd öffnen
  • Zum Verzeichnis eures Apktools navigieren (Mit: cd C:\apktool)
  • Folgendes eingeben: java -jar apktool.jar if framework-res.apk [enter] (...installation eurer framework-res.apk)
  • Folgendes eingeben: java -jar apktool.jar d framework-res.apk [enter]
  • Fertig (sofern kein error auftaucht)

Jetzt sollte ein Ordner namens framework-res zu sehen sein. Das ist eure dekompilierte framework-res.apk.


Das verändern der Höhe eurer NavigationsBar:
  • Ihr navigiert dann in diesem Ordner nach /res/values
  • Dort dann die Datei namens dimens.xml in eurem Text-Editor öffnen
  • die 3 Zeilen suchen, in denen navigation_bar_height, navigation_bar_height_landscape, und navigation_bar_width auftaucht
  • dort die dpi Zahlen eintragen, die ihr gerne hättet
  • VORSICHT: Bei width solltet ihr euch das Verhältnis errechnen. Standardmäßig sind bei height und hight_landscape 48dpi eingetragen. Bei width aber 42. Das bedeutet: wenn ihr eine höhe von 30dpi wollt, muss folgendes Verhältnis eingehalten werden: 48dpi(height) : 42dpi(width) = 30dpi(height neu) : xdpi(width neu)
    Das x müsst ihr euch logischerweise errechnen. Verhältnisrechnung beherrscht hoffentlich jeder (Innenglied*Innenglied=Außenglied*Außenglied) :)
  • Wenn ihr das geschafft habt: Speichern

Das (Re-)Kompilieren:
  • ihr öffnet wieder die Eingabeaufforderung/Cmd, es sei denn ihr habt es noch geöffnet
  • Folgendes eingeben: java -jar apktool.jar b framework-res [enter]
  • Die neu kompilierte framework-res.apk befindet sich dann im Ordner C:\apktool\framework-res\dist
  • WICHTIG: Jetzt kopiert ihr den META-INF Ordner und die AndroidManifest.xml von eurer ursprünglichen framework-res.apk in eure neu kompilierte! Andernfalls landet ihr im Bootloop.

Jetzt kopiert ihr eure framework-res.apk auf euer Gerät und verschiebt sie mit einem File Manager nach /system/framework. Danach sofort rebooten.

Geschafft!


2. Option (mit erleichterter Bedienoberfläche):

Wenn ihr die AndroidApktool.exe nicht starten könnt, folgendes installieren: http://go.microsoft.com/fwlink/?LinkID=145727&clcid=0x804


Bevor ihr loslegt, macht ihr am besten gleich ein Nandroid Backup. Falls etwas schief laufen sollte (Bootloop etc), könnt ihr dieses dann wiederherstellen!

Nachdem ihr euch das AndroidApktool aus der "Was ihr braucht" List heruntergeladen habt, entpackt ihr den Ordner nach C:\

Ansonsten ist das Tool eigentlich selbsterklärend, trotzdem ein paar Tipps:

  • Ihr müsst eure framework-res.apk in den AndroidApktool Ordner kopieren
  • vor jedem decompilen sollte man das eigene framework installieren, das macht ihr mit der Option "Installing framework" im Tool
  • dann könnt ihr eure framework-res.apk aus wählen und decompilieren, diese befindet sich dann im selben Ordner (also C:\AndroidApktool) als Ordner mit den decompilten files

Jetzt kommt das selbe, wie bei der ersten Variante:
Das verändern der Höhe eurer NavigationsBar:
  • Ihr navigiert dann in diesem Ordner nach /res/values
  • Dort dann die Datei namens dimens.xml in eurem Text-Editor öffnen
  • die 3 Zeilen suchen, in denen navigation_bar_height, navigation_bar_height_landscape, und navigation_bar_width auftaucht
  • dort die dpi Zahlen eintragen, die ihr gerne hättet
  • VORSICHT: Bei width solltet ihr euch das Verhältnis errechnen. Standardmäßig sind bei height und hight_landscape 48dpi eingetragen. Bei width aber 42. Das bedeutet: wenn ihr eine höhe von 30dpi wollt, muss folgendes Verhältnis eingehalten werden: 48dpi(height) : 42dpi(width) = 30dpi(height neu) : xdpi(width neu)
    Das x müsst ihr euch logischerweise errechnen. Verhältnisrechnung beherrscht hoffentlich jeder (Innenglied*Innenglied=Außenglied*Außenglied) :)
  • Wenn ihr das geschafft habt: Speichern
  • Dann wählt ihr im Funtionsbereich "compiling" den Ordner "framework-res" aus
  • anschließend drückt ihr (logischerweise) auf "compile"
  • Die neu kompilierte framework-res.apk befindet sich dann im Ordner C:\apktool\framework-res\dist
  • WICHTIG: Jetzt kopiert ihr den META-INF Ordner und die AndroidManifest.xml von eurer ursprünglichen framework-res.apk in eure neu kompilierte! Andernfalls landet ihr im Bootloop.

Jetzt noch die fertige framework-res.apk auf euer Nexus 4 kopieren und mit einem Root Explorer nach /system/framework verschieben und sofort rebooten.

Geschafft!



Falls Probleme auftreten sollten, oder euch etwas unklar ist, einfach hier im Thread fragen. Bitte nur im Thread, Privat Nachrichten mit Fragen werden ignoriert!


Das Kleingedruckte:
Für mögliche Schäden (die bei einem halbwegs guten Verstand gar nicht erst entstehen können) ist weder Android-Hilfe.de, noch ich verantwortlich zu machen!
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Nazenber, poeddiee, Nimelklas und 8 andere
Hi,

danke für das Tutorial, ich komm aber nicht weiter ;)

Ich stecke bei dem Schritt fest:
  • Folgendes eingeben: java -jar apktool.jar if framework-res.apk [enter] (...installation eurer framework-res.apk)
  • Folgendes eingeben: java -jar apktool.jar d framework-res.apk [enter]

Wenn ich das auführe, sehe ich zwar den Ordner aber er ist leer.

CMD spuckt beim ersten Befehl folgendes aus:
H:\apktool>java -jar apktool.jar if framework-res.apk
Exception in thread "main" brut.androlib.AndrolibException: Multiple resources:
spec=0x01080291 drawable/ic_ab_back_holo_dark, config=-xhdpi
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:65)
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:58)
at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:196)

at brut.androlib.res.decoder.ARSCDecoder.readConfig(ARSCDecoder.java:165
)
at brut.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.java:130)
at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:10
5)
at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:82)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:48)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:39)
at brut.androlib.res.AndrolibResources.installFramework(AndrolibResource
s.java:384)
at brut.androlib.Androlib.installFramework(Androlib.java:365)
at brut.apktool.Main.cmdInstallFramework(Main.java:193)
at brut.apktool.Main.main(Main.java:69)


Und beim 2. Befehl:
H:\apktool>java -jar apktool.jar d framework-res.apk
I: Loading resource table...
Exception in thread "main" brut.androlib.AndrolibException: Multiple resources:
spec=0x01080291 drawable/ic_ab_back_holo_dark, config=-xhdpi
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:65)
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:58)
at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:196)

at brut.androlib.res.decoder.ARSCDecoder.readConfig(ARSCDecoder.java:165
)
at brut.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.java:130)
at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:10
5)
at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:82)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:48)
at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibRes
ources.java:315)
at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.jav
a:50)
at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.jav
a:43)
at brut.androlib.Androlib.getResTable(Androlib.java:44)
at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:148)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:98)
at brut.apktool.Main.cmdDecode(Main.java:128)
at brut.apktool.Main.main(Main.java:65)

Danke schonmal für Hilfe :)
 
Hm, denke der Fehler ist, dass es auf H:\ liegt. Versuche es mal auf C:\. Die installation der framework-res.apk sollte auf jeden Fall hinhauen. :)
 
Nope :( gleiches Ergebnis.
Hab gerad mal auch an einem Windows 7 PC versucht (mein erster Versuch oben war Win8). Aber gleiches Ergebnis :(
 
Also: Die framework-res.apk befindet sich im Ordner C:\apktool? Alle benötigten files (apktool.jar, aapt.bat, etc) sind im selbigen ordner?
Ansonsten tippe mal statt "java -jar..." folgendes ein: apktool if framework-res.apk
 
Flextrick schrieb:
Also: Die framework-res.apk befindet sich im Ordner C:\apktool? Alle benötigten files (apktool.jar, aapt.bat, etc) sind im selbigen ordner?

Genau ja. die befinden sich im gleichen Ordner.
Wie gesagt, er legt auch den Ordner an, den er anlegen muss, aber der is eben leer.

Wenn ich eintippe kommt:
C:\apktool>apktool if framework-res.apk
Exception in thread "main" brut.androlib.AndrolibException: Multiple resources:
spec=0x01080291 drawable/ic_ab_back_holo_dark, config=-xhdpi
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:65)
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:58)
at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:196)

at brut.androlib.res.decoder.ARSCDecoder.readConfig(ARSCDecoder.java:165
)
at brut.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.java:130)
at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:10
5)
at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:82)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:48)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:39)
at brut.androlib.res.AndrolibResources.installFramework(AndrolibResource
s.java:384)
at brut.androlib.Androlib.installFramework(Androlib.java:365)
at brut.apktool.Main.cmdInstallFramework(Main.java:193)
at brut.apktool.Main.main(Main.java:69)
 
Moment, vielleicht hat das apktool was. Werde mir das dann mal laden und versuchen. Von welcher Android Version stammt denn die framework-res.apk?
 
Hmm, versuche mal es so einzutippen: apktool if "pfad von deiner frame-res.apk". Zb so: apktool if C:\apktool\framework-res.apk
 
Das gleiche :(

h:\apktool>apktool if h:\apktool\framework-res.apk
Exception in thread "main" brut.androlib.AndrolibException: Multiple resources:
spec=0x01080291 drawable/ic_ab_back_holo_dark, config=-xhdpi
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:65)
at brut.androlib.res.data.ResConfig.addResource(ResConfig.java:58)
at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:196)

at brut.androlib.res.decoder.ARSCDecoder.readConfig(ARSCDecoder.java:165
)
at brut.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.java:130)
at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:10
5)
at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:82)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:48)
at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:39)
at brut.androlib.res.AndrolibResources.installFramework(AndrolibResource
s.java:384)
at brut.androlib.Androlib.installFramework(Androlib.java:365)
at brut.apktool.Main.cmdInstallFramework(Main.java:193)
at brut.apktool.Main.main(Main.java:69)
 
Jetzt wirds eng :D Java hast du doch installiert, oder? JDK etc
 
Dann fällt mir nur noch ein anderes apktool ein. Versuche es mal mit einem anderen
 
Läuft :D
Hab die genommen: apktool1.5.2.tar.bz2 - android-apktool - apktool - A tool for reverse engineering Android apk files - Google Project Hosting

Der ursprüngliche Beitrag von 21:30 Uhr wurde um 21:43 Uhr ergänzt:

Ok ich kanns nichtmehr packen -.-

C:\apktool>java -jar apktool.jar b framework-res
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
invalid resource directory name: C:\apktool\framework-res\res/drawable-ldrtl-xhd
pi
invalid resource directory name: C:\apktool\framework-res\res/mipmap-xxhdpi
Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.Androl
ibException: brut.common.BrutException: could not exec command: [aapt, p, --min-
sdk-version, 17, --target-sdk-version, 17, -F, C:\Users\SEBAST~1\AppData\Local\T
emp\APKTOOL7499340556013105761.tmp, -x, -0, arsc, -S, C:\apktool\framework-res\r
es, -M, C:\apktool\framework-res\AndroidManifest.xml]
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:358)
at brut.androlib.Androlib.buildResources(Androlib.java:283)
at brut.androlib.Androlib.build(Androlib.java:206)
at brut.androlib.Androlib.build(Androlib.java:176)
at brut.apktool.Main.cmdBuild(Main.java:228)
at brut.apktool.Main.main(Main.java:79)
Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not
exec command: [aapt, p, --min-sdk-version, 17, --target-sdk-version, 17, -F, C:
\Users\SEBAST~1\AppData\Local\Temp\APKTOOL7499340556013105761.tmp, -x, -0, arsc,
-S, C:\apktool\framework-res\res, -M, C:\apktool\framework-res\AndroidManifest.
xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:357)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)
... 5 more
Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sd
k-version, 17, --target-sdk-version, 17, -F, C:\Users\SEBAST~1\AppData\Local\Tem
p\APKTOOL7499340556013105761.tmp, -x, -0, arsc, -S, C:\apktool\framework-res\res
, -M, C:\apktool\framework-res\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:89)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:355)
... 6 more

C:\apktool>

Was is denn jetzt schon wieder :(
 
Hallo,
hier das versprochene Graphische tool. Sollte funktionieren, konnte es aber leider nicht noch mal weiter testen, da ich gerade Ubuntu neu aufgesetzt habe. Wie dem auch sei, wenn es dann noch immer nicht funktioniert, fehlt dir womöglich irgendeine installierte Datei.
Gruß

Download: apktool_windows.zip
 
  • Danke
Reaktionen: Der_Karlson
Hallo,
wollte euch hier mal mein komplett überarbeitetes graphisches Apktool bieten. Man braucht nur aufs knöpfchen zu drücken.
Ihr kommt zuerst dran, der Community wegen. :)
Hier zu downloaden: AndroidApktool.zip

Aussehen tut das ganze jetzt folgendermaßen: (im Anhang)
 

Anhänge

  • hntzh.png
    hntzh.png
    5,6 KB · Aufrufe: 231
  • Danke
Reaktionen: MarcoG:
1. Post überarbeitet und 2. Option mit meinem AndroidApktool hinzugefügt.
 
Hallo Flextrick,

läuft eigentlich dein AndroidApktool nicht unter Windows7 .

weil wenn ich die AndroidApktool.exe doppel klicke tut sich nichts bei mir.
 
jetzt mit dem Pack geht es. :D

Danke
 

Ähnliche Themen

Maze44
  • Maze44
Antworten
2
Aufrufe
1.926
Maze44
Maze44
K
Antworten
184
Aufrufe
27.521
dino earl
dino earl
der_sascha
Antworten
1
Aufrufe
2.074
der_sascha
der_sascha
Zurück
Oben Unten