[How-To] Eigenes CyanogenMod-Theme erstellen

M

MaxMustermann2.0

Fortgeschrittenes Mitglied
46
Hier mal ein kleines Tutorial, wie man ein eigenes CyanogenMod-Theme erstellt.

Diese Anleitung ist für den alten CM-Theme-Chooser. Für die neue Theme-Engine (seit CM11, Snapshot M6) gibt es hier eine Beschreibung (auf Englisch)

Hinweise:
Ich habe auf diese Art erstellte Themes bisher nur auf CyanogenMod getestet, es müsste aber mit allen Roms funktionieren, die den gleichen Theme-Chooser wie CM benutzen.

Was man braucht:
-apktool
-Notepad++
-EmptyTheme.apk (im Anhang)
-Gehirn
-ein paar Grundkenntnisse, was das Programmieren des res/-Teils einer Android-App angeht

Los geht's
1. Decompiliere die EmptyTheme.apk
2. Erstmal den Package-Name in der AndroidManifest.xml ändern
3. Im Ordner res/xml findet man folgende Dateien:
redirections.xml - gibt an, welchem Package welche Datei zugeordnet wird

z.B.
Code:
<package-redirections android:name="com.android.systemui" android:resource="@xml/com_android_systemui" android:minSdkVersion="7" />
Ordnet dem Package com.android.systemui die Datei com_android_systemui.xml (auch im XML-Ordner) zu.

android.xml - gibt an, welche Ressourcen im Package android welcher Resource im Theme zugeordnet wird.

z.B.
Code:
<item name="drawable/btn_check_on_holo_dark">@drawable/btn_check_on_holo_dark</item>
ordnet dem drawable "btn_check_on_holo_dark" die Resource "@drawable/btn_check_on_holo_dark des Themes" zu, d.h. die Original-Resource wird durch die des Themes ersetzt. Dazu muss im jeweiligen Drawable-Ordner natürlich noch das entsprechende Drawable hinzugefügt werden. Das
Code:
name="drawable/btn_check_on_holo_dark"
steht für die Original-Resource,
das
Code:
@drawable/btn_check_on_holo_dark
steht für die Resource des Themes, die die Original-Resource ersetzen soll.
Nach diesem Muster kann man jetzt alle Resourcen auflisten, die im Package "android" ersetzt werden sollen. Man kann auch style, xml, layout, color, string,... ersetzen. Dazu ist es hilfreich, sich auch die Original-Datei zu decompilieren.

com_android_systemui.xml - das Gleiche wie android.xml aber für das Package "com.android.systemui"

Für die Packages "android" (framework-res.apk) und "com.android.systemui" (SystemUI.apk) sind die Dateien schon vorbereitet, jede dieser Dateien muss aus folgendem Code bestehen:
Code:
<?xml version="1.0" encoding="utf-8"?>
<resource-redirections>
</resource-redirections>
die Items werden dann zwischen den <resource-redirection>-Tags gesetzt.
Man kann jetzt in diesen beiden Packages alle Resourcen ändern wie man möchte.
Will man in weiteren Packages Resourcen tauschen, muss man in der redirections.xml folgende Zeile hinzufügen
Code:
    <package-redirections android:name="packageName" android:resource="@xml/fileName" android:minSdkVersion="7" />
und dann unter xml eine Datei fileName.xml mit diesem Code anlegen:
Code:
<?xml version="1.0" encoding="utf-8"?>
<resource-redirections>
</resource-redirections>
also z.B. für den Browser
Code:
    <package-redirections android:name="com.android.browser" android:resource="@xml/com_android_browser" android:minSdkVersion="7" />
und dann eine Datei namens "com_android_browser.xml" anlegen.
Hier kann man dann wieder die Resourcen auflisten, die man in diesem Package ändern will (nicht vergessen, die neuen Resourcen hinzuzufügen).

4. Wieder kompilieren
5. Signieren (das geht zum Beispiel mit der App ZipSigner aus dem Playstore)
6. Installieren
7. Theme unter Einstellungen>Designs> aktivieren.

Weiteres:
-für den Anfang empfehle ich erstmal nicht so viel zu ändern, um zu testen ob es funktioniert, und dann immer wieder zwischendurch testen.
-die Datei "preview.png" im Ordner "drawable" ist die Vorschau, die im Theme Chooser angezeigt wird
-in der Datei res/values/strings.xml kann der Theme-Name geändert werden
 

Anhänge

  • EmptyTheme.apk
    4,2 KB · Aufrufe: 279
Zuletzt bearbeitet:
  • Danke
Reaktionen: shoxxy
Hoert sich gut an, wenn ich zeit finde werde ich es mal testen. Waere ne idee um theme choosing in Stock basierte custom rom einzubinden. Aber ob das mit dem cm theme chooser so einfach auch auf Stock funkt. Weiss ich nicht. Wenn da jemand Erfahrungen hat mal bitte Posten.

Gruss
 
Geht das auch so mit MIUI Themes. Ich vermute mal das geht nicht. Wäre zu schön um wahr zu sein :-D Vielen Danke trotzdem für das How-To. ;-) Werde mal mein Glück versuchen.
 
Im enteffekt kann man jedes theme veraendern, miui natuerlich auch. Bin zwar kein miui freund, aber denke dort wird es nicht viel anders sein.. Grusd
 

Ähnliche Themen

DerOhneNick
Antworten
3
Aufrufe
1.094
DerOhneNick
DerOhneNick
A
Antworten
2
Aufrufe
1.544
MB526
MB526
Professor-Berni
  • Professor-Berni
Antworten
6
Aufrufe
2.043
Professor-Berni
Professor-Berni
Zurück
Oben Unten