CyanogenMod-Themes einfach selbst erstellen

CyanogenMod bietet die Möglichkeit, das Design mittels Designwahl zu wechseln. Das System lässt sich optisch so anpassen, wie ihr es gerne hättet. Im Play Store oder bei XDA gibt es zahlreiche Themes, kostenlos und auch kostenpflichtig. Doch, was macht ihr, wenn das Gewünschte nicht dabei ist? Genau, ihr erstellt euch euer Design einfach selbst. Die Erstellung von CM-Themes erscheint im ersten Moment etwas komplex, aber bei genauerer Betrachtung ist es relativ simpel. Vorausgesetzt, man versteht den generellen Aufbau und weiß, was alles beachtet werden muss. Meine kleine Anleitung soll euch einen ersten Einblick geben und beim Entwickeln eigener Themes unter die Arme greifen.

Das Handwerkszeug des CM-Theme-Designers

Als angehender Theme-Designer müsst ihr das Rad nicht neu erfinden. Auf GitHub stehen einige Vorlagen bereit, die ihr guten Gewissens benutzen könnt. Dadurch erhaltet ihr bereits den grundlegenden Aufbau und findet innerhalb der Templates erste hilfreiche Hinweise für die Entwicklung. Ich habe mich auf das CM-Theme-Template von kladd festgelegt. Ladet euch das entsprechende Git herunter und entpackt es auf eurem Computer. Bevor wir uns ans Themen machen, klauben wir uns noch die restlichen benötigten Tools zusammen. Um das fertige Design später kompilieren zu können, wird das bekannte Apktool benötigt und zum Signieren der APK einen APK-Signer. Die Tools setzen eine funktionierende Java-Laufzeitungebung voraus.

Beginnen wir nun mit unserem ersten Theme und editieren die AndroidManifest.xml. Diese Datei beinhaltet quasi alle essentiellen Informationen, wie Paketname, App-Name, Versionsnummer etc. Entsprechend dem nachfolgenden Quellcode müssen diese Änderungen angepasst werden.

Auszug aus AndroidManifest.xml:

package="de.erster.theme"
android:label="ERSTER THEME"
name="ERSTER THEME"
pluto:themeId="ERSTER THEME"
pluto:styleId="@style/ERSTER THEME"
android:targetSdkVersion="19"

Anschließend ersetzen wir in der strings.xml natürlich nochmals alle Angaben, durch unsere. Andernfalls wird der Theme später falsch benannt.

/res/values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
	<string name="app_name">ERSTER THEME</string>
    <string name="theme_name">ERSTER THEME</string>
    <string name="style_appearance_name">ERSTER THEME</string>
    <string name="author">EURER NAME</string>
    <string name="copyright">LIZENZ</string>
</resources>

Gestalte deinen ganz eigenen CM-Theme

Nun könnt ihr mit dem eigentlichen Gestalten starten. Die Logik ist schnell erklärt. Bildressourcen landen entsprechend in den Ordnern drawable-... und Farb-, Größen- oder Styleänderungen entsprechend im Ordner values. Zum besseren Verständnis dekompiliert ihr euch am besten die framework-res.apk eurer ROM und schaut euch den Aufbau dort an. Dieses Feld ist sehr umfangreich, um wirklich alles detailliert zu beschreiben. Dafür muss man einfach ein Gefühl bekommen. Werft auch einen Blick auf meine Anpassung am KitKat Dialer, meine EMUI Tutorials oder befragt Tante Google. Wichtig: Wenn ihr eine Ressource ändert bzw. hinzufügt, muss diese zwingend verlinkt werden. Im Ordner xml wird daher für jede gemoddete App eine XML-Datei angelegt.

Exemplarischer Auszug aus meinem Dialer Theme:

<?xml version="1.0" encoding="utf-8"?>
<resource-redirections>
    <item name="color/dialpad_text_color">@color/dialpad_text_color</item>
    <item name="drawable/ic_dial_action_delete">@drawable/ic_dial_action_delete</item>
</resource-redirections>

Erfahre mehr: CM11: Originales Google Dialer Design als CM-Theme

Wenn alle Änderungen erfolgt sind, ändert ihr im Ordner drawables das Icon sowie die Preview. Anschließend folgen die letzten beiden Schritte.

Die finalen Schritte: Kompilieren und Signieren

Um die Source zu Kompilieren, braucht ihr zusätzlich die passende framework-res.apk eurer ROM. Registriert das Framework und packt anschließend alles zu einer APK zusammen. Führt nachstehende Befehle der Reihe nach über die Kommandozeile aus.

apktool if framework-res.apk
apktool b ThemeAPK ThemeAPK.apk

Sollten beim Kompilieren Fehler auftreten, hilft nur genaues Lesen. Oftmals wurde eine Variable nicht definiert oder es fehlen Angaben. Hat das Erstellen der Android App fehlerfrei funktioniert, muss diese Datei noch signiert werden. Geschieht dies nicht, weist das Android-System das Theme bei der Installation zurück. Jede Anwendung muss aus Sicherheitsgründen eine gültige Signatur besitzen. Kopiert also eure APK in den Ordner apksigner. Ändert in der Batch-Datei entsprechend den Dateinamen der APK ab. Danach führt ihr die Stapelverarbeitungsdatei aus.

java -jar signapk.jar signapk-key.testkey.x509.pem signapk-key.testkey.pk8 ThemeAPK.apk ThemeAPK-signed.apk

Hat dieser Schritt geklappt, ist die App signiert. Verschiebt sie auf euer Smartphone und installiert das Theme, wie eine normale Anwendung. Erlaubt zuvor die Installation aus „Unbekannter Herkunft“ (Einstellungen ⇒ Sicherheit). Tauchen dabei keine Probleme auf, habt ihr es geschafft. In den Systemeinstellungen unter Designs sollte das neue Design auftauchen.

Hinweis Bei dieser Anleitung verwende ich lediglich Testschlüssel zum Signieren. Das klappt zwar prima, aber wenn ihr ernsthaft entwickeln wollt, solltet ihr euch einen eigenen Schlüssel generieren.


Avatar von reraiseace
Autor: Markus Werner (reraiseace) Twitterreraiseace, Google+reraiseace, Twittercb_werner
Ich bin Redaktionsvolontär bei der COMPUTER BILD in Hamburg, Fernstudent am Deutschen Journalistenkolleg und schreibe auf re{raise}ace privat über Webdesign und Programmierung. Seit 2015 schrieb ich auch regelmäßig für andere Medien.

2 Kommentare

Du kannst diesen Artikel nicht mehr kommentieren.

  1. Kommentar von Lionel · · #

    Hi. Tolle Anleitung. Doch bevor ich damit beginne habe ich noch eine kurze Frage. Funktioniert mein Theme dann auch mit dem neuen Theme Chooser? Habe nämlich gehört, dass die älteren Designs nicht mehr mit dem neuen Chooser funktionieren.

    Vielen Dank
    Lionel

  2. Kommentar von reraiseace · · #

    Hallo Lionel,
    die alten Themes funktionieren auch noch mit dem neuen Theme Chooser. Aber bieten natürlich nicht die volle Funktionalität der neuen Theme Engine. Das Design setzen sie aber nach wie vor um. Wenn du aber neue Themes entwickeln willst, musst du dir die Frage stellen, für welche CM-Versionen der Theme funktionieren soll. Der neue Theme Chooser funktioniert nur mit CM11 seit Mai.

    Ich werde mal schauen, das ich zu dem neuen Theme Chooser auch noch eine kleine Einführung schreibe.