2012.02.06 03:40 tak się dekompiluje aplikacje na androida, żeby w nich sobie coś zmienić

Zachciało mi się dziś podłubać w lejałtach androidowej aplikacji pracuj.pl, żeby zobaczyć, jak oni coś tam zrobili. Ponieważ autorzy tej aplikacji nie udostępniają jej źródeł, trzeba było ją zdekompilować. Oto moje notatki, jak to wszystko trzeba było robić.
Najpierw trzeba było zdobyć samą aplikację, czyli plik pracuj.pl.apk. Miałem tę aplikację zainstalowaną na telefonie, ale nie mogłem zgrać z telefonu na komputer pliku apk, bo on podobno siedzi w katalogu, do którego nie mam dostępu, dopóki nie zrutuję telefonu. Okazuje się też, że pliku apk nie da się ściągnąć z androidowego marketu. W końcu znalazłem plik apk na chomikuj.pl - mam nadzieję (http://pl.wikipedia.org/wiki/Cnoty_teologiczne), że nie było w nim zaszytego niczego złego. Znaleziony plik apk zapisałem pod nazwą pracuj.pl.apk.
Potem trzeba było zainstalować dekompilator - narzędzie apktool. Ściąga się go z http://code.google.com/p/android-apktool/ i instaluje zgodnie z opisem na tej stronie.
Potem zdekompilowałem aplikację poleceniem:
apktool d -d pracuj.pl.apk
Otrzymałem katalog pracuj.pl. Podłubałem w nim sobie, pozmieniałem. Potem skompilowałem tak pozmienianą wersję poleceniem:
apktool b -d pracuj.pl nic.apk
W wyniku tego polecenia powstał plik nic.apk zawierający moją zmienioną wersję aplikacji. Tak skompilowana aplikacja nie jest podpisana. Żeby móc ją zainstalować na telefonie, trzeba ją podpisać. W tym celu znalazłem u mnie na komputerze plik debug.keystore (siedział w katalogu c:\\Users\\piotrek\\.android\\) i skopiowałem go do katalogu, w którym to wszystko robiłem. I wydałem polecenie:
jarsigner.exe -verbose -storepass android -keystore debug.keystore nic.apk androiddebugkey -digestalg SHA1 -sigalg MD5withRSA
Przed zainstalowaniem na telefonie nowej, zmienionej wersji, trzeba było odinstalować starą wersję. Chciałem nie stracić danych tej aplikacji, więc zrobiłem tak. Najpierw w AndroidManifest.xml tej aplikacji sprawdziłem, jaka jest kwalifikowana nazwa klasy z główną activity tej aplikacji - było to pl.pracuj.android.jobsearcher.JobsearchApplication. Obciąłem z tego nazwę klasy i została mi nazwa pakietu - pl.pracuj.android.jobsearcher. Potem takim poleceniem odinstalowałem aplikację z telefonu:
adb shell pm uninstall -k pl.pracuj.android.jobsearcher
Wtedy zainstalowałem na telefonie moją, zmienioną wersję aplikacji:
adb install nic.apk
Pobawiłem się zmienioną wersją.
GOTO 10


komentarze:
2012.02.16 09:42 fdr

a co zmieniłeś w aplikacji pracuj, że spytam z czystej ciekawości?


2012.02.18 02:59 Piotrek

Nie zmieniłem nic, tylko patrzyłem, jak to oni zrobili, że mają listview będący w środku w scrollview i skrolujący się razem z resztą tego scrollview. Cytuję z moich notatek:
Oni tam u siebie zrobili ListView, który jest w środku w ScrollView. I że ten ListView nie przesuwa się względem ScrollView, tylko razem z nim. Zastanawiałem się - jak oni to zrobili? I po pierwsze doczytałem, że - tak oficjalnie mówią google - to jest głupi pomysł i tak nie trzeba robić. Nie do tego służy ListView. W takich sytuacjach trzeba po prostu wrzucić wiele View w LinearView, a nie pajacować z ListView. Ale oni (twórcy pracuj.pl) zrobili to głupio - napisali kod, który mierzy wysokość wszystkich elementów wewnątrz ListView i ustawili wysokość ListView na sumę wysokości tych elementów.


2012.09.28 11:13 Piotrek

Już da się ściągnąć apk z android marketa bez rootowania telefonu. Jest do tego dodatek do Chroma: http://codekiem.com/2012/02/24/apk-downloader/


2015.01.01 15:49 Piotrek

Jest dekompilator online: http://www.decompileandroid.com



ksywa:

tu wpisz cyfrę cztery: (to takie zabezpieczenie antyspamowe)

komentarze wulgarne albo co mi się nie spodobają będę kasował


powrot na strone glowna

RSS