Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android OS Architecture

Android OS Architecture

Overview of the Android Architecture layers and components:
- Kernel layer
- Hardware abstraction layer
- Native libraries
- Android Runtime layer
- Application framework layer
- Application layer

In addition to it during this talk, we will talk about the difference between JVM, Dalvik and ART; Linux and Android security model and trends of Android.

Alex Zhukovich

March 29, 2018
Tweet

More Decks by Alex Zhukovich

Other Decks in Technology

Transcript

  1. Android OS Architecture
    @Alex_Zhukovich

    View Slide

  2. 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

    View Slide

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

    View Slide

  4. Android versions















    View Slide

  5. Android Architecture

    View Slide

  6. View Slide

  7. Kernel level

    View Slide

  8. Hardware abstraction layer

    View Slide

  9. Native libraries

    View Slide

  10. Android Runtime

    View Slide

  11. Application framework

    View Slide

  12. Application layer

    View Slide

  13. View Slide

  14. Dalvik vs ART

    View Slide

  15. Why do we need a Virtual Machine?
    VM

    View Slide

  16. 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)

    View Slide

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

    View Slide

  18. ART
    Benefits:



    Drawbacks:


    View Slide

  19. Security

    View Slide

  20. UID/GID - Linux

    View Slide

  21. UID/GID - Linux

    View Slide

  22. UID/GID - Android



    https://android.googlesource.com/platform/frameworks/base/+/master/data/etc/platform.xml

    View Slide

  23. Resources

    View Slide

  24. Sharing data and resources between applications

    View Slide

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

    View Slide

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

    View Slide

  27. SharedPreferences isolation

    View Slide

  28. SharedPreferences isolation
    /data/data/package_name/shared_prefs/

    View Slide

  29. /data/data/package_name/shared_prefs/prefs




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

    View Slide

  30. Database isolation
    /data/data/package_name/databases/

    View Slide

  31. Trends

    View Slide

  32. View Slide

  33. Q&A
    1.
    2.

    View Slide