unity minify ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅
Gradle for Android
Gradle is an Android build system that automates a number of build processes and prevents many common build errors. In Unity, Gradle reduces the method reference count in DEX (Dalvik Executable format) files, which means you are less likely to come across DEX limit problems.
| Unity version | Gradle version |
|---|---|
| 2020.3 starting from 2020.3.15f1 | 6.1.1 |
| 2020.1, 2020.2, 2020.3 up to and including 2020.3.14f1 | 5.6.4 |
| 2019.4 | 5.1.1 |
To learn more about:
Building or exporting a Gradle project
To build a Gradle project, follow these steps:
Exported Gradle project structure
Unity 2019.3 and newer versions create a Gradle project with two modules:
build.gradle templates
Gradle templates describe and configure how to build your Android app with Gradle. Each Gradle template represents a singleGradle project. Gradle projects can include, and depend on other Gradle projects.
A Gradle template consists of the following files:
Customizing your Gradle build
You can provide a custom Gradle build template and select minification options in the Publishing Settings section of the Player Settings Settings that let you set various player-specific options for the final game built by Unity. More info
See in Glossary window.
Providing a custom Gradle build template
You can use a custom build.gradle file for the unityLibrary module when you build the APK from Unity. This file contains specific build instructions specified in template variables. For a list of template variables, see the next section.
To use your own build.gradle file for the unityLibrary module, follow these steps:
Unity then generates a default mainTemplate.gradle file in your Projectβs Assets/Plugins/Android/ folder. The path to the new file also appears under the Custom Main Gradle Template option in the Player Settings. Double-click the mainTemplate.gradle file in the Project view to open it in an external text editor.

By default, Unity uses the settingsTemplate.gradle file from the Unity install directory to create the settings.gradle file for your build. The settings.gradle file contains project components which are involved in the build process. Unity creates the following components by default, which should always be included in the settings.gradle file:
Additionally, if you add Android library plugins to your project, Unity automatically includes them in the settings file by replacing the **INCLUDES** entry.
If you want to add additional components to the settings.gradle file that Unity doesnβt include by default, create a settingsTemplate.gradle file in your projectβs Assets/Plugins/Android/ folder. This overrides the default template.
If you use your own settingsTemplate.gradle file, it must contain the following lines:
IPostGenerateGradleAndroidProject
IPostGenerateGradleAndroidProject returns the path to the unityLibrary module. This keeps everything similar to versions earlier than Unity 2019.3 and doesnβt require any further changes, which means Unity can reach the appβs manifest and resources in a consistent way across versions.
Template variables
The mainTemplate.gradle file can contain the following variables:
| Variable: | Description: |
|---|---|
| DEPS | List of project dependencies In the context of the Package Manager, a dependency is a specific package version (expressed in the form package_name@package_version ) that a project or another package requires in order to work. Projects and packages use the dependencies attribute in their manifests to define the set of packages they require. For projects, these are considered direct dependencies; for packages, these are indirect, or transitive, dependencies. More info See in Glossary ; that is, the libraries that the Project uses. |
| APIVERSION | API version to build for (for example, 25). |
| MINSDKVERSION | Minimum API version (for example, 25). |
| BUILDTOOLS | SDK Build tools used (for example, 25.0.1). |
| TARGETSDKVERSION | API version to target (for example, 25). |
| APPLICATIONID | Android Application ID (for example, com.mycompany.myapp). |
| MINIFY_DEBUG | Enable minify for debug builds (true or false). |
| PROGUARD_DEBUG | Use proguard for minification in debug builds (true or false.) |
| MINIFY_RELEASE | Enable minify for release builds (true or false). |
| PROGUARD_RELEASE | Use proguard for minification in release builds (true or false). |
| USER_PROGUARD | Custom user proguard file (for example, proguard-user.txt ). |
| SIGN | Complete the signingConfigs section if this build is signed. |
| SIGNCONFIG | Set to signingConfig signingConfig.release if this build is signed. |
| DIR_GRADLEPROJECT | The directory where Unity creates the Gradle project. |
| DIR_UNITYPROJECT | The directory of your Unity Project. |
Minification
You can use Proguard minification to shrink and optimize your app. To activate this option, follow these steps:
Note: Proguard might strip out important code that your app needs, so use these options carefully.
To generate a custom proguard.txt file, enable the User Proguard File setting in the Publishing Settings section of the Player Settings. This immediately generates the proguard.txt file in your Projectβs Assets/Plugins/Android/ folder.
To learn more about ProGuard, see the ProGuard manual.
Errors when building with Gradle
If an error occurs when you use Gradle to build your app for Android, Unity displays an error dialog box. Select the Troubleshoot button to open the Gradle troubleshooting Unity documentation in your systemβs browser.
Unity: Π‘Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ΄ Android ΠΈΠ»ΠΈ Β«ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β»
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΠ½Π΄ΡΠΎΠΈΠ΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΡΡ APK Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²Π»Π΅ΡΠ΅ΡΡ Π² ΠΊΠΎΠΏΠ΅Π΅ΡΠΊΡ. ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° APK Π² 50 ΠΠ± Π² Google Play Π²ΡΠ»ΠΈΠ²Π°Π΅ΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΠΏΡΠΈ Π°ΠΏΠ»ΠΎΠ°Π΄Π΅.
ΠΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈ ΠΏΠΎΠ΄ ΠΠ½Π΄ΡΠΎΠΈΠ΄ Π½Π° Unity 2D-ΠΈΠ³ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·ΠΎΠ±ΠΈΠ»ΡΠ΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°ΠΌΠΈ (Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Ρ ΠΎΠ±Π»Π°ΡΡΡΠΌΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ) ΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌΠΈ Π·Π²ΡΠΊΠ°ΠΌΠΈ, ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ° APK. ΠΠ°Π±Π΅Π³Π°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΠ΅ΡΠΈΠ² Π΅Π΅ ΠΈ ΡΠ½ΠΈΠ·ΠΈΠ² Π²Π΅Ρ Π² 1,5 ΡΠ°Π·Π°, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π² 1,5 ΡΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠΉ. ΠΠ°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡ, Π½Π΅ ΠΏΡΠ°Π²Π΄Π° Π»ΠΈ?
ΠΡΡΠ°ΡΡΡ ΠΏΠΎΠ±ΠΎΡΠΎΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ-ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠΎΠ², ΠΌΡ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈΡΡ ΠΊ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΡ Unity. ΠΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΡΠ°ΠΌ Π΄Π°Π½Π½Π°Ρ ΡΠ΅ΠΌΠ° ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Π»ΠΈΡΡ Π²ΡΠΊΠΎΠ»ΡΠ·Ρ. Π£ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠΏΠ΅ΠΊΡΡ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΈ Π°ΡΠΏΠ΅ΠΊΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ APK ΠΌΠ΅Π½ΡΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡΠ³ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π½Π°ΡΠ»ΠΈ. ΠΠΎΡΠΎΠΌΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠΌ Ρ Π²Π°ΠΌΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ.
ΠΠΠΠΠ ΠΠΠΠΠΠ―
Π£ΡΠΎΡΠ½ΠΈΠΌ Π½Π°ΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π Π½Π°ΡΠ΅ΠΉ ΠΈΠ³ΡΠ΅ ΡΠΎΠ±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ pixel-perfect. ΠΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· Π°Π»ΡΡΠ°-ΠΊΠ°Π½Π°Π»Π° ΠΈΠΌΠ΅ΡΡ ΠΏΠ»Π°Π²Π½ΡΠΉ Π³ΡΠ°Π΄ΠΈΠ΅Π½Ρ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡΡ, Π° Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΎΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΠ»Π°Π²Π½ΡΠΉ Π³ΡΠ°Π΄ΠΈΠ΅Π½Ρ.
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² ΡΠ°Π·ΠΌΠ΅Ρ ΠΠ Π Π²Π½ΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PNG ΠΈ JPG.
ΠΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PNG
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π² Photoshop Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ: Compression->None/Fast, Intrelaced: Yes. ΠΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 9000 ΠΠ±Π°ΠΉΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ±ΠΎΡΠΊΡ ΠΎΠ½ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΠ΅ ΠΆΠ΅ 236 ΠΠ±Π°ΠΉΡ.
ΠΡΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΡΠ»ΠΎΠ²Π° ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Unity ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ Π°ΡΡΠ΅ΡΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠ½ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΡ PNG, ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΠΎΠΌΡ Π² ΡΠΎΡΠΎΡΠΎΠΏΠ΅ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ: Compression->Smallest/Slow, Intrelaced: No. Π Unity ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ PNG Π² ΡΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ°ΠΉΠ»Π°.
ΠΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JPG
ΠΠΏΡΡΡ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ JPG Π²Π½ΠΎΡΡΡ Π²ΠΊΠ»Π°Π΄ Π² ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ. ΠΠΎΠΊΠ° Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ Unity Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π°ΡΡΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JPG. ΠΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΡΡ ΠΆΠ΅ ΡΠ°ΠΌΡΡ (ΠΏΠ΅ΡΠ²ΡΡ) ΠΊΠ°ΡΡΠΈΠΊΡ Π² JPG ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ°ΠΉΠ» Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ (75 ΠΠ±Π°ΠΉΡ). ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ±ΠΎΡΠΊΠ΅ ΠΎΠ½ Π·Π°Π½ΡΠ» Π½Π΅ΠΏΠΎΠΌΠ΅ΡΠ½ΡΡ 767 ΠΠ±Π°ΠΉΡ (*).
ΠΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Π½Π° Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π½ΡΡ
ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ, Π·Π΄Π΅ΡΡ Ρ ΠΏΡΠΈΠ²ΠΎΠΆΡ Π»ΠΈΡΡ ΠΌΠ°Π»ΡΡ ΡΠ°ΡΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ. Π Π΄ΡΡΠ³ΠΈΡ
ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ
Π½Π°ΠΌ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΡΠ΄Π°Π²Π°Π»ΠΎΡΡ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅Ρ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· PNG Π² JPG.
ΠΡΠΈΡΠΈΠ½ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»Π΅Π½ΠΈΡ Π²ΡΡΠ²ΠΈΡΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ.
Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ½ΠΎΠ²Π° ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ Unity, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠ»Π΄ΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° Unity Ρ Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ JPG Π²ΡΡΡΠ½ΠΈΡΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π±ΠΎΡΡ Ρ JPG Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ Π½ΠΈΠΆΠ΅.
ΠΠΠ£ΠΠ
ΠΠ»Ρ Π·Π²ΡΠΊΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡΡ Π΄Π²Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°: Audio Format ΠΈ ForceToMono.
Π€Π°ΠΉΠ»Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ WAV Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅ΡΡΠ° Π² ΡΠ±ΠΎΡΠΊΠ΅, ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ MP3 (Π²ΠΊΠ»Π°Π΄ Π² ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π²Π΅Π½ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»Π°). Π‘ΡΠ΅ΡΠ΅ΠΎ WAV ΡΠ°ΠΉΠ» Π·Π°ΠΉΠΌΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π΅ΡΠ»ΠΈ Π²ΡΡΡΠ°Π²ΠΈΡΡ ForceToMono = true. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Β«ΠΌΠΎΠ½ΠΎΒ» Π΅ΡΡ Π΄ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° (ΡΠΎΠ³Π΄Π° ForceToMono Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΠ΅).
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° WAV ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΈΠΌΠΏΠΎΡΡΠ° AudioFormat = Compressed, ΡΠΎ Π² ΡΠ±ΠΎΡΠΊΠ΅ ΠΎΠ½ Π·Π°ΠΉΠΌΡΡ ΠΌΠ΅ΡΡΠ° ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ MP3 ΡΠ°ΠΉΠ» Π²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° (Audacity: variable bitrate, 220-260 kbps). Π’ΠΎ Π΅ΡΡΡ Unity ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π·Π²ΡΠΊ Π² ΡΠΎΡΠΌΠ°Ρ MP3.
ΠΠ»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΡΡΠΌΠΎ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΊΠ»Π°Π΄Π° Π² ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡΡ. ΠΠ½ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅ΡΡΠ°, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ Π·Π²ΡΠΊΠΎΠΌ Π² RAM.
Π Π’ΠΠΠΠ Π¬ Π ΠΠΠΠΠ ΠΠ’ΠΠ«Π₯ Π¨ΠΠΠΠ₯ Π ΠΠΠ¨ΠΠ Π¦ΠΠΠ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎΠ²Π΅Ρ: Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΠΠ£
* ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡ
;
* Π½Π΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π°ΡΠ»Π°ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΡΠ°ΡΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² NGUI.
(ΠΠΎ ΡΡΠΎ ΠΌΡ ΠΎΡΠ²Π»Π΅ΠΊΠ»ΠΈΡΡ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΠΌΡ.)
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΎ dll
ΠΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π² ΡΠ±ΠΎΡΠΊΡ dll ΠΈ ΠΏΡΠΈΠ·ΡΠ²Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ dll (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΆΡΠ»ΡΡ ). Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ System.dll (Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ APK 2 ΠΠ±Π°ΠΉΡ). ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, System.dll Π²ΡΡ ΡΠ°Π²Π½ΠΎ (ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° Unity 4.5.5) Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ±ΠΎΡΠΊΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅Ρ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ Mono.Security.dll. ΠΠΎΡΠΎΠΌΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Unity Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½Π°.
Π Π²ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ ) dll ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π²ΠΎ ΠΈΠΌΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ Π½Π°Ρ Π²ΡΡ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
(ΠΡΠΎΡΡΠ±Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠ΄Ρ ΠΎΡΠ΅Π½Ρ ΡΠ°Π΄ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ, Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡΠΌ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΊΡΠΈΡΠΈΠΊΠ΅, Π²ΠΎΠ·ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΌ. Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎ ΡΠ°Π΄ Π±ΡΠ΄Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΡΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°.)
ΠΠΈΡΠ΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ Unity ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π§Π°ΡΡΡ 2: Android
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π°ΡΠΈΠ²Π½ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π½Π° Unity ΠΏΠΎΠ΄ iOS ΠΈ Android, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ iOS. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΎΠΏΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅ΠΏΡΡ ΠΏΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄Π»Ρ Android, ΡΡΠ°ΡΠ°ΡΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡ ΠΎΠΆΡΡ ΡΡΡΡΠΊΡΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Android Π² Unity ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ Jar (ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ java ΠΊΠΎΠ΄), Aar (ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ java ΠΊΠΎΠ΄ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠΌ), ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ². Π ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΊΠΎΠ΄ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ, ΠΈ ΡΠΎ ΡΡΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β Π·Π°Π²Π΅ΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ gradle ΠΏΡΠΎΠ΅ΠΊΡ (ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΡΠΌΠΎ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Unity ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ ΠΈ unit-ΡΠ΅ΡΡΡ, ΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Android ΠΏΡΠΎΠ΅ΠΊΡ Ρ Activity Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π Π² gradle ΡΠΊΡΠΈΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ task, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Aar Π² Assets:
ΠΠ΄Π΅ΡΡ my-plugin β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ; deployAarPath β ΠΏΡΡΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Jar ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Unity ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π°ΡΡΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Aar, Π° ΠΎΠ½ Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ: ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΡΡΡ ΠΈ ΡΠ²ΠΎΠΉ AndroidManifest.xml, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΈΠ²Π°ΡΡΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΈ gradle-ΡΠ±ΠΎΡΠΊΠ΅. Π‘Π°ΠΌΠΈ ΡΠ°ΠΉΠ»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π² Assets/Plugins/Android. ΠΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ iOS: Π΅ΡΠ»ΠΈ ΠΏΠΈΡΠ΅ΡΠ΅ ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΠΉΡΠ΅ Π²ΡΠ΅ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡ Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π½Π°ΡΠΈΠ²Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ iOS β ΠΏΡΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ. Π Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ, Π³Π΄Π΅ Ρ ΠΎΡΠ΅ΡΡΡ, Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Unity ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, Π²ΠΊΠ»ΡΡΠ°ΡΡ Π»ΠΈ ΡΠ°ΠΉΠ» Π² Android ΡΠ±ΠΎΡΠΊΡ ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Java ΠΈ Unity ΠΊΠΎΠ΄ΠΎΠΌ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ GameObject Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ Π΄Π»Ρ iOS, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² ΡΠ²ΠΎΠΉ UnitySendMessage ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ»Π±Π΅ΠΊΠΈ ΠΈΠ· C#. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ AndroidJavaProxy β Π‘# ΠΊΠ»Π°ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Java ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΠ°Π·Π²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΡΡΠ°Π²Π»Ρ ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΈΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ Java ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π° ΠΏΠΎΡΠΎΠΌ ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ²Ρ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ JavaMessageHandler. ΠΠΎΠΏΡΡΠ½ΠΎ ΡΠ΅ΡΠΈΠΌ Π·Π°Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ iOS, Π½Π° Android Unity ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ loop circle, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ android.os.Handler ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ΠΌΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Java ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΠΊΠΎΠ»Π±Π΅ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠ΅ ΡΠΎΡ ΠΆΠ΅ AndroidJavaProxy.
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ Java ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠ»Π±Π΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ Ρ ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠΌ:
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ»Π±Π΅ΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Json, ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ AndroidJavaProxy Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π°Π±ΠΎΡ ΡΠ°Π·Π½ΠΎΡΠΈΠΏΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ string ΠΈΠ»ΠΈ array. ΠΡΠΈΠ²ΠΎΠΆΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠ° Π΄Π»Ρ ΠΊΠΎΠ»Π±Π΅ΠΊΠ°.
Π’ΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΠΎΠ΄ Android Π΄Π»Ρ Unity: ΠΎΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Activity, Π° ΡΠ°ΠΊΠΆΠ΅ onActivityResult ΠΈ Π·Π°ΠΏΡΡΠΊ Application. ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΎΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ UnityPlayerActivity ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ»Π°ΡΡ Ρ launch activity Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅. Π’ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Application. ΠΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½. Π’Π°ΠΊΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ. ΠΡΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ³ΡΡ. ΠΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΠ΄ΡΡ ActivityLifecycleCallbacks ΠΈ ContentProvider.
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ InitProvider Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅ (Aar Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ):
Π’ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Application Π½Π° ΡΡΠ°ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π²ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ Content Provider. Π Π΅ΡΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ½ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ Content Provider, Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ onCreate ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π° ΡΡΠ°ΡΡΠ΅ Application, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ ActivityLifecycleCallbacks. Π ΠΎΠ½ ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ onActivityCreated, onActivityStarted, onActivityResumed, onActivityPaused, onActivityStopped, onActivitySaveInstanceState ΠΈ onActivityDestroyed. ΠΡΠ°Π²Π΄Π° ΡΠΎΠ±ΡΡΠΈΡ Π±ΡΠ΄ΡΡ ΠΈΠ΄ΡΠΈ ΠΎΡ Π²ΡΠ΅Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠΈ, Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π΅Π³ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠΎΠΈΡ:
ΠΠ΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ onActivityResult, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΎΡ ΠΏΠΎΠΊΠ°Π·Π° Π½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° ΠΏΠΎΠ²Π΅ΡΡ ΠΈΠ³ΡΡ. ΠΠ°ΠΏΡΡΠΌΡΡ ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Activity, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ΅ Activity, ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΎΡ Π½Π΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π²Π΅ΡΠ½Π΅Ρ Π½Π°ΠΌ ΠΈ ΡΠΈΠ½ΠΈΡΠΈΡΡΠ΅Ρ. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ, ΡΠΊΠ°Π·Π°Π² ΡΠ΅ΠΌΡ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π½Π΅ ΠΌΠ΅Π»ΡΠΊΠ°Π» Π±Π΅Π»ΡΠΉ ΡΠΊΡΠ°Π½:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Unity Java, ΠΈ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Π² Aar Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ· maven ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π°ΡΠ΅ΠΌΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ? Unity Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ gradle ΠΏΡΠΎΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² libs ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² Π±ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ. ΠΡΡΠ³ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠΌ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π½Π΅ Π±ΡΠ΄ΡΡ. ΠΠΎΠ»ΠΎΠΆΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΡΠ΄ΠΎΠΌ Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Aar Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Ρ ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ: ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΈ ΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½ΡΠΆΠ½Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ Unity ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌ. Π Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ ΡΠΎΠΆΠ΅ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ Π² unitypackage, ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π²Π΅ΡΡΠΈΠΉ, gradle ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΡΡΠ³Π½Π΅ΡΡΡ Π½Π° Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠΎΠ². Π’Π°ΠΊΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΈ Π²ΡΡΡΠ½ΡΡ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π²ΡΠΊΠ°ΡΠ°Π² ΠΈΠ· maven-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ β Π·Π°Π΄Π°ΡΠ° Π½Π΅ ΡΠ°ΠΊΠ°Ρ ΡΠΆ ΠΏΡΠΎΡΡΠ°Ρ.
ΠΡΠΊΠ°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΡΠΎΠΆΠ΅ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ. Π₯ΠΎΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΠΌΠΎ ΡΠΊΠ°ΡΠ°Π΅Ρ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½ΡΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΡΠ΄Π°Π»ΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ. Π ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ΡΡΡ. ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Google Play Services ΠΈ Firebase. ΠΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Unity ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΠΌ xml ΡΠ°ΠΉΠ»Ρ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌ ΠΏΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ, ΡΡ ΠΎΠΆΠ΅ΠΌΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π² build.gradle (Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ):
ΠΠ°Π»Π΅Π΅ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π² ΠΌΠ΅Π½Ρ Unity ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Assets β Play Services Resolver β Android Resolver β Resolve ΠΈ Π²ΡΠ°Π»Ρ! Π£ΡΠΈΠ»ΠΈΡΠ° ΠΏΡΠΎΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ xml ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΡ Π³ΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½ΡΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ ΡΠΊΠ°ΡΠ°Π΅Ρ ΠΈΠ· maven ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π² Assets/Plugins/Android. ΠΡΠΈΡΠ΅ΠΌ ΠΎΠ½Π° ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΡΠΊΠ°ΡΠ°Π½Π½ΠΎΠ΅ ΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ, Π° ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ ΠΌΡ, ΠΎΠ½Π° ΡΡΠΎΠ³Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°ΡΡ Resolve ΡΠ΅ΡΠ΅Π· ΠΌΠ΅Π½Ρ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΡΠΈΠΉ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Android Sdk, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Unity ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ target β Android. Π ΡΠΎΠΌ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ CocoaPods Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ iOS Π±ΠΈΠ»Π΄ΠΎΠ², ΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π·Π°Π΄Π°ΡΡ, ΡΡΠΎΠ±Ρ Unity Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»Π° xcworkspace Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° XCode.
Unity ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΡΠ°Π»Π° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ gradle ΡΠ±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ Android, Π° ADT ΠΎΠ±ΡΡΠ²ΠΈΠ»Π° ΠΊΠ°ΠΊ legacy. ΠΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ template Π΄Π»Ρ gradle ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Aar ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°Ρ , ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠ². ΠΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ sdk Π΅ΡΠ΅ Π½Π΅ ΡΡΠΏΠ΅Π»ΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΉ ΡΠΎΠ²Π΅Ρ, Π»ΡΡΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΏΠΎΠ΄ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠΈ: ΡΠ΄Π°Π»ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ ΠΈΡ ΡΠ΅ΡΠ΅Π· xml Π΄Π»Ρ Unity Jar Resolver, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π²Π΅ΡΡ java ΠΊΠΎΠ΄ ΠΈ ΡΠ΅ΡΡΡΡΡ Π² Aar. ΠΠ½Π°ΡΠ΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π»ΠΎΠΌΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΈ ΠΎΡΠ½ΠΈΠΌΠ°ΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Unity β Enable Multidex ΠΈΠ»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²
Π‘ ΡΠ΅Π³ΠΎ Π²ΡΠ΅ Π½Π°ΡΠ°Π»ΠΎΡΡ
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ. ΠΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³ΡΡ ΠΏΠΎΠ΄ Android Π½Π° Π΄Π²ΠΈΠΆΠΊΠ΅ Unity Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡΠΈ Π±ΠΈΠ»Π΄Π΅. ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°ΠΊΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΊΠ°ΠΊ Appodeal ΠΈ Google Play Games ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΡΠ΅Π²ΡΡΠΈΠ»ΠΎ 65K ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π±ΠΈΠ»Π΄Π° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°:
ΠΠΎΡΠΈΡΠ°Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Appodeal, ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ Π½Π°Π΄ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Multidex. Π Π΅ΡΠΈΠ» ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ° ΡΠ°ΠΉΡΠ΅ Π±ΡΠ»Π° ΡΡΡΠ»ΠΊΠ° Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ Π΄Π»Ρ Android Studio. Π ΠΌΡ ΡΠΎ Ρ Π²Π°ΠΌΠΈ Π½Π° Unity, ΡΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ?
Π Π²ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ΅Π³ΠΎ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
ΠΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ Gradle
Π§ΡΠΎΠ±Ρ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π° Android Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Gradle Π² Unity Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΠ°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Gradle
1. Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Gradle, Π²Π°ΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΉΠ» Π½Π°ΡΡΡΠΎΠ΅ΠΊ Gradle, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ΅ (Assets/Plugins/Android/mainTemplate.gradle). ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ»Π° mainTemplate.gradle ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΈ Π²ΡΡΠ°Π²ΡΡΠ΅ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ Assets/Plugins/Android/:
2. ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ multiDexEnabled true Π² ΠΎΠ±ΡΠ΅ΠΊΡ defaultConfig
3. ΠΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ API Android ΡΠ°Π²Π΅Π½ 20 ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΡ ΡΡΡΠΎΠΊΡ compile βcom.android.support:multidex:1.0.1β
4. ΠΠ°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΠΌ ΡΡΡΠΎΠΊΠΈ:
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΡΠ°ΠΉΠ»Π°:
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Multidex
ΠΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ API Android, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π½Π° 20 ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅.
ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π² Assets/Plugins/Android/AndroidManifest.XML. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ AndroidManifest ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.xml Π² ΠΌΠ΅ΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Unity. ΠΠΎ Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π±ΡΠ» ΠΎΠ½, Π²Ρ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ(android:name) ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ° ΡΡΠΎΠΌ Π²ΡΠ΅. ΠΡΠΈΠ±ΠΊΠ° ΠΈΡΡΠ΅Π·Π½Π΅Ρ, ΠΈ Π²Ρ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΡΠ±ΠΈΠ»Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
Android Player settings
This page details the Player settings specific to the Android platform. For a description of the general Player settings, see the Player settings.

Documentation for the properties is grouped according to their respective sections in the Player UI (User Interface) Allows a user to interact with your application. Unity currently supports three UI systems. More info
See in Glossary :
Resolution and Presentation
Use the Resolution and Presentation section to customize aspects of the screenβs appearance.
Other Resolution and Presentation properties are grouped under these sections:
Resolution Scaling
Supported Aspect Ratio
Set the Aspect Ratio Mode for the device. You can choose from Legacy Wide Screen (1.86), Native Aspect Ratio, and Custom. When you choose Custom, the Up To field appears.
Set a custom maximum screen width with the Up To property. This property is only available when Aspect Ratio Mode is set to Custom.
Orientation
Choose the gameβs screen orientation from the Default Orientation drop-down menu:
| Setting | Function |
|---|---|
| Portrait | Home button appears at the bottom. |
| Portrait Upside Down | Home button appears at the top. |
| Landscape Left | Home button appears on the right side. |
| Landscape Right | Home button appears on the left side. |
| Auto Rotation | Allow the screen to automatically rotate to any of the orientations specified by the Allowed Orientations for Auto Rotation settings. This is the default. |
Note: This setting is shared between iOS Appleβs mobile operating system. More info
See in Glossary and Android devices.
When you set the orientation to Auto Rotation, the Allowed Orientations for Auto Rotation section appears.
Allowed Orientations for Auto Rotation
This section is only visible when Default Orientation is set to Auto Rotation.

Because Auto Rotation changes screen orientation to match the device, you may want to limit the screen orientations allowed (for example, locking a device to landscape).
Enable each orientation you want to allow by checking its box in this section:
| Setting | Function |
|---|---|
| Portrait | Allow portrait orientation. |
| Portrait Upside Down | Allow portrait upside-down orientation. |
| Landscape Right | Allow landscape right orientation (home button on the left side). |
| Landscape Left | Allow landscape left orientation (home button is on the right side). |
Other
Splash Image
Above the common Splash Screen settings, you can use the Virtual Reality Splash Image setting to specify a custom splash image for Virtual Reality A system that immerses users in an artificial 3D world of realistic images and sounds, using a headset and motion tracking. More info
See in Glossary displays.

Below the common Splash Screen settings, you can set up an Android-specific Static Splash Image.

Use the Android Splash Screen property to specify the texture that should be used for the Android splash screen. The standard size for the splash screen image is 320×480.
Choose how you want Unity to scale the splash image to fit the deviceβs screen from the Splash Scaling drop-down menu. The options are:
Other Settings
This section allows you to customize a range of options organized into the following groups:
Rendering
Use these settings to customize how Unity renders your game for the Android platform.
Vulkan Settings

| Property | Function |
|---|---|
| SRGB Write Mode | Enable this option to allow Graphics.SetSRGBWrite() on Vulkan renderer to toggle the sRGB write mode during the frame. Enabling this has a negative impact on performance. |
| Number of swapchain buffers | Set this option to 2 for double-bufferin, or 3 for triple-buffering. Double-buffering might have a negative impact on performance. |
| Acquire swaichain image late as possible | Enable this option to acquire the backbuffer image right before the image is presented. This might improve performance if double-buffering is selected, but should otherwise be avoided on Android because it introduces additional memory bandwidth costs. |
| Apply display rotation during rendering | Enable this to perform all rendering in the native orientation of the display. This has a performance benefit on many devices. For more information, see documentation on Vulkan swapchain pre-rotation. |
Identification

| Property | Function |
|---|---|
| Package Name | Set the application ID, which uniquely identifies your app on the device and in Google Play Store. The basic structure of the identifier is com.CompanyName.AppName, and can be chosen arbitrarily. This setting is shared between iOS and Android. |
| Version | Enter the build version number of the bundle, which identifies an iteration (released or unreleased) of the bundle. The version is specified in the common format of a string containing numbers separated by dots (eg, 4.3.2). (Shared between iOS and Android.) |
| Bundle Version Code | An internal version number. This number is used only to determine whether one version is more recent than another, with higher numbers indicating more recent versions. This is not the version number shown to users; that number is set by the versionName attribute. The value must be set as an integer, such as β100β. You can define it however you want, as long as each successive version has a higher number. For example, it could be a build number. Or you could translate a version number in βx.yβ format to an integer by encoding the βxβ and βyβ separately in the lower and upper 16 bits. Or you could simply increase the number by one each time a new version is released. Keep this number under 100000 if Split APKs by target architecture is enabled. Each APK must have a unique version code so Unity adds 100000 to the number for ARMv7, and 200000 for ARM64. |
| Minimum API Level | Minimum Android version (API level) required to run the application. |
| Target API Level | Target Android version (API level) against which to compile the application. |
Configuration
API Compatibility Level
Script Compilation
Optimization

| Setting | Function | |
|---|---|---|
| Prebake Collision A collision occurs when the physics engine detects that the colliders of two GameObjects make contact or overlap, when at least one has a Rigidbody component and is in motion. More info See in Glossary Meshes | Enable this option to add collision data to Meshes at build time. | |
| Keep Loaded Shaders Alive | Enable this option to prevent shaders from being unloaded. | |
| Preloaded Assets | Set an array of Assets for the player to load on startup. To add new Assets, increase the value of the Size property and then set a reference to the Asset to load in the new Element box that appears. | |
| Strip Engine Code (IL2CPP only) | Specify whether the Unity Linker tool removes code for Unity Engine features that your Project doesnβt use. | |
| Managed Stripping Level | Defines how aggressively Unity strips unused managed (C#) code. When Unity builds your game or application, the Unity Linker process can strip unused code from the managed dynamically linked libraries used in the project. Stripping code can make the resulting executable significantly smaller, but can sometimes mistakenly remove code that is actually used. This setting allows you to choose how aggressively Unity should remove unused code. | |
| Disabled (Mono only) | Do not strip any code. (Managed code stripping is always enabled when using IL2CPP.) | |
| Normal | Remove unreachable managed code to reduce build size and Mono/IL2CPP build times. | |
| Aggressive (Experimental) | Remove code more aggressively than under the Normal option. Code size is further reduced, but this additional reduction may have side effects. For example, some methods may no longer be visible in the debugger and code accessed through reflection can be stripped. You can create a custom link.xml file to preserve specific classes and methods. See Managed bytecode stripping with IL2CPP for more information. | |
| Enable Internal profiler A window that helps you to optimize your game. It shows how much time is spent in the various areas of your game. For example, it can report the percentage of time spent rendering, animating, or in your game logic. More info See in Glossary (Deprecated) | Enable this option to get the profiler data from your device in the Android SDKβs adblogcat output while testing your projects. This is only available in development builds. | |
| Script Call Optimization | Choose how to optionally disable exception handling for a speed boost at runtime. See iOS Optimization for details. | |
| Slow and Safe | Use full exception handling (with some performance impact on the device when using the Mono scripting backend). | |
| Fast but no Exceptions | No data provided for exceptions on the device (the game runs faster when using the Mono scripting backend). Note: If you use this option with the IL2CPP Scripting Backend it wonβt impact performance; however, using it can avoid undefined behavior on release builds. | |
| Vertex Compression | Set vertex compression per channel. For example, you can enable compression for everything except positions and lightmap UVs. Whole Mesh The main graphics primitive of Unity. Meshes make up a large part of your 3D worlds. Unity supports triangulated or Quadrangulated polygon meshes. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. More info See in Glossary compression set per imported object overrides where vertex compression is set on objects. Everything else obeys these vertex compression settings. | |
| Optimize Mesh Data | Enable this option to remove any data from Meshes that is not required by the Material applied to them (such as tangents, normals, colors, and UVs). | |
Logging
Select what type of logging to allow in specific contexts.

Legacy
Enable the Clamp BlendShapes (Deprecated) option to clamp the range of blend shape weights in SkinnedMeshRenderers.

Publishing Settings
Use the Publishing Settings to configure how Unity builds your Android app. To open the Publishing Settings, go to Edit > Project Settings, select Player, select the Android icon, and open the Publishing Settings panel.
This section describes the different parts of the Publishing Settings panel and what they do. These include:
Project Keystore
Project Key
Build The process of compiling your project into a format that is ready to run on a specific platform or platforms. More info
See in Glossary
Minify
Split Application Binary

Note: For security reasons, Unity doesnβt save your Keystore An Android system that lets you store cryptographic key entries for enhanced device security. More info
See in Glossary or Project Key passwords.
Use the Keystore Manager window to create, configure and load your keys and keystores. You can load existing keystores and keys from either the Keystore Manager or the main Android Publishing panel. If you choose to load these from inside the Keystore Manager, Unity automatically fills the Project Keystore and Project Key fields.
For further information see documentation on the Keystore Manager.
Project Keystore
A keystore is a container that holds signing keys for application security. For details, see Android developer documentation: Android keystore system.
Use the Project Keystore settings to choose which keystore to use for the open project. When you load a keystore, Unity loads all of the keys in that keystore. To load and use an existing keystore in your open project:
If you donβt have an existing keystore, leave Custom Keystore disabled.
Unity uses a debug keystore to sign your application. A debug keystore is a working keystore. It allows you to sign the application and to test it locally. However, the app store will decline apps signed in this way. This is because the app store is unable to verify the validity and ownership of the application using a debug keystore.
| Property | Description |
|---|---|
| Custom Keystore | Enable Custom Keystore to load and use an existing Keystore. |
| Select | When Custom Keystore is enabled, use this to select the keystore you want to use. The keystores below the partition in the Select dropdown are stored in a predefined dedicated location. For more details, see Choosing your keystore location. |
| Path | You do not need to enter your keystore path. Unity provides this based on the keystore you choose. |
| Password | Enter your keystore password to load your chosen keystore. |
Project Key
When you load a keystore, Unity loads all of the keys in that keystore. Use the Project Key settings to choose one key from that keystore to use as the active key for the open project.
| Property | Description |
|---|---|
| Alias | Select the key you want to use for the open project. |
| Password | Enter your key Password. |
Build
By default, Unity builds your application with the Android manifests, Gradle An Android build system that automates several build processes. This automation means that many common build errors are less likely to occur. More info
See in Glossary templates and Proguard files provided with the Unity installation. Use the Build section of the Android Publishing Settings to change these.
To use a custom Android manifest, Gradle template or Proguard file:
The settings in the Build section only apply to the build process for the current project.
| Property | Description |
|---|---|
| Custom Main Manifest | Customisable version of the Android LibraryManifest.xml file. This file contains important metadata about your Android application. For further information about the responsibilities of the Main/Library Manifest see documentation on Android Manifest. |
| Custom Launcher Manifest | Customisable version of the Android LauncherManifest.xml file. This file contains important metadata about your Android applicationβs launcher. For further information about the responsibilities of the Launcher Manifest see documentation on Android Manifest. |
| Custom Main Gradle Template | Customisable version of the mainTemplate.gradle file. This file contains information on how to build your Android application as a library. For further information see documentation on Providing a custom Gradle Template. |
| Custom Launcher Gradle Template | Customisable version of the launcherTemplate.gradle_ file. This file contains instructions on how to build your Android application. For further information see documentation on build.gradle templates. |
| Custom Base Gradle Template | Customisable version of the baseProjectTemplate.gradle file. This file contains configuration that is shared between all other templates and Gradle projects. For further information see documentation on build.gradle templates. |
| Custom Gradle Properties Template | Customisable version of the gradle.properties file. This file contains configuration settings for the Gradle build environment. This includes: — The JVM (Java Virtual Machine) memory configuration. — A property to allow Gradle to build using multiple JVMs. — A property for choosing the tool to do the minification. — A property to not compress native libs when building an app bundle. |
| Custom Proguard File | Customisable version of the proguard.txt file. This file contains configuration settings for the minification process. If minification removes some Java code which should be kept, you should add a rule to keep that code in this file. For further information see documentation on Minification. |
Minify
Minification is a process which shrinks, obfuscates and optimises the code in your application. It can reduce the code size and make the code harder to disassemble. Use the Minify settings to define when and how Unity should apply minification to your build.
In most cases, itβs good practice to only apply minification to release builds, and not debug builds. This is because minification takes time, and can make the builds slower. It can also make debugging more complicated due to the optimisation that the code undergoes.
The settings in the Minify section only apply to the build process for the current project.
| Property | Description |
|---|---|
| Use R8 | By default, Unity uses Proguard for minification. Enable this checkbox to use R8 instead. |
| Release | Enable this checkbox if you want Unity to minify your applicationβs code in release builds. |
| Debug | Enable this checkbox if you want Unity to minify your applicationβs code in debug builds. |
Split Application Binary
Enable the Split Application Binary option to split your output package into main (APK) and expansion (OBB) packages. The Google Play Store requires this if you want to publish applications larger than 100 MB.
XR Settings

| Setting | Function | |
|---|---|---|
| Virtual Reality Supported | Enable this if your application is a virtual reality application, then add the required VR SDKs to the list. | |
| Virtual Reality SDKs | Add and remove Virtual Reality SDKs from the list. This list is only available when the Virtual Reality Supported is enabled. To add an SDK to the list, click the plus (+) button. To remove an SDK from the list, select it and then click the minus (-) button. Some of the SDKs provide extra settings that appear here. For details, see XR SDKs. | |
| Stereo Rendering Mode | Choose how you want to render for a virtual reality device. | |
| Multi Pass | This is the normal rendering mode. Unity renders the Scene A Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info See in Glossary twice: first to render the left-eye image; and then again for the right-eye image. | |
| Single Pass Multiview or Instanced (Preview) | Render both eye images at the same time into one packed Render Texture. This means that the whole Scene is only rendered once, which significantly reduces CPU processing time. | |
