mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-13 23:02:57 +00:00
393 lines
57 KiB
Markdown
393 lines
57 KiB
Markdown
# Android Applications Basics
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## 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 <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
|
|
|
|
- рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкреНрд░рд╛рд░реВрдк _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`** attribute рдХреЛ **`false`** рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
|
|
|
|
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдЗрди рдШрдЯрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд░рдХреЗред **`permission`** attribute рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдЙрди рдРрдкреНрд╕ рдХреЛ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХреЗ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рдЗрд╕рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
|
|
```java
|
|
<activity android:name=".MyActivity" android:exported="false">
|
|
<!-- Intent filters go here -->
|
|
</activity>
|
|
```
|
|
### 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
|
|
<activity android:name="ShareActivity">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
</activity>
|
|
```
|
|
An intent-filter рдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП **action**, **data** рдФрд░ **category** рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
|
|
|
|
"Intent resolution" рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдХреМрди рд╕рд╛ рдРрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ **priority attribute** рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕реЗ i**ntent-filter declaration** рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ **рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛** рдЪрдпрдирд┐рдд рд╣реЛрдЧрд╛ред рдпрд╣ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ -1000 рдФрд░ 1000 рдХреЗ рдмреАрдЪ рд╕реЗрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди `SYSTEM_HIGH_PRIORITY` рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ **conflict** рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ "choser" Window рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ **рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХреЗ**ред
|
|
|
|
### Explicit Intents
|
|
|
|
рдПрдХ рд╕реНрдкрд╖реНрдЯ 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.setPackage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред
|
|
|
|
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рднреЗрдЬрддреЗ рд╕рдордп **рдПрдХ рдЕрдиреБрдорддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ**ред рд░рд┐рд╕реАрд╡рд░ рдРрдк рдХреЛ рдЙрд╕ рдЕрдиреБрдорддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
|
|
|
|
рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдХреЗ **рджреЛ рдкреНрд░рдХрд╛рд░** рд╣реИрдВ: **рд╕рд╛рдорд╛рдиреНрдп** (рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕) рдФрд░ **рдХреНрд░рдордмрджреНрдз** (рд╕рд┐рдВрдХреНрд░реЛрдирд╕)ред **рдХреНрд░рдо** рд░рд┐рд╕реАрд╡рд░ рддрддреНрд╡ рдХреЗ **рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛** рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред **рдкреНрд░рддреНрдпреЗрдХ рдРрдк рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд, рдкреБрдирдГ рдкреНрд░рд╕рд╛рд░рд┐рдд рдпрд╛ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред**
|
|
|
|
рдЖрдк `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
|
|
[...]
|
|
<activity android:name=".MyActivity">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
<data android:scheme="examplescheme" />
|
|
</intent-filter>
|
|
[...]
|
|
```
|
|
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдпреЛрдЬрдирд╛ `examplescheme://` рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ **`рд╢реНрд░реЗрдгреА BROWSABLE`** рднреА рд╣реИ)
|
|
|
|
рдлрд┐рд░, рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВ, рдЖрдк **рд╣реЛрд╕реНрдЯ** рдФрд░ **рдкрде** рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
|
|
```xml
|
|
<data android:scheme="examplescheme"
|
|
android:host="example"
|
|
/>
|
|
```
|
|
рд╡реЗрдм рд╕реЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреИрд╕реЗ:
|
|
```xml
|
|
<a href="examplescheme://example/something">click here</a>
|
|
<a href="examplescheme://example/javascript://%250dalert(1)">click here</a>
|
|
```
|
|
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
|
|
<activity android:name=".LauncherActivity">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
</activity>
|
|
```
|
|
рдирд╣реАрдВ рд╕рднреА рдРрдкреНрд╕ рдХреЛ рдПрдХ рд▓реЙрдиреНрдЪрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд┐рдирд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╕реЗрд╡рд╛рдПрдБред
|
|
|
|
рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрдиреНрдп рдРрдкреНрд╕ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдореИрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ "рдирд┐рд░реНрдпрд╛рддрд┐рдд" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдХреЗред рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдЕрдиреНрдп рдРрдкреНрд╕ рдХреЛ рдЗрд╕ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:
|
|
```markdown
|
|
<service android:name=".ExampleExportedService" android:exported="true"/>
|
|
```
|
|
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд┐рд╕реА рдЕрдиреНрдп рдРрдк рд╕реЗ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЪрд┐рдВрддрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ, рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓реАрдХ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред
|
|
|
|
рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЬреАрд╡рдирдЪрдХреНрд░ **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
|
|
<service android:name=".ExampleExportedService" android:exported="true"/>
|
|
```
|
|
### 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
|
|
<provider android:name="androidx.core.content.FileProvider"
|
|
android:authorities="com.example.myapp.fileprovider"
|
|
android:grantUriPermissions="true"
|
|
android:exported="false">
|
|
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
|
|
android:resource="@xml/filepaths" />
|
|
</provider>
|
|
```
|
|
рдФрд░ `filepaths.xml` рдореЗрдВ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
|
|
```xml
|
|
<paths>
|
|
<files-path path="images/" name="myimages" />
|
|
</paths>
|
|
```
|
|
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 **рдПрдВрдбреНрд░реЙрдЗрдб рдРрдкреНрд╕** рдХреЗ рдЕрдВрджрд░ **рдорд┐рдиреА рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░** рдХреА рддрд░рд╣ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдпрд╛ рддреЛ рд╡реЗрдм рд╕реЗ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред рдЗрдиреНрд╣реЗрдВ рдирд┐рдпрдорд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рдорд╛рди рдЬреЛрдЦрд┐рдореЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ **рд╕реЗрдЯрд┐рдВрдЧреНрд╕** рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ **рдЗрди рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ** рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред
|
|
|
|
рдПрдВрдбреНрд░реЙрдЗрдб рджреЛ рдореБрдЦреНрдп 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**
|
|
|
|
- **рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд╛рдЗрдирд┐рдВрдЧ** рдПрдВрдбреНрд░реЙрдЗрдб рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╡реЗ **рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд** рд╣реИрдВред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдРрдк рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рдордп рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрдкреНрд╕ **рд╕реНрд╡рдпрдВ-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдпрд╛ рдмрд╛рд╣рд░реА CA рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгрд┐рдд** рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдРрдк рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рджреМрд░рд╛рди рдмрд┐рдирд╛ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХреЗ рд░рд╣реЗред
|
|
|
|
### **App Verification for Enhanced Security**
|
|
|
|
- **Android 4.2** рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, **Verify Apps** рдирд╛рдордХ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдРрдкреНрд╕ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ **рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛** рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдРрдкреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдРрдкреНрд╕ рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рд░реЛрдХ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдмрдврд╝рддреА рд╣реИред
|
|
|
|
### **Mobile Device Management (MDM)**
|
|
|
|
- **MDM рд╕рдорд╛рдзрд╛рди** рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП **рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рд╕реБрд░рдХреНрд╖рд╛** рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ **рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рд╢рд╛рд╕рди API** рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЗрдиреНрд╣реЗрдВ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ **рдкрд╛рд╕рд╡рд░реНрдб рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛**, **рд╕реНрдЯреЛрд░реЗрдЬ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд░рдирд╛**, рдФрд░ **рджреВрд░рд╕реНрде рдбреЗрдЯрд╛ рдорд┐рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛** рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╡реНрдпрд╛рдкрдХ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред
|
|
```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);
|
|
}
|
|
```
|
|
{% hint style="success" %}
|
|
рд╕реАрдЦреЗрдВ рдФрд░ AWS рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
рд╕реАрдЦреЗрдВ рдФрд░ GCP рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ</summary>
|
|
|
|
* [**рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдПрдБ**](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) рдЧрд┐рдЯрд╣рдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ PRs рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред
|
|
|
|
</details>
|
|
{% endhint %}
|