Slide 1

Slide 1 text

Android OS Architecture @Alex_Zhukovich

Slide 2

Slide 2 text

https://en.wikipedia.org/wiki/Andy_Rubin https://www.gv.com/team/rich-miner http://www.seriousbiz.com https://andro4all.com/2018/03/creadores-android-actualidad

Slide 3

Slide 3 text

https://en.wikipedia.org/wiki/Google_logo https://opensource.org https://en.wikipedia.org/wiki/Open_Handset_Alliance

Slide 4

Slide 4 text

Android versions ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

Slide 5

Slide 5 text

Android Architecture

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Kernel level

Slide 8

Slide 8 text

Hardware abstraction layer

Slide 9

Slide 9 text

Native libraries

Slide 10

Slide 10 text

Android Runtime

Slide 11

Slide 11 text

Application framework

Slide 12

Slide 12 text

Application layer

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Dalvik vs ART

Slide 15

Slide 15 text

Why do we need a Virtual Machine? VM

Slide 16

Slide 16 text

Compilation JVM vs DVM Java Compiler (javac) Java Source Code (*.java) Java Bytecode (*.class) Java Virtual Machine Java Source Code (*.java) Java Bytecode (*.class) Dalvik Virtual Machine Dalvik Bytecode (*.dex) DEX Compiler Java Compiler (javac)

Slide 17

Slide 17 text

Dalvik (Just In Time) vs ART (Ahead of Time) Installing Run Running... Compile Installing Run Running... Compile

Slide 18

Slide 18 text

ART Benefits: ● ● ● Drawbacks: ● ●

Slide 19

Slide 19 text

Security

Slide 20

Slide 20 text

UID/GID - Linux

Slide 21

Slide 21 text

UID/GID - Linux

Slide 22

Slide 22 text

UID/GID - Android https://android.googlesource.com/platform/frameworks/base/+/master/data/etc/platform.xml

Slide 23

Slide 23 text

Resources

Slide 24

Slide 24 text

Sharing data and resources between applications

Slide 25

Slide 25 text

Sharing data and resources between applications android:sharedUserId="com.example.test.sharedUID"

Slide 26

Slide 26 text

Sharing data and resources between applications android:sharedUserId="com.example.test.sharedUID"

Slide 27

Slide 27 text

SharedPreferences isolation

Slide 28

Slide 28 text

SharedPreferences isolation /data/data/package_name/shared_prefs/

Slide 29

Slide 29 text

/data/data/package_name/shared_prefs/prefs val sharedPreferences = getSharedPreferences( "prefs", Context.MODE_PRIVATE) sharedPreferences .edit() .putInt( "theme", 0) .apply()

Slide 30

Slide 30 text

Database isolation /data/data/package_name/databases/

Slide 31

Slide 31 text

Trends

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Q&A 1. 2.