рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╡реИрд▓реНрдпреВ рдмрджрд▓рдирд╛

рд░рдирдЯрд╛рдЗрдо рд░рд┐рд╕реЙрд░реНрд╕ рдУрд╡рд░рд▓реЗ (рдЖрд░рдЖрд░рдУ) рдПрдХ рдРрд╕рд╛ рдкреИрдХреЗрдЬ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди, рдЯрд╛рд░рдЧреЗрдЯ рдкреИрдХреЗрдЬ рдХреЗ рд░рд┐рд╕реЙрд░реНрд╕ рдХреА рд╡реИрд▓реНрдпреВ рдмрджрд▓рддрд╛ рд╣реИ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рдЗрдореЗрдЬ рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рдРрдкреНрд▓рд┐рдХреЗрд╢рди, рд╕рдВрд╕рд╛рдзрди рдХреА рд╡реИрд▓реНрдпреВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ. рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреА рд╡реИрд▓реНрдпреВ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХрд┐рд╕реА рджреВрд╕рд░реЗ рдкрд╛рд░реНрдЯреАрд╢рди рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ RRO, рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╡реИрд▓реНрдпреВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ.

RRO рдХреЛ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ, RRO рдХреА рдЪрд╛рд▓реВ/рдмрдВрдж рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ. рдЗрд╕рд╕реЗ RRO рдХреА, рд╕рдВрд╕рд╛рдзрди рдХреА рд╡реИрд▓реНрдпреВ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЯреЙрдЧрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЖрд░рдЖрд░рдУ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛрддреЗ рд╣реИрдВ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдЯреИрдЯрд┐рдХ рдЖрд░рдЖрд░рдУ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛрддреЗ рд╣реИрдВ.

рдУрд╡рд░рд▓реЗ рд╕рдВрд╕рд╛рдзрди

рдУрд╡рд░рд▓реЗ, рдУрд╡рд░рд▓реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рддрдп рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рддрдп рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдореИрдк рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ. рдЬрдм рдХреЛрдИ рдРрдкреНрд▓рд┐рдХреЗрд╢рди, рдЯрд╛рд░рдЧреЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдореМрдЬреВрдж рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдХреА рд╡реИрд▓реНрдпреВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЯрд╛рд░рдЧреЗрдЯ рд╕рдВрд╕рд╛рдзрди рдХреЗ рдмрдЬрд╛рдп, рдЯрд╛рд░рдЧреЗрдЯ рд╕рдВрд╕рд╛рдзрди рд╕реЗ рдореИрдк рдХрд┐рдП рдЧрдП рдУрд╡рд░рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдХреА рд╡реИрд▓реНрдпреВ рджрд┐рдЦрддреА рд╣реИ.

рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рд╕реЗрдЯ рдЕрдк рдХрд░рдирд╛

рдХрд┐рд╕реА рдкреИрдХреЗрдЬ рдХреЛ RRO рдкреИрдХреЗрдЬ рддрдм рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЙрд╕рдореЗрдВ <manifest> рдЯреИрдЧ рдХреЗ рдЪрд╛рдЗрд▓реНрдб рдХреЗ рддреМрд░ рдкрд░ <overlay> рдЯреИрдЧ рдореМрдЬреВрдж рд╣реЛ.

  • рдЬрд╝рд░реВрд░реА android:targetPackage рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреА рд╡реИрд▓реНрдпреВ, рдЙрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рдмрддрд╛рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ RRO рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдирд╛ рд╣реИ.

  • рд╡реИрдХрд▓реНрдкрд┐рдХ android:targetName рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреА рд╡реИрд▓реНрдпреВ, рдЯрд╛рд░рдЧреЗрдЯ рдкреИрдХреЗрдЬ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрд╕ рд╕рдмрд╕реЗрдЯ рдХрд╛ рдирд╛рдо рдмрддрд╛рддреА рд╣реИ рдЬрд┐рд╕реЗ RRO рдУрд╡рд░рд▓реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ. рдЕрдЧрд░ рдЯрд╛рд░рдЧреЗрдЯ, рдУрд╡рд░рд▓реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕реЗрдЯ рддрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП.

рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рдУрд╡рд░рд▓реЗ AndroidManifest.xml рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.overlay">
    <application android:hasCode="false" />
    <overlay android:targetPackage="com.example.target"
                   android:targetName="OverlayableResources"/>
</manifest>

рдУрд╡рд░рд▓реЗ, рдХреЛрдб рдХреЛ рдУрд╡рд░рд▓реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ. рдЗрд╕рд▓рд┐рдП, рдЙрдирдореЗрдВ DEX рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреАрдВ. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдореМрдЬреВрдж <application> рдЯреИрдЧ рдХреЗ android:hasCode рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЛ false рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП.

рд╕рдВрд╕рд╛рдзрди рдореИрдк рддрдп рдХрд░рдирд╛

Android 11 рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, рдУрд╡рд░рд▓реЗ рд░рд┐рд╕реЙрд░реНрд╕ рдореИрдк рддрдп рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рд▓реЗ рдкреИрдХреЗрдЬ рдХреА res/xml рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрди рдЯрд╛рд░рдЧреЗрдЯ рд░рд┐рд╕реЙрд░реНрд╕ рдХреА рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдУрд╡рд░рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рдмрджрд▓реА рдЧрдИ рд╡реИрд▓реНрдпреВ рдбрд╛рд▓реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, <overlay> рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдЯреИрдЧ рдХреЗ android:resourcesMap рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреА рд╡реИрд▓реНрдпреВ рдХреЛ рд░рд┐рд╕реЙрд░реНрд╕ рдореИрдкрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реЗрдлрд╝рд░рдВрд╕ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ.

рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, res/xml/overlays.xml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

<?xml version="1.0" encoding="utf-8"?>
<overlay xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Overlays string/config1 and string/config2 with the same resource. -->
    <item target="string/config1" value="@string/overlay1" />
    <item target="string/config2" value="@string/overlay1" />

    <!-- Overlays string/config3 with the string "yes". -->
    <item target="string/config3" value="@android:string/yes" />

    <!-- Overlays string/config4 with the string "Hardcoded string". -->
    <item target="string/config4" value="Hardcoded string" />

    <!-- Overlays integer/config5 with the integer "42". -->
    <item target="integer/config5" value="42" />
</overlay>

рдпрд╣рд╛рдВ рдУрд╡рд░рд▓реЗ рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.overlay">
    <application android:hasCode="false" />
    <overlay android:targetPackage="com.example.target"
                   android:targetName="OverlayableResources"
                   android:resourcesMap="@xml/overlays"/>
</manifest>

рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛

Android 11 рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП Soong рдмрд┐рд▓реНрдб рд░реВрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ Android рдРрд╕реЗрдЯ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЯреВрд▓ 2 (AAPT2) рдХреЛ, рдПрдХ рд╣реА рд╡реИрд▓реНрдпреВ (--no-resource-deduping) рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдбреБрдкреНрд▓реАрдХреЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (--no-resource-removal) рдХреЗ рдмрд┐рдирд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ. рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, Android.bp рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

runtime_resource_overlay {
    name: "ExampleOverlay",
    sdk_version: "current",
}

рд╕рдВрд╕рд╛рдзрди рд╣рд▓ рдХрд░рдирд╛

рдЕрдЧрд░ рдХрд┐рд╕реА рдЯрд╛рд░рдЧреЗрдЯ рд░рд┐рд╕реЛрд░реНрд╕ рдпрд╛ рдУрд╡рд░рд▓реЗ рд░рд┐рд╕реЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдХреНрд╡реЗрд░реА рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд░рд┐рд╕реЛрд░реНрд╕ рдХреЗ рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рд░рд┐рд╕реЛрд░реНрд╕ рд░рдирдЯрд╛рдЗрдо, рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╡реИрд▓реНрдпреВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕рдмрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ. рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдмрд╕реЗ рд╕рд╣реА рдореИрдЪрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреМрдирд╕реА рд╣реИ, рдУрд╡рд░рд▓реЗ рд░рд┐рд╕реЙрд░реНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕реЗрдЯ рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рд░рд┐рд╕реЙрд░реНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдорд░реНрдЬ рдХрд░реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рд░рд┐рд╕реЙрд░реНрд╕ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝реНрд▓реЛ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ. рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, Android рд╕рдмрд╕реЗ рд╕рд╣реА рдореИрдЪрд┐рдВрдЧ рд░рд┐рд╕реЙрд░реНрд╕ рдХреИрд╕реЗ рдвреВрдВрдврддрд╛ рд╣реИ рд▓реЗрдЦ рдкрдврд╝реЗрдВ.

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдХреЛрдИ рдУрд╡рд░рд▓реЗ drawable-en рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡реИрд▓реНрдпреВ рддрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯрд╛рд░рдЧреЗрдЯ drawable-en-port рдХреЗ рд▓рд┐рдП рд╡реИрд▓реНрдпреВ рддрдп рдХрд░рддрд╛ рд╣реИ, рддреЛ drawable-en-port рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдореИрдЪ рд╣реЛрддрд╛ рд╣реИ. рдЗрд╕рд▓рд┐рдП, рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЯрд╛рд░рдЧреЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди drawable-en-port рдХреА рд╡реИрд▓реНрдпреВ рдЪреБрдиреА рдЬрд╛рддреА рд╣реИ. рд╕рднреА drawable-en рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рд▓реЗ рдХреЛ рд╣рд░ рдЙрд╕ drawable-en рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡реИрд▓реНрдпреВ рддрдп рдХрд░рдиреА рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рдЯрд╛рд░рдЧреЗрдЯ рдиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ.

рдУрд╡рд░рд▓реЗ, рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд░реЗрдлрд╝рд░рдВрд╕ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ. рд╣рд╛рд▓рд╛рдВрдХрд┐, Android рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрд╢рди рдореЗрдВ рдпреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ.

  • Android 11 рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, рд╣рд░ рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рд░рд┐рд╕реЙрд░реНрд╕ рдЖрдИрдбреА рд╕реНрдкреЗрд╕ рд╣реЛрддрд╛ рд╣реИ. рдпрд╣ рдЯрд╛рд░рдЧреЗрдЯ рд░рд┐рд╕реЙрд░реНрд╕ рдЖрдИрдбреА рд╕реНрдкреЗрд╕ рдпрд╛ рдЕрдиреНрдп рдУрд╡рд░рд▓реЗ рд░рд┐рд╕реЙрд░реНрд╕ рдЖрдИрдбреА рд╕реНрдкреЗрд╕ рд╕реЗ рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реЛрддрд╛. рдЗрд╕рд▓рд┐рдП, рдЕрдкрдиреЗ рд░рд┐рд╕реЙрд░реНрд╕ рдХрд╛ рд░реЗрдлрд╝рд░рдВрд╕ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдУрд╡рд░рд▓реЗ, рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ.

  • Android 10 рдпрд╛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, рдУрд╡рд░рд▓реЗ рдФрд░ рдЯрд╛рд░рдЧреЗрдЯ рдкреИрдХреЗрдЬ рдПрдХ рд╣реА рд░рд┐рд╕реЙрд░реНрд╕ рдЖрдИрдбреА рд╕реНрдкреЗрд╕ рд╢реЗрдпрд░ рдХрд░рддреЗ рд╣реИрдВ. рдЗрд╕рд╕реЗ рдЯрдХрд░рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм рд╡реЗ @type/name рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд░рд┐рд╕реЙрд░реНрд╕ рдХреЛ рд░реЗрдлрд╝рд░рдВрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧрдбрд╝рдмрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ.

рдУрд╡рд░рд▓реЗ рдЪрд╛рд▓реВ/рдмрдВрдж рдХрд░реЗрдВ

рдУрд╡рд░рд▓реЗ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рддрд░реАрдХреЗ рд╕реЗ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдЪрд╛рд▓реВ/рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рдУрд╡рд░рд▓реЗ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рддрд░реАрдХреЗ рд╕реЗ рдмрдВрдж рдпрд╛ рдЪрд╛рд▓реВ рдХрд░рдирд╛

рдХрд┐рд╕реА RRO рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рддрд░реАрдХреЗ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:

adb shell cmd overlay enable --user current com.example.carrro
adb shell cmd overlay list --user current | grep -i com.example com.example.carrro

рдЗрд╕рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдпреВрдЬрд╝рд░ (userId = 0) рдХреЗ рд▓рд┐рдП RRO рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ. рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдпреВрдЬрд╝рд░, SystemUI рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реЛрддрд╛ рд╣реИ. рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЕрд╕рд░, рдлрд╝реЛрд░рдЧреНрд░рд╛рдЙрдВрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (userId = 10) рдХреА рдУрд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдирд╣реАрдВ рдкрдбрд╝рддрд╛. рдлрд╝реЛрд░рдЧреНрд░рд╛рдЙрдВрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП RRO рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, -тАУuser 10 рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ:

adb shell cmd overlay enable --user 10 com.example.carrro

рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдУрд╡рд░рд▓реЗ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд░рдирд╛

рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдУрд╡рд░рд▓реЗ рдХреЛ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, OverlayManager API рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. Context#getSystemService(Context.OVERLAY_SERVICE) рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдПрдкреАрдЖрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдкрд╛рдПрдВ. рдУрд╡рд░рд▓реЗ рдХреЛ рд╕рд┐рд░реНрдлрд╝ рдЙрд╕ рдкреИрдХреЗрдЬ рд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдЯрд╛рд░рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдпрд╛ android.permission.CHANGE_OVERLAY_PACKAGES рдЕрдиреБрдорддрд┐ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЬрдм рдХрд┐рд╕реА рдУрд╡рд░рд▓реЗ рдХреЛ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╡реЗрдВрдЯ, рдЯрд╛рд░рдЧреЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдлреИрд▓ рдЬрд╛рддреЗ рд╣реИрдВ. рд╕рд╛рде рд╣реА, рдЯрд╛рд░рдЧреЗрдЯ рдРрдХреНрдЯрд┐рд╡рд┐рдЯреА рдлрд┐рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ.

рдУрд╡рд░рд▓реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛

Android 10 рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, <overlayable> рдПрдХреНрд╕рдПрдордПрд▓ рдЯреИрдЧ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ. рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ RRO рдУрд╡рд░рд▓реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ. рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, res/values/overlayable.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ string/foo рдФрд░ integer/bar рдРрд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓реБрдХ рдХреЛ рдереАрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рд▓реЗ рдХреЛ рдирд╛рдо рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдУрд╡рд░рд▓реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдХрд▓реЗрдХреНрд╢рди рдХреЛ рд╕рд╛рдлрд╝ рддреМрд░ рдкрд░ рдЯрд╛рд░рдЧреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛.

<!-- The collection of resources for theming the appearance of the device -->
<overlayable name="ThemeResources">
       <policy type="public">
               <item type="string" name="foo/" />
               <item type="integer" name="bar/" />
       </policy>
       ...
</overlayable>

рдХрд┐рд╕реА APK рдореЗрдВ рдХрдИ <overlayable> рдЯреИрдЧ рддрдп рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ. рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреИрдХреЗрдЬ рдореЗрдВ рд╣рд░ рдЯреИрдЧ рдХрд╛ рдирд╛рдо рдпреВрдиреАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реИ:

  • рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП, <overlayable name="foo"> рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ.

  • рдПрдХ APK рдореЗрдВ рджреЛ <overlayable name="foo"> рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП.

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдУрд╡рд░рд▓реЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.my.theme.overlay">
       <application android:hasCode="false" />
       <!-- This overlay will override the ThemeResources resources -->
       <overlay android:targetPackage="android" android:targetName="ThemeResources">
</manifest>

рдЬрдм рдХреЛрдИ рдРрдкреНрд▓рд┐рдХреЗрд╢рди <overlayable> рдЯреИрдЧ рддрдп рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдУрд╡рд░рд▓реЗ:

  • targetName рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ.

  • рд╕рд┐рд░реНрдлрд╝ <overlayable> рдЯреИрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд░рд┐рд╕реЙрд░реНрд╕ рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ.

  • рд╕рд┐рд░реНрдлрд╝ рдПрдХ <overlayable> рдирд╛рдо рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рдРрд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдУрд╡рд░рд▓реЗ рдХреЛ рдЪрд╛рд▓реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдЬреЛ рдУрд╡рд░рд▓реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрди рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЦрд╛рд╕ <overlayable> рдЯреИрдЧ рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП android:targetName рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ.

рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛

рдУрд╡рд░рд▓реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдкрд╛рдмрдВрджрд┐рдпрд╛рдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, <policy> рдЯреИрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. type рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╕реЗ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдУрд╡рд░рд▓реЗ рдХреЛ рдХрд┐рди рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛. рдпреЗ рдЯрд╛рдЗрдк рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ.

  • public. рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд░рд┐рд╕реЙрд░реНрд╕ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ.
  • system. рд╕рд┐рд╕реНрдЯрдо рдкрд╛рд░реНрдЯреАрд╢рди рдкрд░ рдореМрдЬреВрдж рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ.
  • vendor. рд╡реЗрдВрдбрд░ рдкрд╛рд░реНрдЯрд┐рд╢рди рдкрд░ рдореМрдЬреВрдж рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ.
  • product. рдкреНрд░реЙрдбрдХреНрдЯ рдкрд╛рд░реНрдЯреАрд╢рди рдкрд░ рдореМрдЬреВрдж рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ.
  • oem. рдУрдИрдПрдо рдкрд╛рд░реНрдЯреАрд╢рди рдкрд░ рдореМрдЬреВрдж рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ.
  • odm. рдУрдбреАрдПрдо рдкрд╛рд░реНрдЯреАрд╢рди рдкрд░ рдореМрдЬреВрдж рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ.
  • signature. рдЯрд╛рд░рдЧреЗрдЯ APK рдкрд░ рдЬрд┐рд╕ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ.
  • actor. рдРрдХреНрдЯрд░ APK рдХреЗ рддреМрд░ рдкрд░ рд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдУрд╡рд░рд▓реЗ рдореЗрдВ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрддреА рд╣реИ. рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, named-actor рдЯреИрдЧ рдореЗрдВ рдРрдХреНрдЯрд░ рдХрд╛ рдПрд▓рд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ.
  • config_signature. overlay-config APK рдХреЗ рддреМрд░ рдкрд░ рд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдУрд╡рд░рд▓реЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ. рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, overlay-config-signature рдЯреИрдЧ рдореЗрдВ overlay-config рдХрд╛ рдПрд▓рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, res/values/overlayable.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ <policy> рдЯреИрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

<overlayable name="ThemeResources">
   <policy type="vendor" >
       <item type="string" name="foo" />
   </policy>
   <policy type="product|signature"  >
       <item type="string" name="bar" />
       <item type="string" name="baz" />
   </policy>
</overlayable>

рдПрдХ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдиреАрддрд┐рдпрд╛рдВ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЯрд┐рдХрд▓ рдмрд╛рд░ (|) рдХреЛ рд╕реЗрдкрд░реЗрдЯрд░ рд╡рд░реНрдг рдХреЗ рддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. рдПрдХ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдиреАрддрд┐рдпрд╛рдВ рддрдп рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, <policy> рдЯреИрдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рд▓реЗ рдХреЛ рд╕рд┐рд░реНрдлрд╝ рдПрдХ рдиреАрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛.

рдУрд╡рд░рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

Android рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрд╢рди рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ, рдУрд╡рд░рд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐, рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Android рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ.

  • Android 11 рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди рд╡рд╛рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдкрд░, рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рдмрдЬрд╛рдп OverlayConfig рдлрд╝рд╛рдЗрд▓ (config.xml) рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рд▓реЗ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

  • рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕, рд╕реНрдЯреИрдЯрд┐рдХ RRO рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ (android:isStatic рдФрд░ android:priority) рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ.

OverlayConfig рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛

Android 11 рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, OverlayConfig рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдУрд╡рд░рд▓реЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐, рдФрд░ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдУрд╡рд░рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, partition/overlay/config/config.xml рдкрд░ рдореМрдЬреВрдж рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдпрд╛ рдЙрд╕рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ. рдпрд╣рд╛рдВ partition, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдУрд╡рд░рд▓реЗ рдХрд╛ рдкрд╛рд░реНрдЯреАрд╢рди рд╣реИ. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рд▓реЗ рдХреЛ рдЙрд╕ рдкрд╛рд░реНрдЯреАрд╢рди рдХреА overlay/ рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдУрд╡рд░рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ. рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, product/overlay/config/config.xml рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

<config>
    <merge path="OEM-common-rros-config.xml" />
    <overlay package="com.oem.overlay.device" mutable="false" enabled="true" />
    <overlay package="com.oem.green.theme" enabled="true" />
</config>"

<overlay> рдЯреИрдЧ рдХреЗ рд▓рд┐рдП package рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдЬрд╝рд░реВрд░реА рд╣реИ. рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреМрдирд╕рд╛ рдУрд╡рд░рд▓реЗ рдкреИрдХреЗрдЬ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ. enabled рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╕реЗ рдпрд╣ рдХрдВрдЯреНрд░реЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдУрд╡рд░рд▓реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рд╣реИ рдпрд╛ рдирд╣реАрдВ. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ false рд╣реЛрддрд╛ рд╣реИ. mutable рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╕реЗ рдпрд╣ рдХрдВрдЯреНрд░реЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдУрд╡рд░рд▓реЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ. рд╕рд╛рде рд╣реА, рдпрд╣ рднреА рдХрдВрдЯреНрд░реЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдУрд╡рд░рд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ true рд╣реЛрддрд╛ рд╣реИ. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдУрд╡рд░рд▓реЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рд╡реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛрддреЗ рд╣реИрдВ.

рдУрд╡рд░рд▓реЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛

рдЬрдм рдХрдИ рдУрд╡рд░рд▓реЗ рдПрдХ рд╣реА рд╕рдВрд╕рд╛рдзрди рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдУрд╡рд░рд▓реЗ рдХрд╛ рдХреНрд░рдо рдЕрд╣рдо рд╣реЛрддрд╛ рд╣реИ. рдХрд┐рд╕реА рдУрд╡рд░рд▓реЗ рдХреЛ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╛рд▓реЗ рдЙрди рдУрд╡рд░рд▓реЗ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рдирдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдЙрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдЖрддреЗ рд╣реИрдВ. рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд╛рд░реНрдЯреАрд╢рди рдореЗрдВ рдУрд╡рд░рд▓реЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛ рдХреНрд░рдо (рд╕рдмрд╕реЗ рдХрдо рд╕реЗ рд╕рдмрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛) рдЗрд╕ рддрд░рд╣ рд╣реИ.

  • system
  • vendor
  • odm
  • oem
  • product
  • system_ext

рдлрд╝рд╛рдЗрд▓реЗрдВ рдорд░реНрдЬ рдХрд░рдирд╛

<merge> рдЯреИрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рд╕реЗ, рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рддрдп рдХреА рдЧрдИ рдЬрдЧрд╣ рдкрд░ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЯреИрдЧ рдХрд╛ path рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ, рдорд░реНрдЬ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрд╛рде рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ. рдпрд╣ рдкрд╛рде, рдУрд╡рд░рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рд╡рд╛рд▓реА рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рд╣реЛрддрд╛ рд╣реИ.

рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ/рд╕реНрдЯреИрдЯрд┐рдХ RRO рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛

Android 10 рдпрд╛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, рдУрд╡рд░рд▓реЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рди рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдХреЗ рдЗрди рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.

  • android:isStatic. рдЬрдм рдЗрд╕ рдмреВрд▓рд┐рдпрди рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреА рд╡реИрд▓реНрдпреВ true рдкрд░ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИ, рддреЛ рдУрд╡рд░рд▓реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдЗрд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛. рдЗрд╕рд╕реЗ рдУрд╡рд░рд▓реЗ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛.

  • android:priority. рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓реЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреА рд╡реИрд▓реНрдпреВ (рдЬреЛ рд╕рд┐рд░реНрдлрд╝ рд╕реНрдЯреИрдЯрд┐рдХ рдУрд╡рд░рд▓реЗ рдкрд░ рдЕрд╕рд░ рдбрд╛рд▓рддреА рд╣реИ) рд╕реЗ, рдУрд╡рд░рд▓реЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реЛрддреА рд╣реИ. рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдХрдИ рд╕реНрдЯреИрдЯрд┐рдХ рдУрд╡рд░рд▓реЗ рдПрдХ рд╣реА рд╕рдВрд╕рд╛рдзрди рд╡реИрд▓реНрдпреВ рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ. рдЬрд╝реНрдпрд╛рджрд╛ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЬрд╝реНрдпрд╛рджрд╛ рд╣реИ.

рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг AndroidManifest.xml рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.overlay">
    <application android:hasCode="false" />
    <overlay android:targetPackage="com.example.target"
                   android:isStatic="true"
                   android:priority="5"/>
</manifest>

Android 11 рдореЗрдВ рдХрд┐рдП рдЧрдП рдмрджрд▓рд╛рд╡

Android 11 рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╡рд░реНрд╢рди рдореЗрдВ, рдЕрдЧрд░ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ partition/overlay/config/config.xml рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдУрд╡рд░рд▓реЗ рдХреЛ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, android:isStatic рдФрд░ android:priority рдХрд╛ рдЕрд╕рд░, рдкрд╛рд░реНрдЯреАрд╢рди рдореЗрдВ рдореМрдЬреВрдж рдУрд╡рд░рд▓реЗ рдкрд░ рдирд╣реАрдВ рдкрдбрд╝рддрд╛. рдХрд┐рд╕реА рднреА рдкрд╛рд░реНрдЯреАрд╢рди рдореЗрдВ рдУрд╡рд░рд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рддрдп рдХрд░рдиреЗ рд╕реЗ, рдУрд╡рд░рд▓реЗ рдкрд╛рд░реНрдЯреАрд╢рди рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдорд┐рд▓рддреА рд╣реИ.

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Android 11 рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рд╡рд╛рд▓реЗ рд╡рд░реНрд╢рди рдореЗрдВ, рд╕реНрдЯреИрдЯрд┐рдХ рдУрд╡рд░рд▓реЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдкрдврд╝реА рдЧрдИ рд╡реИрд▓реНрдпреВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ. рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдХреЗ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреВрд▓рд┐рдпрди рдХреА рд╡реИрд▓реНрдпреВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдЯрд┐рдХ рдУрд╡рд░рд▓реЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, <component-override> SystemConfig рдЯреИрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. рдпрд╣ рдЯреИрдЧ, Android 11 рдореЗрдВ рдирдпрд╛ рд╣реИ.

рдбреАрдмрдЧ рдУрд╡рд░рд▓реЗ

рдУрд╡рд░рд▓реЗ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рддрд░реАрдХреЗ рд╕реЗ рдЪрд╛рд▓реВ, рдмрдВрдж, рдФрд░ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рд▓реЗ рдореИрдиреЗрдЬрд░ рдХреА рдЗрд╕ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ.

adb shell cmd overlay

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдП рдмрд┐рдирд╛ enable рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рд╕реЗ, рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдЕрд╕рд░ рдкрдбрд╝рддрд╛ рд╣реИ. рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдпреВрдЬрд╝рд░ (userId = 0), рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рд┐рд╕реНрдЯрдо рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдпреВрдЖрдИ) рдХрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рд╣реИ. рдЗрд╕рд╕реЗ, рдлрд╝реЛрд░рдЧреНрд░рд╛рдЙрдВрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (userId = 10) рдкрд░ рдХреЛрдИ рдЕрд╕рд░ рдирд╣реАрдВ рдкрдбрд╝рддрд╛. рдЙрд╕рдХреЗ рдкрд╛рд╕ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рд╣реЛрддрд╛ рд╣реИ. рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, RRO рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП тАУ-user 10 рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ:

adb shell cmd overlay enable --user 10 com.example.carrro

OverlayManagerService, рдЯрд╛рд░рдЧреЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдореМрдЬреВрдж рд╕рдВрд╕рд╛рдзрди рдЖрдИрдбреА рдХреЛ рдУрд╡рд░рд▓реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдореМрдЬреВрдж рд╕рдВрд╕рд╛рдзрди рдЖрдИрдбреА рд╕реЗ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП idmap2 рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ. рдЬрдирд░реЗрдЯ рдХреА рдЧрдИ рдЖрдИрдбреА рдореИрдкрд┐рдВрдЧ, /data/resource-cache/ рдореЗрдВ рд╕реЗрд╡ рдХреА рдЬрд╛рддреА рд╣реИрдВ. рдЕрдЧрд░ рдЖрдкрдХрд╛ рдУрд╡рд░рд▓реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ /data/resource-cache/ рдореЗрдВ рдЬрд╛рдХрд░, рдЕрдкрдиреЗ рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП idmap рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдвреЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ.

adb shell idmap2 dump --idmap-path [file]

рдпрд╣ рдХрдорд╛рдВрдб, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдореИрдкрд┐рдВрдЧ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреА рд╣реИ. рдЗрд╕реЗ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ.

[target res id] - > [overlay res id] [resource name]
0x01040151 -> 0x01050001 string/config_dozeComponent
0x01040152 -> 0x01050002 string/config_dozeDoubleTapSensorType
0x01040153 -> 0x01050003 string/config_dozeLongPressSensorType