El proceso de construcción de una aplicación Android se realiza en dos pasos:
El paquete de aplicación (archivo .apk) es generado con todas las librerías requeridas y los assets serializados.
El paquete de aplicación es desplegado en el dispositivo.
Ir a File > Build Settings… o File > Build & Run para abrir la caja de dialogo de los Build Settings.
Cuando “Build” sea seleccionado en el dialogo de los “Build settings” solamente el primer paso se ha completado. Oprimir “Build and Run” realiza ambos pasos. Ingresar Cmd+B invoca la construcción y ejecución automática, y el último archivo utilizado se asume como el objetivo de construcción.
Si usted selecciona Build en la caja de dialogo de los Build Settings, Unity hace el paso 1.
En el primer intento de construir una aplicación Android, Unity podría preguntarle sobre la ubicación del SDK de Android, el cual es requerido para construir e instalar tu aplicación Android en tu dispositivo.
Al construir la app de Android, asegúrate que el dispositivo tenga marcados las casillas de verificación en las configuraciones del dispositivo para “USB Debugging” y “Allow mock locations”.
Ejecute el comando adb devices
encontrado en su carpeta Android SDK/platform-tools
, para que el sistema operativo puede ver su dispositivo. Esto debería funcionar para Mac y Windows.
Unity construye un archivo de aplicación (archivo .apk) para que que dispongas de él, y también lo instala en el dispositivo conectado.
En algunos casos, su aplicación no se va a auto-iniciar (por ejemplo iPhone), por lo que tiene que desbloquear la pantalla, y en algunos casos raros encontrar la aplicación nueva instalada en el menú.
Debajo de los Build Settings también puedes encontrar la opción Texture Compression . Por defecto, Unity usa el formato de textura ETC1/RGBA16 para texturas que no tienen sobreescrituras individuales en el formato de textura (ver Texture 2D / Per-Platform Overrides).
If you want to build an application archive (an .apk file) targeting a specific hardware architecture, use the Texture Compression option to override this default behavior. Any texture that is set to not be compressed is left alone; only textures using a compressed texture format use the format selected in the Texture Compression option.
Para asegurarse que la aplicación sólo sea desplegada en dispositivos que soporten la compresión de textura seleccionada, Unity editará el AndroidManifest para incluir etiquetas que coincidan con el formato seleccionado.
Unity automatically adds certain permissions to the manifest. The logic is defined in the file PlatformDependent/AndroidPlayer/Editor/Managed/PostProcessor/Tasks/GenerateManifest.cs :: SetPermissionAttributes
. For example, if your script code references Application.internetReachability
, Unity automatically adds android.permission.ACCESS_NETWORK_STATE
to the manifest. You can edit GenerateManifest.cs
to remove it.
Lo siguiente es el contenido de /GenerateManifest.cs :: SetPermissionAttributes
:
private void SetPermissionAttributes(PostProcessorContext context,
AndroidManifest manifestXML,
AssemblyReferenceChecker checker)
{
// Add internet permission if it's necessary
if (_developmentPlayer || PlayerSettings.Android.forceInternetPermission || doesReferenceNetworkClasses(checker))
manifestXML.AddUsesPermission("android.permission.INTERNET");
if (checker.HasReferenceToMethod("UnityEngine.Handheld::Vibrate"))
manifestXML.AddUsesPermission("android.permission.VIBRATE");
if (checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::get_internetReachability")
|| checker.HasReferenceToMethod("UnityEngine.Application::get_internetReachability"))
manifestXML.AddUsesPermission("android.permission.ACCESS_NETWORK_STATE");
if (checker.HasReferenceToMethod("UnityEngine.Input::get_location")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneInput::get_lastLocation")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::get_locationServiceStatus")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::get_locationServiceEnabledByUser")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::StartLocationServiceUpdates")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::StopLocationServiceUpdates"))
{
manifestXML.AddUsesPermission("android.permission.ACCESS_FINE_LOCATION");
manifestXML.AddUsesFeature("android.hardware.location.gps", false /*encourage gps, but don't require it*/);
// This is an implied feature, make it not required to support Android TV
manifestXML.AddUsesFeature("android.hardware.location", false);
}
if (checker.HasReferenceToType("UnityEngine.WebCamTexture"))
{
manifestXML.AddUsesPermission("android.permission.CAMERA");
// By default we don't require any camera since a WebCamTexture may not be a crucial part of the app.
// We need to explicitly say so, since CAMERA otherwise implicitly marks camera and autofocus as required.
manifestXML.AddUsesFeature("android.hardware.camera", false);
manifestXML.AddUsesFeature("android.hardware.camera.autofocus", false);
manifestXML.AddUsesFeature("android.hardware.camera.front", false);
}
Genere un proyecto que pueda ser abierto por Android Studio. Simplemente siga los siguientes pasos:
Descargue Android Studio.
Exporte el proyecto de Unity con la casilla de verificación Google Android project seleccionada.
C:\MyProjects
, pick C:\MyProjects\<Product Name\>
path).Tenga en cuenta: Si usted quiere depurar su aplicación, usted debe configurar android:debuggable=“true” en AndroidManifest.xml, no se le olvide configurarlo a false una vez haya terminado.