Valamikor a 2012. év vége felé elkezdtem azon agyalni, hogy mit csinálnék, ha lenne egy tonna felesleges pénzem. Kiötlöttem, hogy valami nem drága,
teljesen nyílt játékkonzolt csinálnék.
Rá is kerestem hirtelen a neten és nagy meglelepetésemre azt láttam, hogy lenyúlták az ötletemet :D
Rátaláltam az Ouya nevű játékkonzolra, ami nyílt forráskódú Android operációs rendszeren alapszik, teljesen szabadon bütykölhető kütyü.
Elő lehetett rendelni rá, amit én meg is tettem. :)
2013 június közepe tájékán meg is érkezett egy szép kis csomagban. Ő az:
Ezt is kibontva egy szép felirat köszönt ránk, amiben megköszönik, hogy hittünk a projekt sikerében:
Kibontva egy nagyon helyes, matt fekete karton dobozra lelünk:
Tovább bontogatva szemünk elé tárul a kézivezérlő és a konzol maga. Édes, alig nagyobb egy Rubik-kockánál :)
Teljesen kibontva előkerülnek a kábelek, elemek, egyéb sallangok:
Én most nem regélnék magáról a konzolról, minden infó és leírás, tesztek megtalálhatók az ouyahungary.hu oldalon.
Amiről viszont regélnék, az egy kis - ki gondolná? - buhera. Konkrétan a konzol felruházása a magyar nyelvvel :)
Régóta tartozom egyébként android telók magyarításának leírásával, na ez pont ugyanolyan, szóval több legyet is ütök egy csapásra :)
Igazából a magyar nyelvet beletenni egy kütyübe pofonegyszerű. Így utólag, mert rengeteg interneten való kutakodásra volt szükség,
hogy megértsem, mit és hogyan. Nem utolsó sorban a szükséges programok megtalálása sem volt egyszerű.
Úgyhogy azok, akik ezt olvassák és érdekli őket a dolog, örülhetnek, mert itt minden egy helyen megvan és megspórolnak jó sok időt :D
Ha esetleg idetévedne egy fejlesztő, akkor nagyon örülnék, ha megirná, hogy mi a véleménye az egészről. Mert én nem vagyok az, csak nagyon kíváncsi és problémamegoldó természet. :D
Tehát a konzolt először bekapcsolva, a regisztráció elvégzése után megjelenik a menü. Szép angol nyelven. Irány a beállítások. Na itt a nyelveknél rengeteg nyelv közül választhatunk. Illetve választhattunk, mert az 1.0.393-r1 verziótól kezdve egy rakás nyelvet kivettek, jelenleg elérhető nyelvek az angol, német, francia, spanyol és olasz. A bibi az, hogy ugyan kiválaszthatunk nyelveket, de ez csak az "Advanced settings" menüpontra igaz, minden más angol marad. No változtassunk ezen.
Előrebocsátom, hogy egy androidos rendszer berhelgetéséhez a legjobb egy linux operációs rendszer, de én most szentségtörő
módon vindóz alatt csináltam meg. Ugyanis minden szükséges eszköz elérhető. Igazából nem is tudom, hogy olvassa-e ezt majd valaki,
ugyanis a fejlesztőket nem érdekli, hogy miket firkálok ide, olyan ember meg édeskevés van, aki csak úgy hobbiból foglalkozik ilyesmivel.
Na mindegy :) Akkor lássuk:
Az oldalon leírtakat mindenki a saját felelősségére végzi el, vagy nem végzi el!
Elrontott motyókért nem vállalok felelősséget!
Ezekkel ugyan végleg nem lehet elrontani a cuccot, még akkor sem, ha a kedvenc klippedet írod fel véletlenül egy rendszeralkalmazás helyett, de egyesek meglepő dolgokra képesek...
A letöltött fájlt bontsuk ki valahova. Szükségünk lesz még egyéb progikra is, azok is ide kerüljenek majd. Legyen ez a munkamappa. Maradjunk is ebben, a továbbiakban ezt feltételezem az aktuális mappának.
Ja, ezeknek a programoknak nincs grafikus felületük, nem egérfarmok ezek, mindent parancssorból (DOS ablakból) fogunk csinálni.
Erősen javallott pl. a Total Commandert használni, ha csak a Windows Intézőt ismered, szerintem ne is olvass tovább.
Kössük össze az OUYA-t a számítógéppel. Kapcsoljuk be ;) Mindkettőt :D Amikor a meghajtóprogramot keresi, adjuk meg neki az usb driver nevű mappát.
Windows 7 esetén:
Windows 10 esetén szükség lehet az illesztőprogramok aláírásellenőrzésének kikapcsolására. Ezt hagy’ ne írjam itt le, hogyan kell...
Még szükséges egy fontos dolog: hozzá kell adni a konzolt az adb-usb.ini filehoz.
Nyissunk parancssort a munkakönyvtárból (TC-ben ugye csak bepötyögjük, hogy cmd), utána írjuk be:
adb devices
Ez azért kell, hogy létrejöjjön a megfelelő könyvtár és fájlok.
utána:
echo 0x2836 >> "%USERPROFILE%\.android\adb_usb.ini"
Nézzük meg, hogy sikerült-e a telepítés:
Írjuk be megint: adb devices
Valami ilyesmit kell látnunk:
Ha ez megvan, nagyon jó, gyakorlatilag a leglényegesebb megvan :)
Telefonoknál típustól, gyártótól függ, hogy hogyan tudunk adb interfészen keresztül kapcsolódni. Ez nem ennek az irománynak a témája.
Alapesetben egy telefonnál most szükség lenne az ún. rootolásra, de az OUYA-nál ez nem kell. Lehet ugyan, csak felesleges,
ugyanis van "beépített" root.
Akit esetleg nem érdekelnek a részletek, csak az, hogy magyar nyelvű OUYA konzolja legyen, az UGORJA át a most következőket :D
framework-res.apk: ez a legfontosabb, ez a rendszer "lelke". Ez minden androidos kütyün megvan.
OUYALauncher.apk: ez a keretprogram, a menü.
OUYAOOBE.apk: ez egy másik keret, akkor fut, ha nem vagyunk bejelentkezve a fiókunkkal.
Settings.apk: ez az Advanced Settings menüpont programja. Illetve a telókon ez indul el a Beállítások menüpontot választva.
Másoljuk ki őket az OUYA-ról:
adb pull /system/framework/framework-res.apk framework-res.apk
adb pull /system/app/OUYALauncher.apk OUYALauncher.apk
adb pull /system/app/OUYAOOBE.apk OUYAOOBE.apk
adb pull /system/app/Settings.apk Settings.apk
Ezután a munkamappánkban ott figyel ez a négy fájl.
Itt jegyezném meg, hogy létezik egy csodálatos kis ingyenes program, aminek segtségével Total Commanderhez hasonló grafikus felületen tehetjük meg mindezt.
Szintén ADB kapcsolatot használ. Hasonlóan megkönnyíti a munkát, mint a TC.
(Azonban mivel root jogosultságunk nincs, ezért nem írhatunk/olvashatunk bármilyen mappát/fájlt vele)
A progi neve: Android Commander
Ugyanezzel a módszerrel a telefonokról bármilyen appot le lehet szedni buhera céljából.
Lassan közeledünk a lényeghez. A következő progi, amire szükségünk lesz, az az apktool.
Házi feladat: töltsük le a legfrissebb verziót...
Na itt kicsit megállnék, az alábbi buhera az apktool 1.5.2-es stabil verziójával (szintén letölthető innen) készült. Ezzel biztosan működik. Azóta jöttek ki újabb verziók, elvileg működni kell azokkal is, nem teszteltem.
Egy kis kitérő az aláírásról (sign), rendszeralkalmazásokra értve:
Minden egyes .apk fájl rendelkezik ún. aláírással (sign), ami minden egyes, az appon belüli fájlt egy digitális aláírással
azonosít, azonban pl. a nyelvi fájlok egy külön fájlban egyben vannak tárolva becsomagolás után (resources.arsc). Így csak ezt
a fájlt kell kicserélni az eredeti applikációban, így nem szükséges újra szignózni az appot (a fájl hossza nem számít,
csak a megléte) Tehát ha valaki egyéb fájlokat akar törölni, vagy hozzáadni egy rendszeralkalmazáshoz (system/app tartalma),
akkor az bajban lesz. Nem tudja az eredeti kulcs nélkül újraszignózni az appot így nem is lehet majd telepíteni vagy futtatni.
Persze meg lehet csinálni, hogy az ÖSSZES, a kütyün lévő .apk fájlt újraszignózunk azonos kulccsal, de az elég beteg dolog.
És nem is tudom, hogy működik-e. Namost én nem értek hozzá, csak így gondolom. Jó lenne, ha valaki okosabb jobban megmagyarázná :)
Tehát Apktool. Kezdjük a legfontosabbal, a framework-res.apk-val. Legelőször is a framework fájlt installálnunk kell ahhoz, hogy bármilyen .apk fájlt ki vagy be tudjunk csomagolni. Méghozzá csak az a framework fájl jó, ami az adott kütyün van. Ha másik kütyüt akarunk buherálni, akkor annak a framework fájlját kell installálnunk.
Csináljunk egy külön mappát az apktoolnak és tegyük bele magát az apktool fájljait és a módosítandó fájlokat.
Update: látszik, hogy senki sem olvassa az oldalamat :D Szóval a továbbikaban létre kell hozni egy apktool.bat fájlt a következő tartalommal:
@echo off
set PATH=%CD%;%PATH%;
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
Így már tán működni is fog :) Az apktool.jar helyére az aktuális fájlnevet kell beírni, vagy a jar file-t átnevezni apktool.jar-ra.
Aztán telepítsük a framework fájlt:
apktool if framework-res.apk
Essünk is mindjárt neki a framework fájlnak:
apktool d framework-res.apk frame
A d azt jelenti, hogy kibontani akarunk, ezt követi a kibontandó fájl majd a mappa neve, ahova kerülnek a kibontott fájlok.
A létrejött frame mappából nekünk a res mappa érdekes. Ha csak arra van szükségünk, hogy a választható nyelvek között
megjelenjen a magyar nyelv, akkor semmi mást nem kell tennünk, mint hogy létrehozzuk az egyéb nyelvek mintájára
a values-hu és a values-hu-rHU mappákat. Ennyi. Csakhogy nekünk most több kell.
A többi .apk fájlunkat is hasonló módon kibonthatjuk, mindegyikben lesz values/strings.xml és mindegyikben létrehozhatjuk a
magyar nyelvi mappát és abban elhelyezhetjük a fordítást.
Hozzuk létre a mappákat és a values-hu mappába másoljuk be a values mappa string.xml fájlját.
Nyissuk meg egy normális szerkesztővel (pl. PSPad) a string.xml-t és essünk neki. Nincs más teendőnk, mint minden sorban
a > és </string> közötti angol nyelvű szöveget lefordítani és átírni magyarra.
Csak párszáz sorról van szó, jó munkát! :D:D:D:D
Figyeljünk arra, hogy a fájl utf-8 kódolású legyen!
Gyorsabb megoldás, ha rendelkezünk hasonló készülékről egy, a magyar nyelvet is tartalmazó .apk-val, ekkor ugyanis
a különböző string.xml fájlok összefésülhetőek, így nem kevés munkát megspórolva.
Pl. au OUYAOOBE string.xml-je szinte teljes egészében megtalálható az OUYALauncher string.xml-jében, így elég ezt lefordítani,
utána csak össze kell fésülni az előbbivel.
Ha elvégeztünk mindent, amit akartunk, akkor csomagoljuk vissza az appot:
apktool b frame framework-res-new.apk
A b (build) jelenti, hogy csomagolni akarunk, aztán a mappa neve, aminek a tartalmát csomagolni akarjuk végül az új fájl neve.
Figyelem, az apktool nem kér megerősítést, ha létező fájlt akarunk felülírni! Simán megteszi, ezért figyeljünk oda a névadáskor.
Az .apk fájlok szabványos zip tömörített fájlok, vagyis átnevezve őket .zip kiterjesztésre, tömörített állományként kezelhetjük.
Total Commandert használva erre nincs szükség, automatikusan felismeri a formátumot. Miért érdekes ez?
Mert a létrejött fájlból csak a resources.arsc fájlra van szükségünk, ezzel kell kicserélni az eredeti .apk fájlban lévőt.
Így az alkalmazáshoz tartozó eredeti aláírás érvényes marad.
És a fentieket szépen végigcsináljuk az összes többi appal. :)
A proginak van egy kis hibája: az elkészült fájlban, ha a leírásban használunk tageket (<br>, <b> stb.) akkor eredetileg a nyitó relációs jelet a < kód jelenti. A program ezeket kicseréli rendes < jelre, ami viszont csomagoláskor hibát jelez az apktool-ban. Szóval ezeket kézzel ki kell javítani. Példa:
eredeti: <string name="bluetooth_disconnect_all_profiles">Ezzel befejezi a kapcsolatot a következővel:<br><b>%1$s</b></string>
a létrehozott fájlban ez így fog kinézni: <string name="bluetooth_disconnect_all_profiles">Ezzel befejezi a kapcsolatot a következővel:<br><b>%1$s</b></string>
A nyitó relációs jeleket (<) ki kell cserélni a < kódra!
adb push framework-res-new.apk /sdcard/framework-res-new.apk
adb push OUYALaunchernew.apk /sdcard/OUYALaunchernew.apk
adb push OUYAOOBEnew.apk /sdcard/OUYAOOBEnew.apk
adb push Settingsnew.apk /sdcard/Settingsnew.apk
Utána:
adb shell
- nyitunk egy konzolt
shell@android:/ $ su
- rootként ügyködünk
shell@android:/ # mount -o rw,remount -t ext4 /dev/block/platform/sdhci-tegra.3/by-name/APP
- újracsatoljuk a system mappát írhatóként
shell@android:/ # cat /sdcard/framework-res-new.apk > /system/framework/framework-res.apk
- felülírjuk az eredeti fájlokat az újakkal.
shell@android:/ # cat /sdcard/OUYALaunchernew.apk > /system/app/OUYALauncher.apk
shell@android:/ # cat /sdcard/OUYAOOBEnew.apk > /system/app/OUYAOOBE.apk
shell@android:/ # cat /sdcard/Settingsnew.apk > /system/app/Settings.apk
Khm, futás közben felülírni fájlokat minimum nem elegáns, de én sem vagyok programozó... :D Ha látjuk a konzolunk képét,
akkor most azt látjuk, hogy jól lefagyott. Látszólag. :) De mi csak folytassuk...
Most pedig beállítjuk a jogosultságokat. Ez nagyon fontos!
shell@android:/ # chmod 6755 /system/framework/framework-res.apk
shell@android:/ # chmod 6755 /system/app/OUYALauncher.apk
shell@android:/ # chmod 6755 /system/app/Settings.apk
shell@android:/ # chmod 6755 /system/app/OUYAOOBE.apk
Majdnem kész vagyunk. Ahhoz, hogy valóban magyar nyelven is lássuk a dolgokat, szükséges még két beállítás. Így nem kell a még angol nyelvű menükben kolbászolni:
shell@android:/ # setprop persist.sys.language hu
shell@android:/ # setprop persist.sys.country HU
Ezután már csak újra kell indítani a konzolt:
shell@android:/ # reboot
Újraindulás után az általunk magyarított magyar nyelvű OUYA fog virítani. Ha minden igaz :D
Ennyi :)
Lustáknak, vagy az egész eddigiek hidegen hagyóknak vagy azoknak, akik egyszerűen magyar nyelvű OUYA-t akarnak
látni, megcsináltam ezt az egészet :D Letöltöd, kibontod, összekötöd az OUYA-t a gépeddel, telepíted az usb drivert aztán lefuttatod az INDIT.bat fájlt
és gyönyörködhetsz a magyar nyelvű OUYA-dban :D
A fordítás immáron közel 100%-os :) Néhol a menüben az ékezetek nem látszanak illetve az Ő és Ű betűk helyett az Ö és Ü kell.
Itt mindig a legfrissebb verzióhoz (esetenként pár nap (hét...) csúszással) készült magyarítás tölthető le:
Kis újítás: ha parancssorból indítod az INDIT.bat fájlt és megadod a konzol IP címét, akkor hálózaton (kábel vagy wifi) keresztül próbál kapcsolódni.
Ehhez persze az OUYA system/development menüjében engedélyezni kell az ADB over network opciót.
Figyelem! Ha már buheráltad az Ouya-t és esetleg rootolva van, akkor nem fog működni! Ahhoz más scriptek kellenek...
Valahogy így néz ki a folyamat:
Egy nyalánkság a végére: előfordul, mint nálam is, hogy ha a számítógépre kötöm az OUYA-t, akkor viszont a képét
nem látom, mert nincs a közelben HDMI bemenetes TV vagy monitor.
Erre is van megoldás, a neve droidscreen.jar
Ez egy JAVA alkalmazás, Szintén ADB kapcsolatot használ és láthatjuk, mit mutat éppen a kütyü kijelzője :)
Lényegében egy képlopó, a frissítési ideje kb. 3-5 másodperc.