Как настроить сборку приложения под Android 13
Шаги для настройки сборок приложения под Android 13 (уровень API 33) отличаются в зависимости от используемой версии Unity.
Действие | 2019 | 2020 | 2021 | 2022 | 2023 |
---|---|---|---|---|---|
Поднятие версии | + | + | + | + | + |
Использование плагина Gradle 7.2 | + | + | + | + | |
Изменение версии плагина Gradle в | + | + | + | + | |
Добавление исключений META/INF в | + | + | + | + | + |
Добавление исключений META/INF в | + | ||||
Внесение изменений в AndroidManifest | + | + | + | + | + |
Примечание
Вы можете автоматизировать процесс настройки с помощью скриптов постобработки. В качестве примера такого скрипта используйте файл AndroidFilesProcessor .
Поднятие версии Target API Level до 33
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - В поле
Target API Level выберите значениеAPI Level 33
. - Запустите сборку приложения под Android. В сообщении об отсутствии скачанного API нажмите
Update Android SDK . Процесс сборки продолжится после того, как необходимые файлы будут скачаны.
Примечание
После скачивания API вы можете изменить значение в поле Target API Level на значение по умолчанию —
latest
.Использование плагина Gradle 7.2
- Скачайте Gradle 7.2.
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - Перейдите в раздел
External Tools > Android . - Снимите флажок
Gradle installed with Unity . - В поле
Gradle нажмитеBrowse и выберите директорию с файлами Gradle 7.2.
Изменение версии плагина Gradle в Base Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Base Gradle Template . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/baseProjectTemplate.gradle
. - В разделе зависимостей укажите версию плагина 4.1.0, как показано в примере:
Copy
Full screen
Small screen
- groovy
classpath 'com.android.tools.build:gradle:4.1.0'
Добавление исключений META/INF в Launcher Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Launcher Gradle Templatere . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/launcherTemplate.gradle
. - Добавьте в конец файла следующие строки:
Copy
Full screen
Small screen
- groovy
android {
packagingOptions {
pickFirst 'META-INF/kotlinx-serialization-json.kotlin_module'
pickFirst 'META-INF/kotlinx_coroutines_core.version'
pickFirst 'META-INF/kotlinx-serialization-core.kotlin_module'
pickFirst 'META-INF/atomicfu.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx.kotlin_module'
pickFirst 'META-INF/ktor-events.kotlin_module'
pickFirst 'META-INF/ktor-websocket-serialization.kotlin_module'
pickFirst 'META-INF/ktor-serialization.kotlin_module'
pickFirst 'META-INF/ktor-client-core.kotlin_module'
pickFirst 'META-INF/ktor-io.kotlin_module'
pickFirst 'META-INF/ktor-http.kotlin_module'
pickFirst 'META-INF/ktor-client-content-negotiation.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx-json.kotlin_module'
pickFirst 'META-INF/ktor-websockets.kotlin_module'
pickFirst 'META-INF/ktor-utils.kotlin_module'
}
}
Внесение изменений в AndroidManifest
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Main Manifest . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/AndroidManifest.xml
. - Вставьте в тег
application
следующие строки:
Copy
Full screen
Small screen
- xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
- Добавьте в основную Activity
com.unity3d.player.UnityPlayerActivity
атрибутandroid:exported
со значениемtrue
.
Пример
Copy
Full screen
Small screen
- xml
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
</application>
</manifest>
Поднятие версии Target API Level до 33
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - В поле
Target API Level выберите значениеAPI Level 33
. - Запустите сборку приложения под Android. В сообщении об отсутствии скачанного API нажмите
Update Android SDK . Процесс сборки продолжится после того, как необходимые файлы будут скачаны.
Примечание
После скачивания API вы можете изменить значение в поле Target API Level на значение по умолчанию —
latest
.Использование плагина Gradle 7.2
- Скачайте Gradle 7.2.
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - Перейдите в раздел
External Tools > Android . - Снимите флажок
Gradle installed with Unity . - В поле
Gradle нажмитеBrowse и выберите директорию с файлами Gradle 7.2.
Изменение версии плагина Gradle в Base Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Base Gradle Template . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/baseProjectTemplate.gradle
. - В разделе зависимостей укажите версию плагина 4.1.0, как показано в примере:
Copy
Full screen
Small screen
- groovy
classpath 'com.android.tools.build:gradle:4.1.0'
Добавление исключений META/INF в Launcher Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Launcher Gradle Templatere . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/launcherTemplate.gradle
. - Добавьте в конец файла следующие строки:
Copy
Full screen
Small screen
- groovy
android {
packagingOptions {
pickFirst 'META-INF/kotlinx-serialization-json.kotlin_module'
pickFirst 'META-INF/kotlinx_coroutines_core.version'
pickFirst 'META-INF/kotlinx-serialization-core.kotlin_module'
pickFirst 'META-INF/atomicfu.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx.kotlin_module'
pickFirst 'META-INF/ktor-events.kotlin_module'
pickFirst 'META-INF/ktor-websocket-serialization.kotlin_module'
pickFirst 'META-INF/ktor-serialization.kotlin_module'
pickFirst 'META-INF/ktor-client-core.kotlin_module'
pickFirst 'META-INF/ktor-io.kotlin_module'
pickFirst 'META-INF/ktor-http.kotlin_module'
pickFirst 'META-INF/ktor-client-content-negotiation.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx-json.kotlin_module'
pickFirst 'META-INF/ktor-websockets.kotlin_module'
pickFirst 'META-INF/ktor-utils.kotlin_module'
}
}
Внесение изменений в AndroidManifest
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Main Manifest . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/AndroidManifest.xml
. - Вставьте в тег
application
следующие строки:
Copy
Full screen
Small screen
- xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
- Добавьте в основную Activity
com.unity3d.player.UnityPlayerActivity
атрибутandroid:exported
со значениемtrue
.
Пример
Copy
Full screen
Small screen
- xml
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
</application>
</manifest>
Поднятие версии Target API Level до 33
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - В поле
Target API Level выберите значениеAPI Level 33
. - Запустите сборку приложения под Android. В сообщении об отсутствии скачанного API нажмите
Update Android SDK . Процесс сборки продолжится после того, как необходимые файлы будут скачаны.
Примечание
После скачивания API вы можете изменить значение в поле Target API Level на значение по умолчанию —
latest
.Использование плагина Gradle 7.2
- Скачайте Gradle 7.2.
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - Перейдите в раздел
External Tools > Android . - Снимите флажок
Gradle installed with Unity . - В поле
Gradle нажмитеBrowse и выберите директорию с файлами Gradle 7.2.
Изменение версии плагина Gradle в Base Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Base Gradle Template . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/baseProjectTemplate.gradle
. - В разделе зависимостей укажите версию плагина 4.1.0, как показано в примере:
Copy
Full screen
Small screen
- groovy
classpath 'com.android.tools.build:gradle:4.1.0'
Добавление исключений META/INF в Launcher Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Launcher Gradle Templatere . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/launcherTemplate.gradle
. - Добавьте в конец файла следующие строки:
Copy
Full screen
Small screen
- groovy
android {
packagingOptions {
pickFirst 'META-INF/kotlinx-serialization-json.kotlin_module'
pickFirst 'META-INF/kotlinx_coroutines_core.version'
pickFirst 'META-INF/kotlinx-serialization-core.kotlin_module'
pickFirst 'META-INF/atomicfu.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx.kotlin_module'
pickFirst 'META-INF/ktor-events.kotlin_module'
pickFirst 'META-INF/ktor-websocket-serialization.kotlin_module'
pickFirst 'META-INF/ktor-serialization.kotlin_module'
pickFirst 'META-INF/ktor-client-core.kotlin_module'
pickFirst 'META-INF/ktor-io.kotlin_module'
pickFirst 'META-INF/ktor-http.kotlin_module'
pickFirst 'META-INF/ktor-client-content-negotiation.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx-json.kotlin_module'
pickFirst 'META-INF/ktor-websockets.kotlin_module'
pickFirst 'META-INF/ktor-utils.kotlin_module'
}
}
Внесение изменений в AndroidManifest
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Main Manifest . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/AndroidManifest.xml
. - Вставьте в тег
application
следующие строки:
Copy
Full screen
Small screen
- xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
- Добавьте в основную Activity
com.unity3d.player.UnityPlayerActivity
атрибутandroid:exported
со значениемtrue
.
Пример
Copy
Full screen
Small screen
- xml
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
</application>
</manifest>
Поднятие версии Target API Level до 33
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - В поле
Target API Level выберите значениеAPI Level 33
. - Запустите сборку приложения под Android. В сообщении об отсутствии скачанного API нажмите
Update Android SDK . Процесс сборки продолжится после того, как необходимые файлы будут скачаны.
Примечание
После скачивания API вы можете изменить значение в поле Target API Level на значение по умолчанию —
latest
.Использование плагина Gradle 7.2
- Скачайте Gradle 7.2.
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - Перейдите в раздел
External Tools > Android . - Снимите флажок
Gradle installed with Unity . - В поле
Gradle нажмитеBrowse и выберите директорию с файлами Gradle 7.2.
Изменение версии плагина Gradle в Base Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Base Gradle Template . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/baseProjectTemplate.gradle
. - В разделе зависимостей укажите версию плагина 4.1.0, как показано в примере:
Copy
Full screen
Small screen
- groovy
classpath 'com.android.tools.build:gradle:4.1.0'
Добавление исключений META/INF в Launcher Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Launcher Gradle Templatere . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/launcherTemplate.gradle
. - Добавьте в конец файла следующие строки:
Copy
Full screen
Small screen
- groovy
android {
packagingOptions {
pickFirst 'META-INF/kotlinx-serialization-json.kotlin_module'
pickFirst 'META-INF/kotlinx_coroutines_core.version'
pickFirst 'META-INF/kotlinx-serialization-core.kotlin_module'
pickFirst 'META-INF/atomicfu.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx.kotlin_module'
pickFirst 'META-INF/ktor-events.kotlin_module'
pickFirst 'META-INF/ktor-websocket-serialization.kotlin_module'
pickFirst 'META-INF/ktor-serialization.kotlin_module'
pickFirst 'META-INF/ktor-client-core.kotlin_module'
pickFirst 'META-INF/ktor-io.kotlin_module'
pickFirst 'META-INF/ktor-http.kotlin_module'
pickFirst 'META-INF/ktor-client-content-negotiation.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx-json.kotlin_module'
pickFirst 'META-INF/ktor-websockets.kotlin_module'
pickFirst 'META-INF/ktor-utils.kotlin_module'
}
}
Внесение изменений в AndroidManifest
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Main Manifest . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/AndroidManifest.xml
. - Вставьте в тег
application
следующие строки:
Copy
Full screen
Small screen
- xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
- Добавьте в основную Activity
com.unity3d.player.UnityPlayerActivity
атрибутandroid:exported
со значениемtrue
.
Пример
Copy
Full screen
Small screen
- xml
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
</application>
</manifest>
Поднятие версии Target API Level до 33
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Preferences (Windows) илиUnity > Preferences (macOS). - В поле
Target API Level выберите значениеAPI Level 33
. - Запустите сборку приложения под Android. В сообщении об отсутствии скачанного API нажмите
Update Android SDK . Процесс сборки продолжится после того, как необходимые файлы будут скачаны.
Примечание
После скачивания API вы можете изменить значение в поле Target API Level на значение по умолчанию —
latest
.Добавление исключений META/INF в Launcher Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Launcher Gradle Templatere . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/launcherTemplate.gradle
. - Добавьте в конец файла следующие строки:
Copy
Full screen
Small screen
- groovy
android {
packagingOptions {
pickFirst 'META-INF/kotlinx-serialization-json.kotlin_module'
pickFirst 'META-INF/kotlinx_coroutines_core.version'
pickFirst 'META-INF/kotlinx-serialization-core.kotlin_module'
pickFirst 'META-INF/atomicfu.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx.kotlin_module'
pickFirst 'META-INF/ktor-events.kotlin_module'
pickFirst 'META-INF/ktor-websocket-serialization.kotlin_module'
pickFirst 'META-INF/ktor-serialization.kotlin_module'
pickFirst 'META-INF/ktor-client-core.kotlin_module'
pickFirst 'META-INF/ktor-io.kotlin_module'
pickFirst 'META-INF/ktor-http.kotlin_module'
pickFirst 'META-INF/ktor-client-content-negotiation.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx-json.kotlin_module'
pickFirst 'META-INF/ktor-websockets.kotlin_module'
pickFirst 'META-INF/ktor-utils.kotlin_module'
}
}
Добавление исключений META/INF в Main Gradle Template
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Main Gradle Templatere . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/mainTemplate.gradle
. - Добавьте в конец файла следующие строки:
Copy
Full screen
Small screen
- groovy
android {
packagingOptions {
pickFirst 'META-INF/kotlinx-serialization-json.kotlin_module'
pickFirst 'META-INF/kotlinx_coroutines_core.version'
pickFirst 'META-INF/kotlinx-serialization-core.kotlin_module'
pickFirst 'META-INF/atomicfu.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx.kotlin_module'
pickFirst 'META-INF/ktor-events.kotlin_module'
pickFirst 'META-INF/ktor-websocket-serialization.kotlin_module'
pickFirst 'META-INF/ktor-serialization.kotlin_module'
pickFirst 'META-INF/ktor-client-core.kotlin_module'
pickFirst 'META-INF/ktor-io.kotlin_module'
pickFirst 'META-INF/ktor-http.kotlin_module'
pickFirst 'META-INF/ktor-client-content-negotiation.kotlin_module'
pickFirst 'META-INF/ktor-serialization-kotlinx-json.kotlin_module'
pickFirst 'META-INF/ktor-websockets.kotlin_module'
pickFirst 'META-INF/ktor-utils.kotlin_module'
}
}
Внесение изменений в AndroidManifest
- Откройте свой проект в Unity Editor.
- В главном меню выберите пункт
Edit > Project Settings . - Перейдите в раздел
Player > Android > Other Settings . - Установите флажок
Custom Main Manifest . - Откройте в текстовом редакторе файл
Assets/Plugins/Android/AndroidManifest.xml
. - Вставьте в тег
application
следующие строки:
Copy
Full screen
Small screen
- xml
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
- Добавьте в основную Activity
com.unity3d.player.UnityPlayerActivity
атрибутandroid:exported
со значениемtrue
.
Пример
Copy
Full screen
Small screen
- xml
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
</application>
</manifest>
Была ли статья полезна?
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.