2012-03-22 13 views
7

Android przechowuje swoje programy w formacie APK, który jest zmodyfikowaną wersją ZIP/JAR.W jaki sposób działa Android Store i uruchamia programy?

Po zainstalowaniu tych plików APK są one przechowywane w /system/app/$APKNAME.apk.

Niektóre aplikacje w tym katalogu również mają plik $ APKNAME.obex.

tych plików APK zawierać niektóre z odłogowania

META-INF 
    MANIFEST.MF 
    CERT.RSA 
    CERT.SF 
SHA1-Digest 
res 
AndroidManifest.xml 
classes.dex 
resources.arsc 

Więc to, co chcę wiedzieć, jakie są .obex pliki i są androidy Program rozpakowane z APK/zip/JAR w czasie wykonywania i jak?

+0

Wygląda na to, że APK to zupełnie jak JAR. To znaczy, nawet nie zmodyfikowany ZIP - zwykły ZIP, ale z konkretnymi plikami w poszczególnych miejscach w nim. – cHao

+0

Należy pamiętać, że obex jest więcej niż tylko dekompresji, są one również zoptymalizowane i zweryfikowane. Powoduje to, że weryfikator musi wykonywać mniej pracy i nie musisz wykonywać tak dużej optymalizacji w czasie wykonywania (nieobowiązkowo musisz jeszcze zrobić). –

+0

@CHao OK, naprawdę chcę poznać proces instalacji pakietu APK do uruchomienia/uruchomienia. – zeitue

Odpowiedz

2

Sposób, w jaki to działa, jest całkiem interesujący i daje kilka kluczowych informacji na temat modelu uruchomieniowego systemu Android. Pierwszą rzeczą, którą polecam oglądać, jest Dalvik VM internals, jeśli planujesz zrobić jakąkolwiek poważną ilość rzeczy systemowych z Androidem. (Chociaż jest to oczywiście stare.) Teraz, gdy menedżer pakietów Androida otrzyma intencję, która wymaga uruchomienia nowej aplikacji, uruchamia nową maszynę wirtualną z już działającego procesu zygoty. Jest to w zasadzie technika, która pozwala systemowi uzyskać wiele ładnych właściwości pamięci (współużytkowanie odwzorowanych stron itp.). Następnie system ładuje do pliku (potencjalnie wstępnie zoptymalizowanego i zweryfikowanego), aby mógł go uruchomić. Powinieneś przeczytać dokument this, który powie Ci sporo o tym, jak to działa. (Pomoże ci też prawdopodobnie wątek this.) Należy pamiętać, że ponieważ wszystkie systemy są różne - na przykład, jeśli jesteś na nowej architekturze, nie otrzymasz wsparcia JIT, chyba że wyraźnie to napiszesz! - nie możesz wiedzieć, na pewno jak dalvik załaduje kod, aby uruchomić twoją aplikację.

Powiązane problemy