Saját Cyanogenmod téma készítése

Miután a legelterjedtebb Android modot használjuk, nem árt, ha előkerítjük a kreativitásunkat is néha. – írta: Keeperv85, 10 éve

Az én első saját témám

Megelőzöm a kérdést: igen, megvan még és igen, működne, ha lenne CM7-es romom, de az már történelem. Érdekesebb gondolat, hogy hogyan is készült el. Lássuk hát sorban mi is kell egy CM téma forráskódjába! Mi a baj?! Elhangzott az a szó, amitől a legtöbb modder fél, ugye? "Forráskód". Nos, igen. Linux és Android. Jó barátok. Így most elsőre Linux alá költözünk! Ne aggódjatok, mutatok Windows-ra kitalált megoldást is!

Hozzunk létre egy AndroidManifest.xml fájlt elsőre. Ez a fájlunk a legfontosabb, ugyanis ő adja át a témánk adatait a fordítás után a DVM (Dalvik Virtual Machine) felé feldolgozásra. Minden apk fájlnak szerves résztét képzi.

Ezt írjuk bele:

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:pluto="http://www.w3.org/2001/pluto.html"
<!-- Ez egy komment, nem fog lefordulni. Az alatta lévő sor a csomag belső nevét a rögzíti, ezt látja a rendszer -->
package="com.tmobile.theme.MyTheme"
android:hasCode="false">

<!-- Mivel ez egy téma, szüksége van erre az egyedi kulcsa a, hogy kezelje a téma motor. -->
<uses-feature android:name="com.tmobile.software.themes" />

<theme
pluto:themeId="MyTheme"
pluto:styleId="@style/MyTheme"
pluto:name="@string/theme_name"
pluto:preview="@drawable/preview"
pluto:author="@string/author"
pluto:copyright="@string/copyright"
pluto:wallpaperImage="@drawable/wallpaper"
pluto:styleName="@string/style_appearance_name"
pluto:ringtoneName="Shocking"
pluto:ringtoneFileName="media/audio/ringtones/Shocking.mp3"
pluto:notificationRingtoneName="Teleport"
pluto:notificationRingtoneFileName="media/audio/notifications/Teleport.mp3">

<!-- Ez egy kényszerített átirányítás, ami némely alkalmazásnak szükséges, erről később -->
<meta-data android:name="com.tmobile.theme.redirections"
android:resource="@xml/redirections" />

</theme>

</manifest>

A fenti @-el kezdődő sorok némi magyarázatra szorulnak. Ezek a C-ből már ismerős (már akinek ugye...) pointerek megfelelői. Ami előtt szerepelnek, azokra átmutat a "link". Ezekben az a jó, hogy a @drawable pl. az összes drawable-xxxx mappát végignézi az erőforrása után, így nekünk nem kell tudni éppen melyikben van a kívánt erőforrás, csak azt hogy létezik. (Egy kivétel van: a preview.png, de erről később....).

Most, hogy a téma "gerince" kész, valamivel majd le is kell fordítani. Az Android fordító egy elég "egyedi" make formátumot kapott, ami kicsit C, kicsit nem, de ne bonyolódjunk ebbe bele szerintem első körben.

Készítsük el az Android.mk fájlunk, a következőképp:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_PACKAGE_NAME := MyTheme

LOCAL_AAPT_FLAGS := -c mdpi,hdpi -x 10

include $(BUILD_PACKAGE)

Azt hiszem nincs különösebb magyarázatra szükség. Az include nem tölt be semmi külső headert, le is nullázzuk a változót rögtön a biztonság és a formalitás kedvéért, nem kötelező modult hozunk létre, megadjuk a nevét, majd az aapt-nek megmondjuk, hogy a témában mdpi és hdpi erőforrás mappák vannak. Végül pedig az include-unk megkapja az erőforrásait.


A Steel Blue is így készült anno. Igazán nagy népszerűségnek örvendett!

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények