co jest w pliku apk

0

Piszę aplikację na Androida, załóżmy, że jest tam jedna Activity w której użyłem Async Task oraz ArrayListy oraz użyłem jakiejś metody z Kotlinowych kolekcji.

Moje pytanie jest takie - oczywiste jest że kod który napisałem w mojej aplikacji jest w pliku apk. Ale co poza "moim" kodem jest w apk? Czy te podlinkowane powyżej kawałki kodu też się znajdują w tym pliku apk? Czy raczej jest to kod już dostępny na docelowym urządzeniu, a aplikacja w jakiś magiczny sposób się do tego podłącza?

2

No żadna tajna wiedza to nie jest. Poczytaj, to się wszystkiego dowiesz: http://www.ryantzj.com/android-applicationpackage-apk-structure-part-1.html

2

Z tego, co kojarzę APK to po prostu pliki ZIP (podobnie jak JAR, pliki Office i wiele innych formatów). Możesz sobie to otworzyć w dowolnej aplikacji do archiwów.

1

Ale nie przeczytaliście nawet mojego pytania.

Pytam o to jak to się dzieje że apka wie z jakieś wersji Activity korzysta, którą metodę z Collections weźmie?

Czy apka używa jakiegoś kodu który "leży" na smartfonie?

1

Czysto Androidowe zależności są już wgrane w telefon, tak samo standardowe klasy z Java 7. Wszystko co sobie dodajesz sobie ręcznie jako zależności jest raczej wrzucane do apk, aczkolwiek od kompilatora i na przykład proguarda lub R8 po optymalizacjach może nieużywany kod zniknąć. Najlepiej sobie otworzyć APK z poziomu Android Studio i przejrzeć dexa z kodem w apk wtedy zobaczysz wszystkie klasy wrzucone do apk.

3
Ja Wnie napisał(a):

Czy apka używa jakiegoś kodu który "leży" na smartfonie?

No to chyba oczywiste, że korzysta z api systemowego. To tak samo, jak jar na pc, to jdk go uruchamia. Analogicznie na Androidzie jest ART, czyli (w uproszczeniu) implementacja jdk stworzona przez Google.

0

Zadałem pytanie, nie ma rzeczy obiektywnie oczywistych. Pytam bo nie wiem, dla mnie to nie jest oczywiste.

Co to jest API systemowe? Jakiś przykład w przypadku który podałem w pierwszym poście?

Jakiś inny lepszy przykład?

1

Tutaj masz to w miarę łopatologiczne rozrysowane. https://developer.android.com/guide/platform

1
Ja Wnie napisał(a):

Czy raczej jest to kod już dostępny na docelowym urządzeniu, a aplikacja w jakiś magiczny sposób się do tego podłącza?

Zawsze (od 70 lat) aplikacja / program użytkowy jest wykonywany w środowisku JAKIEGOŚ kod już siedzącego w urządzeniu. Pytanie jakie są proporcje, czy mały loader+jądro systemu i wielki program, czy jak w androidzie na odwrót: ogromne środowisko i malutka aplikacja.

Zwłaszcza przemieszczenie się ze słowa "program" na "aplikacja" (a prawidłowa nazwa to "aplikacja android", "aplikacja Visual Basic") podkreśla niezdolność do życia bez środowiska zewnętrznego.

2

Wszystkie 3 klasy Activity, AsyncTask oraz ArrayList są już na telefonie.

Ogólnie wejdź tutaj i wybierz minimalne API jakie chcesz wspierać: https://developer.android.com/reference/classes

Tutaj jest spis wszystkiego co powinieneś mieć z defaultu na telefonie, ta lista zawiera także standardowe biblioteki Javy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1