Jak dekompilovat, kompilovat a optimalizovat APK balíčky? [návod]

kompilace_ico

Š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?

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

Zadejte příkaz apktool if framework-res.apk 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:

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

Výsledek příkazu apktool if název_souboru.apk 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

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

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

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í

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í

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

Složka smali obsahuje zpracované Java soubory .smali 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

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

Výsledný balíček najdete v podřízeném adresáři dist 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

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

Zdroj: Droid Views.

Karel Kilián
O Autorovi - Karel Kilián

Karel Kilián je zkušený technický redaktor a copywriter s bohatou praxí v oblasti informačních a komunikačních technologií. Jeho kariéra začala na pozici prodavače, odkud postupně… více o autorovi

Mohlo by vás zajímat

Komentáře (23)