# Android Applications Basics {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** ЁЯТм [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ЁЯРж [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} **Try Hard Security Group**
{% embed url="https://discord.gg/tryhardsecurity" %} *** ## Android Security Model **рджреЛ рдкрд░рддреЗрдВ рд╣реИрдВ:** * **OS**, рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рд░рдЦрддрд╛ рд╣реИред * **рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрд╡рдпрдВ**, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ **рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ** рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред ### UID Separation **рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ**ред рдпрд╣ рдРрдк рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ **рдРрдк рдХреЗрд╡рд▓ рдЕрдкрдиреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рд╕рд╛рдЭрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХреЗ**ред рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рдРрдк рд╕реНрд╡рдпрдВ, OS рдХреЗ рдХреБрдЫ рдШрдЯрдХ рдФрд░ рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдРрдк рдХреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред ### UID Sharing **рджреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕рдорд╛рди UID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ**ред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдбреЗрдЯрд╛ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ **рдирдХрд╛рд░рд╛** рдЬрд╛рддрд╛ рд╣реИред\ **рд╕рдорд╛рди UID рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рд╕рдорд╛рди `android:sharedUserId` рдорд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред** ### Sandboxing **Android Application Sandbox** рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ **рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЗ рддрд╣рдд рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ** рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдкрдиреА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдРрдк рдХрд╛ рдХреЛрдб рдЕрдиреНрдп рдРрдкреНрд╕ рд╕реЗ рдЕрд▓рдЧ-рдерд▓рдЧ рдЪрд▓рддрд╛ рд╣реИред\ Android 5.0(L) рд╕реЗ **SELinux** рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, SELinux рдиреЗ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ **рдЙрдирдХреЗ рдмреАрдЪ рдХреЗрд╡рд▓ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐рдпрд╛рдБ рдмрдирд╛рдИ**ред ### Permissions рдЬрдм рдЖрдк рдПрдХ **рдРрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИ**, рддреЛ рдРрдк **AndroidManifest.xml** рдлрд╝рд╛рдЗрд▓ рдореЗрдВ **`uses-permission`** рддрддреНрд╡реЛрдВ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣рд╛ рд╣реИред **uses-permission** рддрддреНрд╡ рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрдиреБрдорддрд┐ рдХреЗ рдирд╛рдо рдХреЛ **name** **attribute** рдХреЗ рдЕрдВрджрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ **maxSdkVersion** attribute рднреА рд╣реИ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЙрдЪреНрдЪ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред\ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рднреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ **рдбрд╛рдпрдирд╛рдорд┐рдХрд▓реА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ** рд▓реЗрдХрд┐рди рд╕рднреА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ **рдореИрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдШреЛрд╖рд┐рдд** рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдПрдХ рдРрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ **рдХреЗрд╡рд▓ рдЙрди рдРрдкреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдорддрд┐ рд╣реИ**ред\ рдПрдХ рдЕрдиреБрдорддрд┐ рддрддреНрд╡ рдореЗрдВ рддреАрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ: * рдЕрдиреБрдорддрд┐ рдХрд╛ **рдирд╛рдо** * **permission-group** attribute, рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред * **protection-level** рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдХреИрд╕реЗ рджреА рдЬрд╛рддреА рд╣реИрдВред рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: * **Normal**: рдЬрдм рдРрдк рдХреЗ рд▓рд┐рдП **рдХреЛрдИ рдЬреНрдЮрд╛рдд рдЦрддрд░реЗ рдирд╣реАрдВ рд╣реЛрддреЗ**ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ **рдЗрд╕реЗ рдордВрдЬреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ**ред * **Dangerous**: рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдорддрд┐ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдХреБрдЫ **рдЙрдЪреНрдЪ рдкрд╣реБрдВрдЪ** рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред **рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдордВрдЬреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ**ред * **Signature**: рдХреЗрд╡рд▓ **рдЙрд╕реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдРрдкреНрд╕** рдХреЛ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдШрдЯрдХ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рд╕рдмрд╕реЗ рдордЬрдмреВрдд рдкреНрд░рдХрд╛рд░ рд╣реИред * **SignatureOrSystem**: рдХреЗрд╡рд▓ **рдЙрд╕реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдРрдкреНрд╕** рдпрд╛ **рд╕рд┐рд╕реНрдЯрдо-рд╕реНрддрд░реАрдп рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдРрдкреНрд╕** рдХреЛ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред ## Pre-Installed Applications рдпреЗ рдРрдкреНрд╕ рдЖрдорддреМрд░ рдкрд░ **`/system/app`** рдпрд╛ **`/system/priv-app`** рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ **рдЕрдиреБрдХреВрд▓рд┐рдд** рд╣реЛрддреЗ рд╣реИрдВ (рдЖрдкрдХреЛ `classes.dex` рдлрд╝рд╛рдЗрд▓ рднреА рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ)ред рдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХрднреА-рдХрднреА рд╡реЗ **рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ** (рдЬреИрд╕реЗ рд░реВрдЯ)ред * рдЬреЛ **AOSP** (Android OpenSource Project) **ROM** рдХреЗ рд╕рд╛рде рд╢рд┐рдк рдХрд┐рдП рдЧрдП рд╣реИрдВ * рдбрд┐рд╡рд╛рдЗрд╕ **рдирд┐рд░реНрдорд╛рддрд╛** рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП * рд╕реЗрд▓ **рдлреЛрди рдкреНрд░рджрд╛рддрд╛** рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП (рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдЙрдирд╕реЗ рдЦрд░реАрджрд╛ рдЧрдпрд╛ рд╣реЛ) ## Rooting рдПрдХ рднреМрддрд┐рдХ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд░реВрдЯ рдПрдХреНрд╕реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдорддреМрд░ рдкрд░ **1 рдпрд╛ 2 рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рд╢реЛрд╖рдг** рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ **рдбрд┐рд╡рд╛рдЗрд╕** рдФрд░ **рд╕рдВрд╕реНрдХрд░рдг** рдХреЗ рд▓рд┐рдП **рд╡рд┐рд╢рд┐рд╖реНрдЯ** рд╣реЛрддреА рд╣реИрдВред\ рдПрдХ рдмрд╛рд░ рдЬрдм рд╢реЛрд╖рдг рдХрд╛рдо рдХрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рд▓рд┐рдирдХреНрд╕ `su` рдмрд╛рдЗрдирд░реА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ PATH env рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ `/system/xbin` рдХреА рддрд░рд╣ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм su рдмрд╛рдЗрдирд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ `su` рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ **рд░реВрдЯ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд** рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ **Superuser** рдФрд░ **SuperSU** (рдЬреЛ Google Play рд╕реНрдЯреЛрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ)ред {% hint style="danger" %} рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд░реВрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рдЦрддрд░рдирд╛рдХ рд╣реИ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдБрдЪрд╛ рд╕рдХрддреА рд╣реИред {% endhint %} ### ROMs рдпрд╣ **рдХрд╕реНрдЯрдо рдлрд░реНрдорд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ OS рдХреЛ рдмрджрд▓рдирд╛** рд╕рдВрднрд╡ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдкреБрд░рд╛рдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдврд╝рд╛рдирд╛, рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛ рдпрд╛ рдирд╡реАрдирддрдо рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред\ **OmniROM** рдФрд░ **LineageOS** рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рд╕реЗ рджреЛ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ **рдХрд╕реНрдЯрдо рдлрд░реНрдорд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд░реВрдЯ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ**ред **рдХреБрдЫ рдирд┐рд░реНрдорд╛рддрд╛** рдЕрдкрдиреЗ рдмреВрдЯрд▓реЛрдбрд░реНрд╕ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдирд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред ### Implications рдПрдХ рдмрд╛рд░ рдЬрдм рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд░реВрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдРрдк рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлреЛрди рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдБрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред ## Android Application Fundamentals - рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкреНрд░рд╛рд░реВрдк _APK рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк_ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ **ZIP рдлрд╝рд╛рдЗрд▓** рд╣реИ (рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ .zip рдореЗрдВ рдмрджрд▓рдХрд░, рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдХрд╛рд▓рд╛ рдФрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред - APK рд╕рд╛рдордЧреНрд░реА (рдкреВрд░реНрдг рдирд╣реАрдВ) - **AndroidManifest.xml** - resources.arsc/strings.xml - resources.arsc: рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдмрд╛рдЗрдирд░реА XMLред - res/xml/files\_paths.xml - META-INF/ - рдпрд╣реАрдВ рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдерд┐рдд рд╣реИ! - **classes.dex** - рдЗрд╕рдореЗрдВ рдбреЗрд▓рд╡рд┐рдХ рдмрд╛рдЗрдЯрдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдХрд▓рд┐рдд рдЬрд╛рд╡рд╛ (рдпрд╛ рдХреЛрдЯрд▓рд┐рди) рдХреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред - lib/ - рдЗрд╕рдореЗрдВ рдореВрд▓рднреВрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ CPU рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред - `armeabi`: ARM рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб - `armeabi-v7a`: ARMv7 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб - `x86`: X86 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб - `mips`: рдХреЗрд╡рд▓ MIPS рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб - assets/ - рдРрдк рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд┐рдз рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓рднреВрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ DEX рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА-рдХрднреА рдореИрд▓рд╡реЗрдпрд░ рд▓реЗрдЦрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред - res/ - рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ resources.arsc рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред ### **Dalvik & Smali** рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, **Java рдпрд╛ Kotlin** рдХрд╛ рдЙрдкрдпреЛрдЧ рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрд╕реНрдХрдЯреЙрдк рдРрдкреНрд╕ рдХреА рддрд░рд╣ JVM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдВрдбреНрд░реЙрдЗрдб рдЗрд╕ рдХреЛрдб рдХреЛ **Dalvik Executable (DEX) рдмрд╛рдЗрдЯрдХреЛрдб** рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рдбреЗрд▓рд╡рд┐рдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЗрд╕ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рддреА рдереА, рд▓реЗрдХрд┐рди рдЕрдм, рдирдП рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рд░рдирдЯрд╛рдЗрдо (ART) рдЗрд╕рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, **Smali** рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ DEX рдмрд╛рдЗрдЯрдХреЛрдб рдХрд╛ рдорд╛рдирд╡-рдкрдардиреАрдп рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рдХреЗ рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдХреА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ Smali рдФрд░ baksmali рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдбрд┐рд╕рдЕрд╕реЗрдВрдмрд▓реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВред ## Intents Intents рдПрдВрдбреНрд░реЙрдЗрдб рдРрдкреНрд╕ рдХреЗ рдмреАрдЪ рдЙрдирдХреЗ рдШрдЯрдХреЛрдВ рдпрд╛ рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рд╕рд╛рдзрди рд╣реИрдВред рдпреЗ рд╕рдВрджреЗрд╢ рд╡рд╕реНрддреБрдПрдВ рдРрдкреНрд╕ рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд▓реЗ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЬреИрд╕реЗ HTTP рд╕рдВрдЪрд╛рд░ рдореЗрдВ GET/POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдПрдХ Intent рдореВрд▓ рд░реВрдк рд╕реЗ **рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИ**ред Intents **рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ рдпрд╛ рдРрдкреНрд╕ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд** рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, **рдпрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рднреЗрдЬреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ**ред\ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП Intent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: * рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдРрдк рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЦреЛрд▓рдирд╛ * рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдРрдкреНрд╕ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ * рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн, рд░реЛрдХрдиреЗ рдФрд░ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП * ContentProviders рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП * рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдпрджрд┐ рдХрдордЬреЛрд░ рд╣реИ, рддреЛ **Intents рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ**ред ### Intent-Filter **Intent Filters** рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ **рдХреИрд╕реЗ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐, рд╕реЗрд╡рд╛, рдпрд╛ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рд░рд┐рд╕реАрд╡рд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ Intents рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ**ред рдореВрд▓ рд░реВрдк рд╕реЗ, рд╡реЗ рдЗрди рдШрдЯрдХреЛрдВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдХреМрди рд╕реЗ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡реЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдлрд╝рд┐рд▓реНрдЯрд░реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рд╕реНрдерд╛рди **AndroidManifest.xml рдлрд╝рд╛рдЗрд▓** рдХреЗ рднреАрддрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рд░рд┐рд╕реАрд╡рд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдХреЛрдбрд┐рдВрдЧ рдХрд░рдирд╛ рднреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред Intent Filters рд╢реНрд░реЗрдгрд┐рдпреЛрдВ, рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░реЛрдВ рд╕реЗ рдмрдиреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╕реЗрдЯрдЕрдк рдШрдЯрдХреЛрдВ рдХреЛ рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯ Intents рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдШреЛрд╖рд┐рдд рдорд╛рдирджрдВрдбреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдПрдВрдбреНрд░реЙрдЗрдб рдШрдЯрдХреЛрдВ (рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ/рд╕реЗрд╡рд╛рдПрдБ/рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рддрд╛/рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рд░рд┐рд╕реАрд╡рд░реНрд╕) рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рдЙрдирдХреА рджреГрд╢реНрдпрддрд╛ рдпрд╛ **рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рддрд┐** рд╣реИред рдПрдХ рдШрдЯрдХ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕реЗ **`exported`** рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде **`true`** рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдПрдХ Intent Filter рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдЬреА рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╡реЗ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рди рдХрд░реЗрдВред рдпрд╣ рдЙрдирдХреЗ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ **`exported`** рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ **`false`** рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдЗрди рдШрдЯрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд░рдХреЗред **`permission`** attribute рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдЙрди рдРрдкреНрд╕ рдХреЛ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХреЗ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рдЗрд╕рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред ```java ``` ### Implicit Intents Intents рдХреЛ Intent рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: ```java Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); ``` The **Action** of the previously declared intent is **ACTION\_SEND** and the **Extra** is a mailto **Uri** (the Extra if the extra information the intent is expecting). рдпрд╣ рдЗрд░рд╛рджрд╛ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдХреЗ рдЕрдВрджрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: ```xml ``` An intent-filter рдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП **action**, **data** рдФрд░ **category** рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред "Intent resolution" рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдХреМрди рд╕рд╛ рдРрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ **priority attribute** рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕реЗ i**ntent-filter declaration** рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ **рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛** рдЪрдпрдирд┐рдд рд╣реЛрдЧрд╛ред рдпрд╣ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ -1000 рдФрд░ 1000 рдХреЗ рдмреАрдЪ рд╕реЗрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди `SYSTEM_HIGH_PRIORITY` рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ **conflict** рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ "choser" Window рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ **рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХреЗ**ред ### Explicit Intents рдПрдХ explicit intent рдЙрд╕ рд╡рд░реНрдЧ рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдпрд╣ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ: ```java Intent downloadIntent = new (this, DownloadService.class): ``` рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреВрд░реНрд╡ рдореЗрдВ рдШреЛрд╖рд┐рдд рдЗрд░рд╛рджреЗ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: ```java Intent intent = new Intent(); intent.setClassName("com.other.app", "com.other.app.ServiceName"); context.startService(intent); ``` ### Pending Intents рдпреЗ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ **рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдУрд░ рд╕реЗ рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд░рдиреЗ** рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЖрдкрдХреЗ рдРрдк рдХреА рдкрд╣рдЪрд╛рди рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рдПрдХ Pending Intent рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП **рдПрдХ рдЗрд░рд╛рджрд╛ рдФрд░ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП**ред рдпрджрд┐ **рдШреЛрд╖рд┐рдд рдЗрд░рд╛рджрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ** (рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдЗрд░рд╛рджрд╛ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рддреЛ **рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдШреЛрд╖рд┐рдд рдХреНрд░рд┐рдпрд╛ рдХреЛ** рдкреАрдбрд╝рд┐рдд рдРрдк рдХреА рдУрд░ рд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, **рдпрджрд┐ рдХреЛрдИ рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ**, рддреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдк **рдкреАрдбрд╝рд┐рдд рдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рднреА рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХреЗрдЧрд╛**ред ### Broadcast Intents рдкрд┐рдЫрд▓реЗ рдЗрд░рд╛рджреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдРрдк рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдЗрд░рд╛рджреЗ **рдХрдИ рдРрдк рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ**ред рд╣рд╛рд▓рд╛рдБрдХрд┐, API рд╕рдВрд╕реНрдХрд░рдг 14 рд╕реЗ, рдпрд╣ **рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдРрдк рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ** Intent.set Package рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рднреЗрдЬрддреЗ рд╕рдордп **рдПрдХ рдЕрдиреБрдорддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ**ред рд░рд┐рд╕реАрд╡рд░ рдРрдк рдХреЛ рдЙрд╕ рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдХреЗ **рджреЛ рдкреНрд░рдХрд╛рд░** рд╣реЛрддреЗ рд╣реИрдВ: **рд╕рд╛рдорд╛рдиреНрдп** (рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕) рдФрд░ **рдХреНрд░рдордмрджреНрдз** (рд╕рд┐рдВрдХреНрд░реЛрдирд╕)ред **рдХреНрд░рдо** рд░рд┐рд╕реАрд╡рд░ рддрддреНрд╡ рдХреЗ **рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛** рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред **рдкреНрд░рддреНрдпреЗрдХ рдРрдк рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕, рд░рд┐рд▓реЗ рдпрд╛ рдбреНрд░реЙрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИред** рдЖрдк `Context` рдХреНрд▓рд╛рд╕ рд╕реЗ `sendBroadcast(intent, receiverPermission)` рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ **рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ** **рднреЗрдЬрдирд╛** рд╕рдВрднрд╡ рд╣реИред\ рдЖрдк **`LocalBroadCastManager`** рд╕реЗ **`sendBroadcast`** рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ **рд╕рдВрджреЗрд╢ рдХрднреА рднреА рдРрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЬрд╛рддрд╛**ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд░рд┐рд╕реАрд╡рд░ рдШрдЯрдХ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред ### Sticky Broadcasts рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ **рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рдВрдмреЗ рд╕рдордп рдмрд╛рдж рднреА рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ**ред\ рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ API рд╕реНрддрд░ 21 рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ **рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ**ред\ **рдпреЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдирд┐рдлрд╝ рдХрд░рдиреЗ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред** рдпрджрд┐ рдЖрдк "sticky" рд╢рдмреНрдж рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреИрд╕реЗ **`sendStickyBroadcast`** рдпрд╛ **`sendStickyBroadcastAsUser`** рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ **рдкреНрд░рднрд╛рд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ**ред ## Deep links / URL schemes Android рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, **рдбреАрдк рд▓рд┐рдВрдХ** рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдХреНрд░рд┐рдпрд╛ (Intent) рдХреЛ рд╕реАрдзреЗ рдПрдХ URL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ **URL рд╕реНрдХреАрдо** рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдПрдХ Android рдбрд┐рд╡рд╛рдЗрд╕ рдЗрд╕ рд╕реНрдХреАрдо рдХреЗ рд╕рд╛рде **рдПрдХ URL рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ**, рддреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рднреАрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдиреНрдЪ рд╣реЛрддреА рд╣реИред рд╕реНрдХреАрдо рдХреЛ **`AndroidManifest.xml`** рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: ```xml [...] [...] ``` рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдпреЛрдЬрдирд╛ `exampleapp://` рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ **`category BROWSABLE`** рднреА рд╣реИ) рдлрд┐рд░, рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдЖрдк **host** рдФрд░ **path** рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: ```xml ``` рд╡реЗрдм рд╕реЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреИрд╕реЗ: ```xml click here click here ``` In order to find the **code that will be executed in the App**, go to the activity called by the deeplink and search the function **`onNewIntent`**. Learn how to [call deep links without using HTML pages](./#exploiting-schemes-deep-links). ## AIDL - Android Interface Definition Language The **Android Interface Definition Language (AIDL)** is designed for facilitating communication between client and service in Android applications through **interprocess communication** (IPC). Since accessing another process's memory directly is not permitted on Android, AIDL simplifies the process by marshalling objects into a format understood by the operating system, thereby easing communication across different processes. ### Key Concepts - **Bound Services**: рдпреЗ рд╕реЗрд╡рд╛рдПрдБ IPC рдХреЗ рд▓рд┐рдП AIDL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рдпрд╛ рдШрдЯрдХ рдПрдХ рд╕реЗрд╡рд╛ рд╕реЗ рдмрдВрдз рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реЗрд╡рд╛ рдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ `onBind` рд╡рд┐рдзрд┐ рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕реЗ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред - **Messenger**: рдПрдХ рдмрдВрдзреА рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реБрдП, Messenger IPC рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ `onBind` рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдпрд╛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдзреНрдпрд╛рдирдкреВрд░реНрд╡рдХ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред - **Binder**: рд╣рд╛рд▓рд╛рдВрдХрд┐ AIDL рдХреЗ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдХрд╛рд░рдг Binder рд╡рд░реНрдЧ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдкрдпреЛрдЧ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдпрд╣ рд╕рдордЭрдирд╛ рдлрд╛рдпрджреЗрдордВрдж рд╣реИ рдХрд┐ Binder рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдореЗрдореЛрд░реА рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХрд░реНрдиреЗрд▓-рд╕реНрддрд░реАрдп рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЖрдЧреЗ рдХреА рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрд╕рд╛рдзрди рдЙрдкрд▓рдмреНрдз рд╣реИ [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8). ## Components These include: **Activities, Services, Broadcast Receivers and Providers.** ### Launcher Activity and other activities In Android apps, **activities** are like screens, showing different parts of the app's user interface. An app can have many activities, each one presenting a unique screen to the user. The **launcher activity** is the main gateway to an app, launched when you tap the app's icon. It's defined in the app's manifest file with specific MAIN and LAUNCHER intents: ```markup ``` Not all apps need a launcher activity, especially those without a user interface, like background services. Activities can be made available to other apps or processes by marking them as "exported" in the manifest. This setting allows other apps to start this activity: ```markdown ``` рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд┐рд╕реА рдЕрдиреНрдп рдРрдк рд╕реЗ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЪрд┐рдВрддрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ, рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓реАрдХ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЬреАрд╡рдирдЪрдХреНрд░ **onCreate рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ**, UI рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ред ### рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрд╡рд░реНрдЧ Android рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдПрдХ рдРрдк рдХреЗ рдкрд╛рд╕ [Application](https://developer.android.com/reference/android/app/Application) рд╡рд░реНрдЧ рдХрд╛ **рдЙрдкрд╡рд░реНрдЧ** рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рдЬрдм рдРрд╕рд╛ рдЙрдкрд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдРрдк рдХреЗ рднреАрддрд░ рдкрд╣рд▓реА рдХрдХреНрд╖рд╛ рдмрди рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ **`attachBaseContext`** рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЗрд╕реЗ **`onCreate`** рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реЗрдЯрдЕрдк рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрдн рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред ```java public class MyApp extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); // Initialization code here } @Override public void onCreate() { super.onCreate(); // More initialization code } } ``` ### Services [Services](https://developer.android.com/guide/components/services) **рдкреГрд╖реНрдарднреВрдорд┐ рдСрдкрд░реЗрдЯрд┐рд╡реНрд╕** рд╣реИрдВ рдЬреЛ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдпреЗ рдХрд╛рд░реНрдп рддрдм рднреА рдЪрд▓рддреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реЗрд╡рд╛рдПрдБ **рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди** рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рд╕реЗрд╡рд╛рдПрдБ рдмрд╣реБрдкрд░рдХрд╛рд░реА рд╣реИрдВ; рдЗрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ **Intents** рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм `startService` рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ `onStart` рд╡рд┐рдзрд┐ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рддрдм рддрдХ рдЪрд▓рддреА рд░рд╣рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ `stopService` рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреА рднреВрдорд┐рдХрд╛ рдПрдХ рд╕рдХреНрд░рд┐рдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рддреЛ `bindService` рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реЗрд╡рд╛ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `onBind` рд╡рд┐рдзрд┐ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реБрдПред рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреГрд╖реНрдарднреВрдорд┐ рд╕рдВрдЧреАрдд рдкреНрд▓реЗрдмреИрдХ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбреЗрдЯрд╛ рдлрд╝реЗрдЪрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдРрдк рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрд╡рд╛рдУрдВ рдХреЛ **рдирд┐рд░реНрдпрд╛рдд** рдХрд░рдХреЗ рдПрдХ рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП Android Manifest рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: ```xml ``` ### Broadcast Receivers **Broadcast receivers** рдПрдХ рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рд┐рд╕реНрдирд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдорд╛рди рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдРрдк **рджреЛ рдкреНрд░рдореБрдЦ рддрд░реАрдХреЛрдВ** рд╕реЗ **рдПрдХ рд░рд┐рд╕реАрд╡рд░** рдХреЛ **рд░рдЬрд┐рд╕реНрдЯрд░** рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдРрдк рдХреЗ **Manifest** рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдРрдк рдХреЗ рдХреЛрдб рдореЗрдВ **`registerReceiver`** API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ **рдбрд╛рдпрдирд╛рдорд┐рдХрд▓реА**ред Manifest рдореЗрдВ, рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдХреЛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдбрд╛рдпрдирд╛рдорд┐рдХрд▓реА рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд┐рдП рдЧрдП рд░рд┐рд╕реАрд╡рд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реЗрд╢рди рдХреЗ рд╕рдордп рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред **Intent filters** рджреЛрдиреЛрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реЗрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдПрдХ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░рд┐рд╕реАрд╡рд░ рдХрд╛ **`onReceive`** рдореЗрдердб рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдРрдк рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдХрдо рдмреИрдЯрд░реА рдЕрд▓рд░реНрдЯ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ред рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ **рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕** рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рд░рд┐рд╕реАрд╡рд░реНрд╕ рддрдХ рдмрд┐рдирд╛ рдХреНрд░рдо рдХреЗ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ, рдпрд╛ **рд╕рд┐рдВрдХреНрд░реЛрдирд╕**, рдЬрд╣рд╛рдБ рд░рд┐рд╕реАрд╡рд░реНрд╕ рд╕реЗрдЯ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдРрдк рдХреЛ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд░рд┐рд╕реАрд╡рд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕рдХреА рдХреНрд▓рд╛рд╕ рдореЗрдВ **`onReceive`** рдореЗрдердб рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВред рдЗрд╕ рдореЗрдердб рдХрд╛ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд Intent рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд░рд┐рд╕реАрд╡рд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ **Ordered Broadcasts** рдореЗрдВ, рдЬреЛ Intent рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдпрд╛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред ### Content Provider **Content Providers** рдРрдкреНрд╕ рдХреЗ рдмреАрдЪ **рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛** рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП **рдЕрдиреБрдорддрд┐рдпреЛрдВ** рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдорд╣рддреНрд╡ рдкрд░ рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВред рд╡реЗ рдРрдкреНрд╕ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, рдпрд╛ рд╡реЗрдм рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдорддрд┐рдпрд╛рдБ, рдЬреИрд╕реЗ **`readPermission`** рдФрд░ **`writePermission`**, рдкрд╣реБрдБрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдРрдк рдХреЗ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ **`grantUriPermission`** рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдкрд╣реБрдБрдЪ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП `path`, `pathPrefix`, рдФрд░ `pathPattern` рдЬреИрд╕реЗ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ SQL рдЗрдВрдЬреЗрдХреНрд╢рдиред Content Providers рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ: `insert()`, `update()`, `delete()`, рдФрд░ `query()`, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред **FileProvider**, рдПрдХ рд╡рд┐рд╢реЗрд╖ Content Provider, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдЗрд╕реЗ рдРрдк рдХреЗ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ `android:exported` рдФрд░ `android:resource` рджреНрд╡рд╛рд░рд╛ рдлрд╝реЛрд▓реНрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред FileProvider рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдореИрдирд┐рдлреЗрд╕реНрдЯ рдШреЛрд╖рдгрд╛: ```xml ``` рдФрд░ `filepaths.xml` рдореЗрдВ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг: ```xml ``` For further information check: - [Android Developers: Content Providers](https://developer.android.com/guide/topics/providers/content-providers) - [Android Developers: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing) ## WebViews WebViews Android рдРрдкреНрд╕ рдХреЗ рдЕрдВрджрд░ **рдорд┐рдиреА рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░** рдХреА рддрд░рд╣ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡реЗрдм рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред рдЗрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рдорд╛рди рдЬреЛрдЦрд┐рдореЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ **рд╕реЗрдЯрд┐рдВрдЧреНрд╕** рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ **рдЗрди рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ** рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред Android рджреЛ рдореБрдЦреНрдп WebView рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: - **WebViewClient** рдмреБрдирд┐рдпрд╛рджреА HTML рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди JavaScript рдЕрд▓рд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛, рдЬреЛ XSS рд╣рдорд▓реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред - **WebChromeClient** рдкреВрд░реНрдг Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрднрд╡ рдХреА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ WebView рдмреНрд░рд╛рдЙрдЬрд╝рд░ **рдХреБрдХреАрдЬрд╝** рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдореБрдЦреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде **рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ**ред рд╕рд╛рдордЧреНрд░реА рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ````loadUrl````, ````loadData````, рдФрд░ ````loadDataWithBaseURL```` рдЬреИрд╕реЗ рддрд░реАрдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпреЗ URLs рдпрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ **рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд** рд╣реИрдВред рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ ````WebSettings```` рдХреНрд▓рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ````setJavaScriptEnabled(false)```` рдХреЗ рд╕рд╛рде JavaScript рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ XSS рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИред JavaScript "Bridge" Java рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ JavaScript рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП Android 4.2 рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ ````@JavascriptInterface```` рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рд╛рдордЧреНрд░реА рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ (````setAllowContentAccess(true)````) WebViews рдХреЛ Content Providers рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЬреЛрдЦрд┐рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рд╛рдордЧреНрд░реА URLs рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ред рдлрд╝рд╛рдЗрд▓ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: - рдлрд╝рд╛рдЗрд▓ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ (````setAllowFileAccess(false)````) рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреБрдЫ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдЧреИрд░-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдВред ## Other App Components and Mobile Device Management ### **Digital Signing of Applications** - **Digital signing** Android рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ **рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд** рд╣реИрдВред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдРрдк рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рдордп рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдРрдкреНрд╕ **рд╕реНрд╡рдпрдВ-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдпрд╛ рдмрд╛рд╣рд░реА CA рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рдд** рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдРрдк рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рджреМрд░рд╛рди рдмрд┐рдирд╛ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХреЗ рд░рд╣реЗред ### **App Verification for Enhanced Security** - **Android 4.2** рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, **Verify Apps** рдирд╛рдордХ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдРрдкреНрд╕ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ **рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛** рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдРрдкреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдкреНрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд░реЛрдХ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдмрдврд╝рддреА рд╣реИред ### **Mobile Device Management (MDM)** - **MDM рд╕рдорд╛рдзрд╛рди** рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП **рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рд╕реБрд░рдХреНрд╖рд╛** рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ **Device Administration API** рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЙрдиреНрд╣реЗрдВ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Android рдРрдк рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ **рдкрд╛рд╕рд╡рд░реНрдб рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛**, **рд╕реНрдЯреЛрд░реЗрдЬ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд░рдирд╛**, рдФрд░ **рджреВрд░рд╕реНрде рдбреЗрдЯрд╛ рдорд┐рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛** рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╡реНрдпрд╛рдкрдХ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред ```java // Example of enforcing a password policy with MDM DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName adminComponent = new ComponentName(context, AdminReceiver.class); if (dpm.isAdminActive(adminComponent)) { // Set minimum password length dpm.setPasswordMinimumLength(adminComponent, 8); } ``` **рдЯреНрд░рд╛рдИ рд╣рд╛рд░реНрдб рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдЧреНрд░реБрдк**
{% embed url="https://discord.gg/tryhardsecurity" %} {% hint style="success" %} AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ * [**рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдПрдБ**](https://github.com/sponsors/carlospolop) рджреЗрдЦреЗрдВ! * **рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЬреБрдбрд╝реЗрдВ** ЁЯТм [**Discord рд╕рдореВрд╣**](https://discord.gg/hRep4RUj7f) рдпрд╛ [**рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣**](https://t.me/peass) рдпрд╛ **рд╣рдореЗрдВ** **Twitter** ЁЯРж [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** рдкрд░ рдлреЙрд▓реЛ рдХрд░реЗрдВред** * **рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдФрд░** [**HackTricks**](https://github.com/carlospolop/hacktricks) рдФрд░ [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) рдЧрд┐рдЯрд╣рдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ PR рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред
{% endhint %}