Übersicht - Themes: verändern, erstellen, installieren

  • 581 Antworten
  • Letztes Antwortdatum
scheichuwe

scheichuwe

Philosoph
2.718
Hallo.

In diesem Thread werde ich nach und nach versuchen Informationen zusammenzutragen, die sich auf Themes im Allgemeinen, aber auch speziell auf das Galaxy beziehen.
Nichts davon ist neu, alles ist irgendwo schon in diversen Foren zu finden. Ich versuche nur, alles in möglichst übersichtlicher Form zu bündeln.

Die hier vorgeschlagenen Programme und Vorgehensweisen sind natürlich nicht verbindlich, es wird immer andere Wege und Möglichkeiten geben. Aber ich kann ja nur das ordentlich beschreiben, was ich auch selbst mache/nutze ;)

Wer die Anleitungen befolgt (und zwar genau so, wie ich es beschreibe), der sollte anschließend in der Lage sein, grundlegende Änderungen an apk ohne Probleme vorzunehmen. Vieles wird dennoch nur durch learning by doing möglich sein, ich werde aber versuchen möglichst viele Informationen als Grundlage bereitzustellen.

Die mir bekannten Threads/Seiten, auf die ich mich beziehe, werde ich natürlich verlinken, oftmals finden sich dort zusätzliche Informationen, die für einige interessant sein dürften. Außerdem kann ich ja nicht (bzw. möchte ich nicht) alles bis ins kleinste Detail erklären.

Anregungen, Ergänzugen, Hinweise auf Fehler/totalen Schwachsinn -> alles ist herzlich willkommen :)

Auch wenn ich natürlich alles nach bestem Wissen und Gewissen runterschreibe:
Ihr macht alles auf eigene Verantwortung. Der Hinweis von wegen Nandroid mag nervig sein, er wird eine Menge Arbeit ersparen :)


Inhalt:

Programme und Tools

Vorbereitungen - PC und SGS einrichten


Einstieg - Wie komme ich an die apk? Grundlagen: Grafiken ersetzen

Für Fortgeschrittene - apk dekompilieren, .9.png bearbeiten, xml editieren


Wo finde ich was? - Übersicht über am häufigsten genutzte/veränderte Grafiken und xml

update.zip - So bekomme ich apk sicher auf mein SGS

Anpassen von Apps aus dem Market


Viel Spaß.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: domi.arnold, P4RTYH4RTY, Tian1990 und 59 andere
Programme und Tools

Die nachfolgenden Programme/Beschreibungen beziehen sich auf Windows (Vista).
Für Linux und Mac werde ich, soweit ich das kann, Links zu Anleitungen einfügen. Falls irgendwer selbst Linux oder Mac nutzt, ich nehme gerne Programme/Beschreibungen mit auf.

PC:

  • 7zip -> LINK Für Windows, für Linux/Mac gibt es inoffizielle Versionen. Ich kann leider nicht sagen inwieweit die geeignet sind, prinzipiell eigenet sich aber jede ordentliche Packer-Software (außer WinZip :D).
  • Bildbearbeitungsprogramm (Photoshop, Gimp, ...)
  • Java -> LINK
  • Android SDK -> LINK
  • Apk Manager -> LINK für Windows/Linux. Wie es mit Mac-Unterstüzung aussieht weiß ich nicht, alternativ kann man apktool manuell nutzen. Bei Fragen dazu stehe ich gerne zur Verfügung.
  • notepad++ -> LINK
Für Linux/Mac eignet sich vermutlich jeder Texteditor, man sollte nur vermeiden den Windows-Editor zu nutzen.

SGS:

  • Custom-Recovery (beinhaltet in der Regel auch root und busybox) z.B. Clockworkmod-Recovery (CWM)

  • Custom-ROM (deodext)
Man kann auch an Stock-ROMs einfache Änderungen vornehmen, ich gehe im Weiteren aber davon aus, dass das ROM deodext ist.


Vorbereitungen

PC einrichten:

1. Android SDK runterladen und entpacken

Ich habe das Android SDK direkt nach C:\ entpackt (C:\android-sdk-windows).
Um die Nutzung von adb (befindet sich im Ordner ...\android-sdk\platform-tools) einfacher zu gestalten sollte man adb im Path eintragen:

Systemsteuerung -> System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen -> unten bei Systemvariablen "Path" markieren und auf Bearbeiten drücken und am Ende der Zeile Folgendes eingeben
Code:
;C:\android-sdk-windows\platform-tools
OK drücken (mehrmals), fertig.


2. Java installieren

Java runterladen und installieren. Bei mir ist es standardmäßig unter C:\Program Files\Java installiert worden.
Hier müssen wir sogar Java bei Path hinzufügen, sonst funktionieren einige Tools nicht:

Systemsteuerung -> System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen -> unten bei Systemvariablen "Path" markieren und auf Bearbeiten drücken und am Ende der Zeile Folgendes eingeben
Code:
;C:\Program Files\Java\jre6\bin
-> siehe auch hier


3. 7zip installieren

Um das Öffnen von apk zu erleichtern sollte man 7zip als Standardprogramm einrichten:

apk öffnen -> Programm aus einer Liste auswählen -> auf Durchsuchen... drücken und 7zFM.exe auswählen


4. Apk Manager runterladen und in ein Verzeichnis eurer Wahl entpacken


SGS vorbereiten:

USB-Debugging aktivieren:

Einstellungen -> Anwendungen -> Entwicklung -> USB-Debugging



zurück zur Übersicht

.​
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Pseudofreak, 149217, Multisaft7 und 11 andere
Einstieg - Wie komme ich an die apk? Grundlagen: Grafiken ersetzen

Bevor ihr irgendwas ausprobiert -> NANDROID ist Pflicht!

Wie komme ich an die apk?

Hier gibt es viele Möglichkeiten:

1. Man nimmt die apk direkt aus der zip des Custom-ROM

2. Mit dem Root Explorer (benötigt root und busybox)

3. Über adb
Kommandozeile öffnen (Start -> Ausführen -> cmd eingeben und Enter drücken) und dann
Code:
adb pull /system/framework/framework-res.apk C:\Users\XYZ\Desktop\Test\framework-res.apk
eingeben. So habt ihr die framework-res.apk in den Ordner Test auf eurem Desktop kopiert. Die Pfade können beliebig angepasst werden.
Ich könnt euch auch gerne dieses bzw. dieses durchlesen.


Grundlagen: Grafiken ersetzen (gilt nur für apk, die sich in /system/app oder system/framework befinden)

Zuerst mal ein kurzer Überblick was sich alles in so einer apk befindet:
Man öffnet die apk (ich werde das am Beispiel framework-res.apk machen) einfach per Doppelklick.
Die geöffnete Datei sieht dann so aus

geöffnete_apk.jpg

Im Ordner META-INF befindet sich die Signatur der apk (nicht verändern!), im Ordner res befinden sich die Grafiken und xml. Da müssen wir hin ;)
Das sieht dann so aus

geöffnete_apk_res.jpg


anim - Animationen für bestimmte Aktionen, wie z.B für das Öffnen/Schließen von Anwendungen, Einblenden von pop-ups usw. Diese xml liegen in Binärform vor und lassen sich nur in dekompilierter Form lesen (oder man nutzt einen Hexeditor, viel Spaß :D). Das gilt übrigens für alle xml, die man hier findet.

color - Hier sind Textfarben per xml definiert.

drawable - Grafiken, die nicht über ein Bild (png) dargestellt werden, sondern per xml definiert sind.

drawable-hdpi (und Abwandlungen) - Hier befinden sich die Bilddateien (hauptsächlich png). Das ist der Ordner, in dem man sich am häufigsten aufhält :). Im Ordner drawable-land-hdpi befinden sich Grafiken, die nur im Querformat verwendet werden. Bei anderen apk kann es noch drawable-mdpi (oder -ldpi) geben, die sind für kleinere Bildschrimauflösungen. Hier muss man sich einfach mal durcharbeiten...

layout - Hier befinden sich xml, die das Layout festlegen.
Am Beispiel keyguard_screen_tab_unlock.xml (Layout für den AOSP-Lockscreen)
Wo steht der Text, welche Schriftfarbe, werden Grafiken benutzt?

raw und xml
Keine Ahnung, noch nie genutzt...


Und jetzt geht's los:)

Beispiel:
Ich habe eine framework-res.apk von einem bereits bestehenden Theme und möchte Teile davon in meiner aktuellen Firmware nutzen. Diese framework-res.apk kann ich ganz normal entpacken (damit ich die Grafiken besser sehen kann).
Rechtsklick auf die Datei -> 7zip -> entpacken nach ...
Den entpackten Ordner öffnen und nach res/drawable-hdpi wechseln. Hier sieht man jetzt hunderte png :scared:
In dem Theme gibt's tolle Symbole für die Statusleite, die findet man, unter anderem, unter stat_notify... und stat_sys...

In der bereits mit 7zip geöffneten (und nicht entpackten) Original-framework-res.apk öffnet man jetzt ebenfalls den Ordner res/drawable-hdpi und sucht auch hier die entsprechenden png.
Wenn der Name der Dateien übereinstimmt kann man einfach die pngs aus dem entpackten Ordner in die geöffnete apk per drag&drop reinkopieren.

kopieren.jpg

Die apk schließen, fertig.

Jetzt muss man die nur noch auf das Galaxy kriegen, dazu später mehr.


zurück zur Übersicht

.​
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Pseudofreak, Hexer, nobody573 und 8 andere
Für Fortgeschrittene - apk dekompilieren, .9.png bearbeiten, xml editieren

Bevor ihr irgendwas ausprobiert -> NANDROID ist Pflicht!


Jetzt geht's ans Eingemachte :)
Irgendwann kommt man an einen Punkt, wo man mit bereits vorhandenen pngs aus anderen Themes nicht mehr zufrieden ist. Farbe muss her oder weg, je nachdem...
Bildbearbeitungsprogramm geöffnet, png rein, farblich anpassen, womöglich noch die Größe ändern, zurück in die apk, fertig.
Bei normale pngs klappt das in der Tat so, wenn man sich aber z.B. den Ordner framework-res.apk/res/drawable-hdpi anschaut und da insbesondere die Dateiendungen, dann sollte einem auffallen, dass es zum einen "normale" pngs gibt, zum anderen .9.pngs.
Und jetzt kommt viel Theorie, aber da müsst ihr durch :)
Später werdet ihr merken, dass ihr das gar nicht braucht, ich will's aber komplett haben...

.9.png sind spezielle png, die sich verschiedenen Auflösungen anpassen können (und dabei immer noch gut aussehen;)).
Beispiel:

popup_full_dark.9.png

Wenn man lange auf die Home-Taste drückt und die zuletzt verwendeten Apps aufruft, dann sieht man diese png als Hintergrund. Und die sieht sowohl in der normalen Ausrichtung, als auch im Querformat gut aus.
Und diese .9.png können nicht so ohne weiteres verändert werden!
Es gibt Ausnahmen, da gehe ich aber nicht weiter drauf ein.
9.png können nicht so ohne weiteres verändert werden! :)

Um die .9.png bearbeiten zu können, muss die entsprechende apk dekompiliert werden.
Diese 9.png sehen eigentlich so aus
popup_full_dark.9 deko.png
An jeder Seite beindet sich ein 1-Pixel breiter Rand, der ist entweder transparent oder schwarz. Und über diesen Rand kann man festlegen wie sich die png bei verschiedenen Auflösungen verhalten soll.
Beispiel:
draw9Bild.png
Auf diesem Bild (draw9patch ist übrigens Teil des SDK [im Ordner "tools"]) sieht man wie sich diese .9.png verhält:
Die Ränder rechts und unten markieren den Bereich, in dem Schrift stehen darf. Diese Balken sollte immer die komplette Breite/Höhe einnehmen.
Links und oben markieren den Bereich, der sich verändern kann. Und zwar ist das der Bereich wo sich die grünen Balken treffen (hier lila). Vielleicht erkennt man das an diesem Beispiel etwas besser
Beispiel.png

Da muss man sich mal mit beschäftigen, wenn man will.
Wie ich oben schon erwähnt habe braucht man das in der Regel gar nicht.
Will man nur bereits vorhanden Bilder farblich ändern, dann können die vorhandene Markierungen ja einfach bestehen bleiben :)

Apk Manager

Kommen wir also zum eigentlichen Thema: apk dekompilieren

Dazu öffnet man der Ordner apk_manager_4.9.
Der sieht geöffnet so aus
apkmanagerordner.png

Bevor es letzt losgeht, noch ein wichtiger Hinweis:

Wenn man die framework-res.apk von Froyo dekompilieren will, dann muss man erst noch apktool.jar im Ordner others durch eine ältere Version ersetzen.
->Link
Die Datei in apktool.jar umbenennen und nach others kopieren.
Wieso, weshalb, warum sprengt hier den Rahmen. Macht es einfach :)
Ab Gingerbread kann man die enthaltene Version 1.3.2 nutzen.

Die framework-res.apk kommt dann in den Ordner place-apk-here-for-modding, anschließend die Datei Script.bat starten. Das Menü sieht dann so aus:
apkmanager.png
Mit 22 das Projekt auswählen (framework-res.apk) und dann mit 9 dekompilieren. Die dekompilierten Dateien findet man im Ordner projects. Da geht's jetzt hin. Das Menü von Apk Manager kann geöffnet bleiben.
Die Struktur ist wie in der apk auch, wir gehen nach framework-res.apk/res/.
Wenn ihr apktool 1.3.1 nutzt, dann wird an die drawable-Ordner ein -v4 angehängt. Bitte dieses -v4 löschen.
Und hier kann man dann nach Lust und Laune Sachen ändern (xml bearbeiten, .9.png bearbeiten usw.)
Wichtig: Merken welche Dateien ihr bearbeitet habt. Am besten aufschreiben.
Auch Wichtig: Wenn ihr .9.png bearbeitet, der 1-Pixel-Rand MUSS schwarz bzw. vollständig transparent bleiben. Sonst gibt's Fehler beim Kompilieren.

Die xml sehen dekompiliert übrigens so aus:
keyguard_screen_tab_unlock.xml (Layout für den AOSP-Lockscreen)
Code:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout android:gravity="center_horizontal" android:id="@id/root" android:background="#70000000" android:layout_width="fill_parent" android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tabunlock="http://schemas.android.com/apk/res/com.android.tabunlock">
    <TextView android:textAppearance="?textAppearanceMedium" android:ellipsize="marquee" android:gravity="bottom|right|center" android:id="@id/carrier" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10.0dip" android:layout_marginRight="8.0dip" android:singleLine="true" android:layout_alignParentTop="true" android:layout_alignParentRight="true" />
    <TextView android:textAppearance="?textAppearanceSmall" android:textColor="@color/white" android:id="@id/emergencyCallText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="0.0dip" android:layout_marginRight="8.0dip" android:text="@string/emergency_calls_only" android:layout_below="@id/carrier" android:layout_alignParentRight="true" />
    <com.android.internal.widget.DigitalClock android:id="@id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20.0dip" android:layout_marginTop="52.0dip" android:layout_marginBottom="8.0dip" android:layout_below="@id/carrier">
        <TextView android:textAppearance="?textAppearanceMedium" android:textSize="72.0sp" android:ellipsize="none" android:id="@id/timeDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="10.0dip" android:singleLine="true" android:shadowColor="#c0000000" android:shadowDx="0.0" android:shadowDy="0.0" android:shadowRadius="3.0" />
        <TextView android:textAppearance="?textAppearanceMedium" android:textSize="22.0sp" android:ellipsize="none" android:id="@id/am_pm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8.0dip" android:singleLine="true" android:shadowColor="#c0000000" android:shadowDx="0.0" android:shadowDy="0.0" android:shadowRadius="3.0" android:layout_toRightOf="@id/timeDisplay" android:layout_alignBaseline="@id/timeDisplay" />
    </com.android.internal.widget.DigitalClock>
    <TextView android:textAppearance="?textAppearanceMedium" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="24.0dip" android:layout_below="@id/time" />
    <TextView android:textAppearance="?textAppearanceMedium" android:id="@id/status1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="24.0dip" android:layout_marginTop="4.0dip" android:drawablePadding="4.0dip" android:layout_below="@id/date" />
    <TextView android:textAppearance="?textAppearanceMedium" android:id="@id/status2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="24.0dip" android:layout_marginTop="4.0dip" android:drawablePadding="4.0dip" android:layout_below="@id/status1" />
    <TextView android:textAppearance="?textAppearanceMedium" android:id="@id/screenLocked" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="24.0dip" android:layout_marginTop="12.0dip" android:drawablePadding="4.0dip" android:layout_below="@id/status2" />
    <com.android.internal.widget.SlidingTab android:orientation="horizontal" android:id="@id/tab_selector" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="80.0dip" android:layout_alignParentBottom="true" />
    <Button android:id="@id/emergencyCallButton" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="80.0dip" android:drawableLeft="@drawable/ic_emergency" android:drawablePadding="8.0dip" android:layout_alignParentBottom="true" android:layout_centerInParent="true" style="\@style/Widget.Button.Transparent" />
</RelativeLayout>
Wo man was ändern kann folgt im nächsten Teil.

Nachdem man also alle Sachen geändert hat, holen wir wieder das Menü vom Apk Manager hervor und wählen 11. Damit wird die apk wieder kompiliert. Das dauert seine Zeit, wenn man keinen Mist gebaut hat kommt die Frage
Is this a system apk
Man antwortet mit "y".
Bei der nächsten Frage antwortet man ebenfalls mit "y".
Dann läuft eine Menge Text durch das Fenster, am Ende steht da dieser Text
In the apk manager folder u'll find
a keep folder. Within it, delete
everything you have modified and leave
files that you haven't. If you have modified
any xml, then delete resources.arsc from that
folder as well. Once done then press enter
on this script.
Drücken Sie eine beliebige Taste . . .
Wichtig: Noch nichts drücken!
Erstmal das machen was da steht.
Im Ordner apk_manager_4.9 gibt es jetzt einen neuen Unterordner keep.
Da geht's hin.
Wenn man eine xml verändert hat (hier kommt jetzt unsere Liste aller geänderten Dinge zum Einsatz), dann muss die resources.arsc gelöscht werden. Außerdem löscht man in den Unterordnern ALLE Dateien, die man auf der Liste stehen hat. Wieso?
Im Ordner keep ist die entpackte Original-apk. Man löscht alle Dateien, die man geändert hat, der Rest wird in die neu kompilierte apk zurückkopiert. Das soll die Fehlerquote verringern. Ich hoffe, dass das so weit verständlich ist. Jedenfalls, macht es einfach so :)

Anschließend findet man im Ordner place-apk-here-for-modding eine unsignedframework-res.apk. Die heißt nur so. Die Signatur ist von der Original-apk übernommen worden.
Man muss die jetzt nur noch umbenennen und...
Fertig.

Nochmal der Hinweis:
Das funktioniert nur für apk aus system/app oder system/framework. Wie man runtergeladene apk ändern kann werde ich später noch erklären.

Tipp:
Einmal die framework-res.apk dekompilieren und ohne Änderungen wieder kompileren. Nur um zu testen, ob alles läuft ;)

Und noch ein Hinweis:
Mann kann das Projekt beliebig oft bearbeiten (also die Dateien unter projects\framework-res.apk\...).
Man muss nur jedesmal beim Komplieren (nach den 2 Fragen die mit "y" beantwortet werden) ALLE bisher veränderten Dateien löschen. Daher ist eine Liste, was geändert wurde wirklich zu empfehlen.
Grundregel ist nämlich: Immer nur eine nicht veränderte apk dekompilieren. Bei bereits modifizierten apk ist die Wahrscheinlichkeit groß, dass irgendeine .9.png nicht sauber bearbeitet wurde. Und das gibt Probleme...



zurück zur Übersicht

.​
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: wii360, Pseudofreak, Hexer und 14 andere
Wo finde ich was? - Übersicht über am häufigsten genutzte/veränderte Grafiken und xml

Bevor ihr irgendwas ausprobiert -> NANDROID ist Pflicht!

Es gibt leider seit 2.3.2 kleine Unterschiede, wo man welche Datei findet. Die Auflistungen hier

2.2 -> Link

2.3 -> Link

gelten im Großen und Ganzen auch für uns, bei einigen Grafiken müssen wir noch die twframework-res.apk anpassen.

Wie schon mal erwähnt, nichts von dem was ich euch hier präsentiere ist neu. Die eigentlich Arbeit haben andere schon vor mir gemacht, ich trage nur Informationen aus verschiedene Quellen zusammen ;)

Im weiteren Verlauf gehe ich davon aus, dass die apk dekompiliert wurde, da hier .9.png und xml geändert werden sollen.

Die wichtigsten Grafiken/Icons zeige ich am besten anhand einer (schlechten ;)) Grafik. Rote Pfeile markieren Hintergrundgrafiken, grüne Pfeile markieren Icons und Textfarben.
Zu den Textfarben:
Innerhalb einer xml werden die Farben mit folgendem Eintrag festgelegt
Code:
android:textColor=
Der Wert kann entweder so
1.
Code:
android:textColor="@color/tw_color001"
oder so
2.
Code:
android:textColor="#ffffffff"
dargestellt werden.

Bei 1. ist die Farbe in ...\res\values\colors.xml bereits definert (über einen RGBA-Wert als Hexadezimalzahl), bei 2. wird die Farbe direkt über einen beliebigen RGBA-Wert bestimmt.
Hier gibt's eine Seite auf der man sich den Hexadezimalcode berechnen lassen kann -> Link.
Dieser 6-stellige Wert wird auf 8 Stellen erweitert. Diese 2 zusätzlichen Stellen (die am Anfang stehen) geben die Transparenz vor. ff ist dabei keine Transparenz, 00 vollständige Transparenz. Werte, die zwischen ff und 00 liegen sollen kann man sich hier ausrechnen lassen -> Link
Beispiele:
Aus RGB 255, 255, 0 (gelb) wird ffff00. Die Farbe soll mit 100% Deckkraft dargestellt werden, also wird daraus ffffff00.

Ich hoffe, dass das soweit verständlich ist. :)

Weiter geht's.
Bis einschließlich 2.2.1

Markierungen_2.2_done.png

1 - statusbar_background.9.png (in framework-res.apk\res\drawable-hdpi)
2 - status_bar_header_background_01.png (in twframework-res.apk\res\drawable-hdpi)
3 - quick_panel_list_bg_01.9.png (in twframework-res.apk\res\drawable-hdpi)
4 - status_bar_item_app_background_normal.9.png und status_bar_item_background_normal.9.png (in framework-res.apk\res\drawable-hdpi)
5 - status_bar_background.9.png (in twframework-res.apk\res\drawable-hdpi)
6 - status_bar_close_on.png (in twframework-res.apk\res\drawable-hdpi)


1 - quick_panel_icon_...png (in twframework-res.apk\res\drawable-hdpi)
2 - diese Zeilen in twframework-res.apk\res\layout\status_bar_expanded.xml suchen
Code:
<TextView android:textSize="14.0dip" android:typeface="sans" android:textStyle="normal" android:textColor="@color/tw_color001" android:gravity="center" android:id="@id/quickpanel_wifi_btn" android:background="@null" android:paddingTop="12.0dip" android:paddingBottom="9.599976dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/indicator_wifi" android:drawableTop="@drawable/quick_panel_icon_wifi_off" android:layout_weight="1.0" />
<TextView android:textSize="14.0dip" android:typeface="sans" android:textStyle="normal" android:textColor="@color/tw_color001" android:gravity="center" android:id="@id/quickpanel_bt_btn" android:background="@null" android:paddingTop="12.0dip" android:paddingBottom="9.599976dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/indicator_bt" android:drawableTop="@drawable/quick_panel_icon_bluetooth_off" android:layout_weight="1.0" />
<TextView android:textSize="14.0dip" android:typeface="sans" android:textStyle="normal" android:textColor="@color/tw_color001" android:gravity="center" android:id="@id/quickpanel_gps_btn" android:background="@null" android:paddingTop="12.0dip" android:paddingBottom="9.599976dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/indicator_gps" android:drawableTop="@drawable/quick_panel_icon_gps_off" android:layout_weight="1.0" />
<TextView android:textSize="14.0dip" android:typeface="sans" android:textStyle="normal" android:textColor="@color/tw_color001" android:gravity="center" android:id="@id/quickpanel_sound_btn" android:background="@null" android:paddingTop="12.0dip" android:paddingBottom="9.599976dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/indicator_sound" android:drawableTop="@drawable/quick_panel_icon_silent_off" android:layout_weight="1.0" android:soundEffectsEnabled="false" />
<TextView android:textSize="14.0dip" android:typeface="sans" android:textStyle="normal" android:textColor="@color/tw_color001" android:gravity="center" android:id="@id/quickpanel_orientation_btn" android:background="@null" android:paddingTop="12.0dip" android:paddingBottom="1.3299866dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/indicator_orientation" android:drawableTop="@drawable/quick_panel_icon_orientation_off" android:layout_weight="1.0" />
Hier wird die Farbe jetzt über einen vordefinierten Farbwert festgelegt, man kann allerdings auch einfach einen beliebigen Farbwert eintragen.
Aus
Code:
android:textColor="@color/tw_color001"
würde dann z.B.
Code:
android:textColor="#ff33ff00"
3 - diese Zeilen in twframework-res.apk\res\layout\status_bar_expanded.xml suchen
Code:
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/plmnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:textAppearance="?android:textAppearanceMedium" android:textColor="@color/tw_color001" android:layout_gravity="center_vertical" android:id="@id/spnLabel" android:paddingLeft="4.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" />
4 - diese Zeilen in twframework-res.apk\res\layout\status_bar_expanded.xml suchen
Code:
<TextView android:textSize="18.0sp" android:textStyle="normal" android:textColor="#ffffffff" android:id="@id/noNotificationsTitle" android:background="@drawable/quick_panel_list_bg_01" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_no_notifications_title" />
für "Keine Benachrichtigungen"
Code:
<TextView android:textSize="18.0sp" android:textStyle="normal" android:textColor="#ffffffff" android:id="@id/ongoingTitle" android:background="@drawable/quick_panel_list_bg_01" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_ongoing_events_title" />
für "Laufend"
Code:
<TextView android:textSize="18.0sp" android:textStyle="normal" android:textColor="#ffffffff" android:id="@id/latestTitle" android:background="@drawable/quick_panel_list_bg_01" android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/status_bar_latest_events_title" />
für "Benachrichtigungen"

5 - diese Zeilen in framework-res.apk\res\layout\status_bar_latest_event_content.xml suchen
Code:
<TextView android:textSize="18.0sp" android:textStyle="bold" android:textColor="#ff3f3f3f" android:ellipsize="marquee" android:id="@id/title" android:paddingLeft="4.0dip" android:fadingEdge="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1.0" />
für die Überschrift
Code:
<TextView android:textSize="14.0sp" android:textColor="#ff3f3f3f" android:ellipsize="marquee" android:id="@id/text" android:paddingLeft="4.0dip" android:fadingEdge="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1.0" />
für den Text
Code:
<android.widget.DateTimeView android:textSize="14.0sp" android:textColor="#ff3f3f3f" android:id="@id/time" android:paddingRight="5.0dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:singleLine="true" />
für Zeit/Datum (falls vorhanden)


Ab 2.3.2

Neu in Gingerbread ist die SystemUI.apk in /system/app. Die ist generell Teil von Android und legt im Großen und Ganzen das fest, was vorher über die twframework-res.apk dargestellt wurde. Mit dem Ergebnis, dass die twframework-res.apk zwar noch vorhanden ist, aber kaum noch genutzt wird.
Auch findet man in der SystemUI.apk die Icons für Empfangsstärke der Mobilfunkanzeigen (+Wifi). Am besten guckt man sich die apk einfach mal an...

Markierungen_2.3_done.png

1 - statusbar_background.9.png (in SystemUI.apk\res\drawable-hdpi)
2 - quickpanel_quick_settings_background.png (in SystemUI.apk\res\drawable-hdpi)
3 - title_bar_portrait.9.png (in SystemUI.apk\res\drawable-hdpi)
4 - quickpanel_title_background.9.png (in SystemUI.apk\res\drawable-hdpi)
5 - status_bar_item_app_background_normal.png und status_bar_item_background_normal.png (in framework-res.apk\res\drawable-hdpi)
6 - Etwas schwieriger, hier muss man die status_bar_tracking.xml in SystemUI.apk\res\layout ändern
Code:
<View android:background="#eb000000" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1.0" />
In diesem Beispiel habe ich den Wert schon angepasst
android:background="#eb000000"
Grundfarbe schwarz (000000) mit 92% Deckkraft (eb)

7 - status_bar_close_on.9.png (in SystemUI.apk\res\drawable-hdpi)

1 - quickpanel_icon_...png (in SystemUI.apk\res\drawable-hdpi)
2 - diese Zeilen in SystemUI.apk\res\layout\quickpanel_quick_settings.xml suchen
Code:
<com.android.systemui.statusbar.quickpanel.WifiSettingButton android:textSize="12.0dip" android:textStyle="normal" android:textColor="#ffffffff" android:gravity="center_horizontal" android:id="@id/quickpanel_wifi_btn_text" android:paddingTop="54.669983dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/quickpanel_wifi_text" android:shadowDx="1.0" android:shadowDy="1.0" />
hier am Beispiel Wifi, analog für Bluetooth, GPS, Sound und Ausrichtung.
3 - diese Zeile in SystemUI.apk\res\layout\status_bar_expanded.xml suchen
Code:
<com.android.systemui.statusbar.CarrierLabel android:textSize="18.659973dip" android:textColor="#ffffffff" android:layout_gravity="center_vertical" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_marginLeft="5.0dip" android:layout_marginTop="1.0dip" android:layout_weight="1.0" />
4 + 6 - diese Zeilen in SystemUI.apk\res\layout\status_bar_expanded.xml suchen
Code:
<TextView android:textSize="14.669983dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/noNotificationsTitle" android:background="@drawable/quickpanel_title_background" android:paddingLeft="13.329987dip" android:layout_width="fill_parent" android:layout_height="26.669983dip" android:text="@string/status_bar_no_notifications_title" />
für "Keine Benachrichtigungen
Code:
<TextView android:textSize="14.669983dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/ongoingTitle" android:background="@drawable/quickpanel_title_background" android:paddingLeft="13.329987dip" android:layout_width="fill_parent" android:layout_height="26.669983dip" android:text="@string/status_bar_ongoing_events_title" />
für "Aktuell"
Code:
<TextView android:textSize="14.669983dip" android:textColor="#ffffffff" android:gravity="center_vertical" android:id="@id/latestTitle" android:background="@drawable/quickpanel_title_background" android:paddingLeft="13.329987dip" android:layout_width="fill_parent" android:layout_height="26.669983dip" android:text="@string/status_bar_latest_events_title" />
für "Benachrichtigungen"

5 - diese Zeilen in framework-res.apk\res\layout\status_bar_latest_event_content.xml suchen
Code:
<TextView android:textSize="16.0dip" android:textStyle="bold" android:textColor="#ffffffff" android:ellipsize="marquee" android:id="@id/title" android:paddingLeft="9.329987dip" android:fadingEdge="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleLine="true" android:layout_weight="1.0" />
für die Überschrift
Code:
<TextView android:textSize="14.0dip" android:textColor="#ffb6cad6" android:ellipsize="marquee" android:id="@id/text" android:paddingLeft="34.669983dip" android:fadingEdge="horizontal" android:layout_width="0.0dip" android:layout_height="fill_parent" android:singleLine="true" android:layout_weight="1.0" />
für den Text
Code:
<android.widget.DateTimeView android:textSize="14.0dip" android:textColor="#ffb6cad6" android:gravity="right" android:id="@id/time" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />
für Zeit/Datum (falls vorhanden)



Noch ein paar Links:
Theming Guide for changing system text settings. - Droid Forum - Verizon Droid & the Motorola Droid Forum
xda-developers - View Single Post - [THEMES][UPDATE 14.02.] VA GREEN v11 - multi dpi apps
[REF] Hide Status Bar Icons - xda-developers


zurück zur Übersicht

.​
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: fromfuture, Pseudofreak, nobody573 und 11 andere
update.zip - So bekomme ich apk sicher auf mein SGS

Bevor ihr irgendwas ausprobiert -> NANDROID ist Pflicht!

Am einfachsten und auch am sichersten installiert man das Theme über eine update.zip im Recovery-Modus.
Diese Beschreibung hier bezieht sich auf CWM 3.0.0.5 bzw CF-Root 2.7, sollte theoretisch aber auch für alle anderen (älteren) gelten.
Im Anhang befindet sich eine leere update.zip, die könnt ihr gerne als Vorlage nutzen.

Wenn man die update.zip öffnet, dann sieht das so aus (Theme)

update.jpg

oder so (ROM)

ROM.jpg


Im Ordner META-INF befinden sich neben der Signatur (die allerdings gar nicht gebraucht wird und deshalb auch in meiner Vorlage nicht enthalten ist) noch update-binary und updater-script. Mehr Informationen dazu -> Link

Im Ordner system befindet sich ein Unterordner framework, darin die framework-res.apk. Die Struktur ist also die gleiche wie auf dem Galaxy: /system/framework/framework-res.apk.
Möchte man zusätzlich noch die twframework-res.apk installieren, dann kopiert man die einfach in den Unterordner framework.
Möchte man eine apk nach /system/app installieren, dann erstellt man im Ordner system einen neuen Unterordner: app.
Am besten sieht man das am Beispiel hier (Custom-ROM)
ROM_system.jpg
Wenn man alle apk (oder jar) Dateien in die update.zip kopiert hat (auch hier übrigens wieder einfach per drag&drop in die geöffnete zip), dann geht's zurück in den Ordner META-INF, zum updater-script. Hier wird festgelegt, was wohin installiert wird. Die update-binary bleibt unverändert, wichtig ist nur das die drin ist.


updater-script:

Gleich zu Beginn mal ein Link -> Link, da wird's allerdings erst ab (ungefähr) Seite 10 interessant. Warum? Die ersten Seiten beschreiben noch das alte Format (Amend, da gab's auch nur ein update-script und nicht wie jetzt update-binary und updater-script), das wird ab CWM > 3.0 allerdings nicht mehr unterstützt. Das neue Format heißt "Edify".

Und das sieht dann so aus:

Öffnet mal das updater-script mit einem ordentlichen Text-Editor (z.B. notepad++). Nicht den Windows-Editor oder WordPad oder so was nutzen, die machen da irgendwie Probleme. Bzw. Öffnen geht schon, aber bearbeiten sollte man das updater-script nicht damit...
Jedenfalls sieht das dann so aus (updater-script aus der zip im Anhang)
Code:
ui_print("- Mounting /system");
run_program("/sbin/mount", "/system");
show_progress(0.500000, 40);
ui_print("- Extracting new file");
package_extract_dir("system", "/system");
show_progress(0.200000, 10);
ui_print("- Unmounting /system");
run_program("/sbin/unmount", "/system");
ui_print("- Rebooting ...");
run_program("/sbin/reboot");
oder so (updater-script aus Doc's-ROM)

Code:
ui_print(" ");
ui_print(" ");
ui_print("Welcome to a RomKitchen relase");
ui_print(" ");

ui_print("Formatting system");
ui_print(" ");

delete_recursive("/system");
delete_recursive("/cache");
delete_recursive("/data");
delete_recursive("/dbdata");
show_progress(0.100000, 60);
ui_print("Installing system files");
ui_print(" ");

mount("MTD", "system", "/system");
package_extract_dir("system", "/system");
symlink("dumpstate", "/system/bin/dumpcrash");
delete_recursive("/data/dalvik-cache");
delete_recursive("/dbdata/data/bases/com.android.providers.media");
delete_recursive("/dbdata/data/bases/com.cooliris.media");
show_progress(0.100000, 10);

symlink("toolbox", "/system/bin/cat");
symlink("toolbox", "/system/bin/chmod");
symlink("toolbox", "/system/bin/chown");
symlink("toolbox", "/system/bin/cmp");
symlink("toolbox", "/system/bin/date");
symlink("toolbox", "/system/bin/dd");
symlink("toolbox", "/system/bin/df");
symlink("toolbox", "/system/bin/dmesg");
symlink("toolbox", "/system/bin/getevent");
symlink("toolbox", "/system/bin/getprop");
symlink("toolbox", "/system/bin/hd");
symlink("toolbox", "/system/bin/id");
symlink("toolbox", "/system/bin/ifconfig");
symlink("toolbox", "/system/bin/iftop");
symlink("toolbox", "/system/bin/insmod");
symlink("toolbox", "/system/bin/ioctl");
symlink("toolbox", "/system/bin/ionice");
symlink("toolbox", "/system/bin/kill");
symlink("toolbox", "/system/bin/ln");
symlink("toolbox", "/system/bin/log");
symlink("toolbox", "/system/bin/ls");
symlink("toolbox", "/system/bin/lsmod");
symlink("toolbox", "/system/bin/mkdir");
symlink("toolbox", "/system/bin/mount");
symlink("toolbox", "/system/bin/mv");
symlink("toolbox", "/system/bin/nandread");
symlink("toolbox", "/system/bin/netstat");
symlink("toolbox", "/system/bin/newfs_msdos");
symlink("toolbox", "/system/bin/notify");
symlink("toolbox", "/system/bin/printenv");
symlink("toolbox", "/system/bin/ps");
symlink("toolbox", "/system/bin/reboot");
symlink("toolbox", "/system/bin/renice");
symlink("toolbox", "/system/bin/rm");
symlink("toolbox", "/system/bin/rmdir");
symlink("toolbox", "/system/bin/rmmod");
symlink("toolbox", "/system/bin/route");
symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/sleep");
symlink("toolbox", "/system/bin/smd");
symlink("toolbox", "/system/bin/start");
symlink("toolbox", "/system/bin/stop");
symlink("toolbox", "/system/bin/sync");
symlink("toolbox", "/system/bin/top");
symlink("toolbox", "/system/bin/umount");
symlink("toolbox", "/system/bin/vmstat");
symlink("toolbox", "/system/bin/watchprops");
symlink("toolbox", "/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 0, 0777, 0777, "/system/etc/init.d");
set_perm_recursive(0, 2000, 0755, 0755, system/bin);
set_perm_recursive(0, 0, 0755, 0755, system/etc);
set_perm(0, 3003, 02755, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm_recursive(1002, 1002, 0755, 0440, system/etc/bluetooth);
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm_recursive(0, 0, 0777, 0777, system/etc/init.d);
set_perm(0, 0, 04755, "/system/xbin/su");
set_perm(0, 0, 04755, "/system/xbin/busybox");
symlink("/system/xbin/su", "/system/bin/su");
set_perm(0, 0, 04755, "/system/xbin/busybox");
set_perm(0, 0, 0777, "/system/xbin/busybox");
run_program("/system/xbin/busybox", "--install", "-s", "/system/xbin");
set_perm(0, 0, 0777, "script/wipe");
set_perm(0, 0, 0755, "/system/vendor/bin/gpsd");
set_perm(0, 0, 0755, "/system/vendor/bin/launch_gps.sh");
run_program("script/wipe");
mount("MTD", "userdata", "/data");
package_extract_dir("data", "/data");
set_perm(1000, 1010, 0771, "/data/app");
show_progress(1.000000, 0);
show_progress(0.100000, 60);

package_extract_dir("updates", "/tmp");
show_progress(0.100000, 10);
set_perm(0, 0, 0755, "/tmp/redbend_ua");
set_perm(0, 0, 0777, "/tmp/redbend_ua");

ui_print("Flashing modem");
ui_print(" ");
run_program("/tmp/redbend_ua", "restore", "/tmp/modem.bin", "/dev/block/bml12");
set_perm(0, 0, 0777, "/tmp/redbend_ua");

run_program("/tmp/redbend_ua", "restore", "/tmp/zImage", "/dev/block/bml7");
show_progress(1.000000, 0);
unmount("/data");
unmount("/system");
ui_print("Thanks for using a Kitchen Rom :)");
.


Und jetzt zum Inhalt :)

Seit der Version 2.7 von CF-Root werden beim installieren alle Partitionen automatisch gemountet. Bei älteren Versionen ist das manchmal der Fall, mit diesen Befehlen ist man aber auf der sicheren Seite. Doppelt hält besser...

Code:
run_program("/sbin/mount", "/system");
run_program("/sbin/mount", "/dev/block/stl10", "/dbdata");
run_program("/sbin/mount", "/dev/block/stl11", "/cache");
run_program("/sbin/mount", "/dev/block/mmcblk0p2", "/data");
Link

In vielen updater-script steht dieser Befehl (übrigens auch in meinen alten;))
Code:
mount("MTD", "system", "/system");
der bringt nur leider gar nichts. Das SGS ist da irgendwie speziell.
Falls also weder die Partitionen automatisch gemountet werden noch die richtigen Befehle im updater-script stehen (das merkt man spätestens dann, wenn nichts installiert wurde), dann kann man das auch manuell im Menü von CWM machen (unter mounts and storage).


Mit diesem Befehl
Code:
package_extract_dir("system", "/system");
werden alle Inhalte aus dem Ordner system aus der zip nach /system kopiert/installiert. Daher ist es wichtig, dass die Ordnerstruktur in der zip derjenigen auf dem SGS entspricht.

Noch kurz was zu
ui_print - schreibt Text während der Installation
show_progress - steuert den Fortschrittsbalken

Mit den hier beschriebenen Befehlen seid ihr jedenfalls in der Lage ein Theme zu installieren, für alles weitere bitte den oben eingefügten Link anklicken und selbst schlau machen. Das wird sonst eine unendliche Geschichte...




zurück zur Übersicht

.​
 

Anhänge

  • update.zip
    152,9 KB · Aufrufe: 748
Zuletzt bearbeitet:
  • Danke
Reaktionen: Malzbier, Pseudofreak, Hexer und 10 andere
Anpassen von Apps aus dem Market

Prinzipiell gelten die oben beschriebenen Vorgehensweisen auch für Apps, die man aus dem Market (oder manuell von der SD-Karte) installiert. Die Apps aus dem Market werden allerdings nach /data/app installiert und befinden sich also nicht /system/app. Und da liegt das Problem ;)
Sobald man Änderungen an apk vornimmt, wird die Signatur ungültig und die apk lässt sich nicht mehr installieren bzw. läuft nicht mehr. Es gibt zwei Möglichekiten dieses Problem zu umgehen:
Entweder verschiebt man die apk nach /system/app (weil da die Signatur nicht auf Gültigkeit überprüft wird) oder man muss die neu signieren, damit man die apk wieder installieren kann. Beides ist mit Nachteilen verbunden, daher wird das auch relativ selten gemacht.


Nach /system/app verschieben (wenn schon Market-Apps anpassen, dann so)

Vorteil:
Einfach, schnell gemacht

Nachteil:
(Relativ) Wenig Speicherplatz auf /system, wenn Updates aus dem Market installiert werden sind die Anpassungen weg

Noch kurz was zu apk in /system/app und /data/app:
Sollte sich sich in beiden Verzeichnissen eine apk für eine App befinden, dann ist immer die apk in /data/app maßgebend. Beispiel:
Google Maps befindet sich standardmäßig in /system/app. Wenn ein Update aus dem Market installiert wird, dann wird nicht die apk in /system/app ersetzt, sondern das Update wird nach /data/app installiert. Somit befinden sich sowohl in /system/app als auch in /data/app apk für Google Maps, "angezeigt" wird allerdings nur die apk aus /data/app.
Daher sind dann auch Änderungen, die man an apk in /system/app vornimmt, nach einem Update nicht mehr sichtbar. Man muss in diesem Fall die apk aus /data/app neu anpassen und wieder nach /system/app verschieben. Für diese Geschichten (apk verschieben und wieder anpassen) kann man Metamorph nutzen, das erspart einem viel Arbeit.
Wie Metamorph benutzt wird, dazu später mehr.


apk neu signieren (nicht zu empfehlen)

Vorteil:
Die apk lässt sich ganz normal installieren

Nachteil:
Updates aus dem Market lassen sich gar nicht installieren

Eine apk neu zu signieren ist, wenn man die richtigen Tools zur Hand hat, nicht weiter schwer.
Ich mache das wieder mit dem Apk Manager, es gibt aber noch andere Tools, die vielleicht sogar etwas komfortabler zu bedienen sind (findet man mit Google).
Nachdem man seine Änderungen an der apk vorgenommen hat, wird jetzt der Ordner META-INF aus der apk gelöscht.
Die apk kommt dann in den Ordner "place-apk-here-for-signing" im Verzeichnis des Apk Managers.
Apk Manager starten und "16 sign apk" auswählen, fertig.
Bevor man die apk jetzt installieren kann, muss allerdings erst die betreffende apk auf dem SGS deinstalliert werden.
Wieso?
Mit dem Apk Manager wird die apk mit einem "testkey" signiert, in der Regel werden Apps von Entwicklern aber mit einer eigenen Signatur versehen, d.h. dass die Signaturen stimmen nicht überein. Mit dem Ergenis, dass sich die neu signierte apk nicht installieren lässt (und andersherum lassen sich Updates aus dem Market nicht installieren, wenn die apk mit dem testkey signiert wurde).
Daher ist diese Variante mit Abstand die aufwändigste, zumindest bei Apps, die regelmäßig Updates erhalten.
Ich habe das auch nur der Vollständigkeit halber aufgeführt, ist auch nicht ganz so ausführlich wie es sein könnte.
Außerdem bin ich mir nicht sicher wie das rechtlich aussieht (apk verändern und mit einer anderen Signatur "veröffentlichen"), daher meine Bitte:
Nicht nachmachen! :)



zurück zur Übersicht

.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: H00mer, Pseudofreak, nobody573 und 7 andere
Kev meint ich brauche noch mehr :D
 
  • Danke
Reaktionen: olex. und hermz
Den auch. Dann reicht's. Löschen kann man immer noch...
 
  • Danke
Reaktionen: olex. und hermz
Nice, sowas habe ich schon öfters mal gesucht - wie du aber schon sagtest ist alles unübersichtlich ;). Werde es gleich liken und in die Lesezeichen machen :)
Werde es - sobald alles fertig ist mal ausprobieren und dann dein JVK Theme mal etwas missbrauchen ;D
 
Find ich cool. Danke gibt es später.
Da kann man sich mal selbst dran versuchen.

Getalptalkt von unterwegs
 
toller thread, danke scheich.
wenn du noch eine anleitung mit rein nimmst, wie man die bereits vorhandenen themes auf cm7 zum laufen kriegt wär das spitze :D


LG Hermz
 
Ich hab die ersten Beiträge mal ergänzt, ein paar Bilder hinzugefügt und alles etwas strukturiert. Ist das so weit verständlich (und richtig)?

@hermz
Das was ich hier versuche wird am Ende deine Anleitung sein ;)
 
hey
erstmal danke für die ganze mühe!:thumbsup:

ich musste einem freund per telefon erklären, wie er auf 2.3.3 updaten kann und das war echt verdammt viel mühe:blink:, weshalb ich es um so mehr zu schätzen weiß, das du eine su gut strukturierte anleitung für leute schreibst, die, bis jetzt, noch keine oder sehr wenig erfahrung mit themes, programmieren etc. haben!!!

richtig gut!!!:love:

ps: ich nehme mal an, dass die programe aus deiner liste auch auf windows 7 essential 64- bit bzw. windows 7 generell laufen...
wäre ja schön, wenn jemand sagen könnte, ob das so ist...

wenn nicht, würde ich es morgen mal probieren!

lg skillum

Edit: Wäre cool, wenn du den direkten link zu der zu downloadenen datei vom notepad ++ verlinken würdest...

unter download steht aud der seite der neusten version:
Release Date: 2011-03-31

stellt sich also die frage, ob man das alles benötigt...

ps: bis jetzt gab es alle programme auch speziell für 32- und 64 - bit versionen...
kann aber nicht sagen, ob sie auch funktionieren
 
Zuletzt bearbeitet:
Update.zip ist fertig :)

@skillum
Bei Notepad++ musst du selbst entscheiden, was davon du willst (jedenfalls nur eins;)).
Die exe installiert das ganz normal, die zip- und 7z -Archive laufen ohne Installation, sind dafür aber auch weniger komfortabel (weil nicht direkt im System).

Edit:
Vorschläge, wie ich die Posts übersichtlicher machen kann nehme ich gerne an. Ist nicht so mein Ding...
 
Apk dekompilieren ist fertig:)

Ich hab's jetzt ein paar Mal gelesen, ich seh nichts mehr. Fehler bitte umgehend melden.
 
[X] In die FAQ aufgenommen! Sehr schön scheich :thumbsup:
 
  • Danke
Reaktionen: Boogieman, scheichuwe und susdiehl
großer Respekt scheich!
freu mich ja direkt mal auf meinen nächsten nachtdienst, wenn ich hoffentlich zeit hab das alles mal durchzutesten :)


LG hermz
 
Kann sich mal jemand "Wo finde ich was?" für 2.2 angucken?
Bevor ich weitermache hätte ich gerne gewusst, ob man damit zurechtkommt...
 

Ähnliche Themen

Q
Antworten
25
Aufrufe
8.437
quasimodo
Q
F
Antworten
6
Aufrufe
2.932
GGK
G
alexkristiaan
Antworten
0
Aufrufe
1.503
alexkristiaan
alexkristiaan
Zurück
Oben Unten