Publikováno: 15.10.2014 12:00
23 komentářů
23
Široká přizpůsobitelnost je jedním z hlavních rysů mobilního operačního systému Android. Existují jednoduché cesty, jak dosáhnout změny vzhledu či chování aplikace – zpravidla takové možnosti najdete v příslušné sekci nastavení. Pokud se ale chcete ponořit hlouběji – například změnit vzhled některé části programu, ke které není přístup z rozhraní – budete muset nejprve dekompilovat, následně upravit a opětovně zkompilovat APK balíček. Jak na to vám prozradíme v následujících řádcích.
![Jak dekompilovat, kompilovat a optimalizovat APK balíčky? Jak dekompilovat, kompilovat a optimalizovat APK balíčky?](https://www.svetandroida.cz/media/2014/10/kompilace_ico1-600x393.jpg)
Jak dekompilovat, kompilovat a optimalizovat APK balíčky?
Hned na začátku si ale dovolíme upozornit, že
následující postup může vést k nefunkčnosti aplikace, pádům, v krajním případě i ztrátě dat. Proto vezměte na vědomí, že případné následky takového počínání nesete jen vy sami.
Příprava
Stáhněte si nástroj Minimal Fastboot a rozbalte ho.
Stáhněte balíček apktool-files.zip (v prohlížeči Chrome možná budete muset v nastavení deaktivovat volbu
Povolit ochranu proti phishingu a malwaru) a rozbalte ho do té samé složky.
Stáhněte framework a uložte ho do stejné složky, do které jste předtím rozbalili soubory.
Stáhněte si nástroj Zipalign a opět ho rozbalte do té samé složky.
Dekompilace APK souboru
Připravte si do složky s rozbalenými daty APK soubor, který budete chtít „rozebrat“ – v našem případě se jednalo o Mapy Google 8.1.0.
Následně je nutné spustit příkazový řádek ze složky, do které byly rozbaleny stažené soubory, a zadat příkaz
apktool if framework-res.apk.
![Příkazový řádek je nutné spouštět ze složky, do které byly rozbaleny stažené soubory Příkazový řádek je nutné spouštět ze složky, do které byly rozbaleny stažené soubory](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_074219-300x148.jpg) Příkazový řádek je nutné spouštět ze složky, do které byly rozbaleny stažené soubory |
![Zadejte příkaz apktool if framework-res.apk Zadejte příkaz apktool if framework-res.apk](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_075134-300x148.jpg) Zadejte příkaz apktool if framework-res.apk |
Měli byste dostat odpověď ve stylu
I: Framework installed to:.
![Měli byste dostat odpověď ve stylu I: Framework installed to: Měli byste dostat odpověď ve stylu I: Framework installed to:](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_075145-600x297.jpg)
Měli byste dostat odpověď ve stylu I: Framework installed to:
Jako další zadejte
apktool if název_souboru.apk. Dejte pozor na to, že název souboru nesmí obsahovat mezery!
![Jako další zadejte apktool if název_souboru.apk Jako další zadejte apktool if název_souboru.apk](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_075408-300x148.jpg) Jako další zadejte apktool if název_souboru.apk |
![Výsledek příkazu apktool if název_souboru.apk Výsledek příkazu apktool if název_souboru.apk](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_075457-300x148.jpg) Výsledek příkazu apktool if název_souboru.apk |
Nyní jste připraveni na dekompilaci, kterou provedete zadáním příkazu
apktool d název_souboru.apk. Tím dojde k rozbalení balíčku.
![Zadáním příkazu apktool d název_souboru.apk dojde k rozbalení balíčku Zadáním příkazu apktool d název_souboru.apk dojde k rozbalení balíčku](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_0754571-300x148.jpg) Zadáním příkazu apktool d název_souboru.apk dojde k rozbalení balíčku |
![Zadáním příkazu apktool d název_souboru.apk dojde k rozbalení balíčku Zadáním příkazu apktool d název_souboru.apk dojde k rozbalení balíčku](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_075544-300x148.jpg) Zadáním příkazu apktool d název_souboru.apk dojde k rozbalení balíčku |
Ve složce, ze které jste spouštěli příkazy, vznikne nová složka s názvem odpovídajícím jménu dekompilovaného souboru.
![Vznikne nová složka s názvem odpovídajícím jménu dekompilovaného souboru Vznikne nová složka s názvem odpovídajícím jménu dekompilovaného souboru](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_080944.jpg)
Vznikne nová složka s názvem odpovídajícím jménu dekompilovaného souboru
Pokud se do ní podíváte, najdete v ní několik souborů a složek. Toto uspořádání je víceméně stejné pro jakýkoli soubor APK.
![Obsah složky s rozbalenou aplikací Obsah složky s rozbalenou aplikací](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_080953.jpg)
Obsah složky s rozbalenou aplikací
Například složka
res obsahuje všechny multimediální soubory, používané aplikací, jako jsou obrázky, zvuky a další. Najdete v ní také grafické prvky uživatelského rozhraní. Editací souborů XML můžete ovlivnit vzhled a chování aplikace.
![Složka res obsahuje všechny mediální soubory, používané aplikací Složka res obsahuje všechny mediální soubory, používané aplikací](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_081430.jpg)
Složka res obsahuje všechny mediální soubory, používané aplikací
Složka
smali obsahuje zpracované Java soubory
.smali. Zobrazuje se jen v případě, že aplikace je takzvaně „deodexovaná“. V opačném případě jsou soubory zkomprimovány do jediného s příponou
.odex.
![Složka smali obsahuje zpracované Java soubory .smali Složka smali obsahuje zpracované Java soubory .smali](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_081439-300x250.jpg) Složka smali obsahuje zpracované Java soubory .smali |
![Složka smali obsahuje zpracované Java soubory .smali Složka smali obsahuje zpracované Java soubory .smali](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_081525-300x250.jpg) Složka smali obsahuje zpracované Java soubory .smali |
Soubory .smali jsou odpovědné za funkčnost aplikace a manipulace s nimi by měla přímý dopad na fungování a chování programu. Buďte tedy při případné editaci těchto souborů velmi opatrní, neboť změny způsobit neočekávané reakce na vašem zařízení.
Kompilace APK souboru
Poté, co provedete požadované změny, můžete balíček znovu zkompilovat. Provedete to zadáním příkazu
apktool b název_složky.
![Kompilaci balíčku spustíte zadáním příkazu apktool b název_složky Kompilaci balíčku spustíte zadáním příkazu apktool b název_složky](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_082330-600x297.jpg)
Kompilaci balíčku spustíte zadáním příkazu apktool b název_složky
![Kompilace balíčku Kompilace balíčku](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_082420-300x148.jpg) Kompilace balíčku |
![Kompilace balíčku Kompilace balíčku](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_082457-300x148.jpg) Kompilace balíčku |
Výsledný balíček najdete ve složce s dekompilovanou aplikací, konkrétně v podřízeném adresáři
dist.
![Výsledný balíček najdete v podřízeném adresáři dist Výsledný balíček najdete v podřízeném adresáři dist](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_082513-300x250.jpg) Výsledný balíček najdete v podřízeném adresáři dist |
![Výsledný balíček najdete v podřízeném adresáři dist Výsledný balíček najdete v podřízeném adresáři dist](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_082519-300x250.jpg) Výsledný balíček najdete v podřízeném adresáři dist |
Máme tedy sestavený APK soubor, ale s ohledem na provedené změny je možné, že není kompaktní a používal by mnohem více systémových prostředků, než ve skutečnosti měl. Abyste tomu předešli, můžete balíček optimalizovat pomocí nástroje Zipalign.
Optimalizaci spustíte příkazem
zipalign -v 4 rekompilovaný_soubor.apk výsledný_soubor.apk.
![Optimalizaci spustíte příkazem zipalign -v 4 rekompilovaný_soubor.apk výsledný_soubor.apk Optimalizaci spustíte příkazem zipalign -v 4 rekompilovaný_soubor.apk výsledný_soubor.apk](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_083556-600x297.jpg)
Optimalizaci spustíte příkazem zipalign -v 4 rekompilovaný_soubor.apk výsledný_soubor.apk
Pro snadnější zadávání doporučujeme soubor přesunout do stejné složky, ze které budete spouštět Zipalign.
Tím získáte upravený a optimalizovaný APK balíček, který můžete nainstalovat do telefonu nebo tabletu.
![Získali jste upravený a optimalizovaný APK balíček, který můžete nainstalovat do telefonu nebo tabletu Získali jste upravený a optimalizovaný APK balíček, který můžete nainstalovat do telefonu nebo tabletu](https://www.svetandroida.cz/media/2014/10/screenshot_20141015_083606-600x297.jpg)
Získali jste upravený a optimalizovaný APK balíček, který můžete nainstalovat do telefonu nebo tabletu
Zdroj:
Droid Views.