Jump to content
UnitySpain
infotronica

Problema al construir para Android

Recommended Posts

Muy buenas, actualmente tengo un problema cuando intento construir un juego para Android, para hacerlo funcionar he seguido un vídeo de Youtube en el que lo explica muy bien.

  1. He descargado Android Studio e instalado (para SDK)
  2. He descargado Java e instalado(para JDK)
  3. He descargado android ndk.

Después de eso he ido hacia la pestaña Edit/preferences, y en external tools he puesto las carpetas raíz donde se encuentra cada uno el primero corresponda a  SDK el segundo a JDK y el tercero a NDK. (Adjunto imagen para demostrarlo)

Después de tener esto he ido a build settings y aquí he cambiado de plataforma para tener Android.

Ahora ya debería de estar todo listo para hacerlo funcionar.. pues cuando le doy a construir me salta una ventana de error (adjunto imagen)

 

Por último os dejo los errores que me aparecen en consola:

Cita

1º)   Win32Exception: ApplicationName='C:/Program Files/Java/jdk1.8.0_121\bin\java.exe', CommandLine='-Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Program Files/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -', CurrentDirectory='C:\Users\infotronica\Desktop\Programas\Unity\2o juego\nivel 2'
System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process)
System.Diagnostics.Process.Start ()
(wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()

Cita

2º)  Error building Player: Win32Exception: ApplicationName='C:/Program Files/Java/jdk1.8.0_121\bin\java.exe', CommandLine='-Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Program Files/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -', CurrentDirectory='C:\Users\infotronica\Desktop\Programas\Unity\2o juego\nivel 2'

Espero que puedan ayudarme, un saludo y gracias! 

 

Captura2.PNG

Captura.PNG

Edited by pioj
uso correcto de los tags

Share this post


Link to post
Share on other sites

No era necesario descargar Android Studio xD, nunca construi un apk sobre todo por que es díficil(por lo menos para mí(para el APK)), un amigo me dijo que tuvo que descargar muchas cosas aparte de las que mencionas tanto para la PC como la su celular, no pedi detalles.. pero por el error dedusco que es por que no actualizaste el sdk desde consola.

Edited by ytinU

Share this post


Link to post
Share on other sites

Jaja puf.. yo he seguido los pasos de un vídeo y lo he descargado.. pero bueno jaja..

¿A qué te refieres con qué no actualicé el sdk desde la consola? :S

Share this post


Link to post
Share on other sites

Cuando descargas el sdk dentro del .rar hay una carpeta de tools dentro de la misma hay una exe.(bueno varios pero clickeas el primero) le das permiso de administrador y te sale una pestaña de android para actualizar son 13 paquetes poner install y esperas(son más de 10 GB) si quieres te arriesgas nunca construi una build en android por que nunca me detecto el JDK(no el sdk) así que no te puedo decir con certeza si es eso, pero si te fijas en el error dice que la versión es incorrecta..., otra opción es esperar a que un pro te diga si es eso.

Edited by ytinU

Share this post


Link to post
Share on other sites

jaja gracias ytinU, igualmente ahora no me da tiempo a hacerlo, esperaré a mañana y si han dado otra opción probaré lo que dices! 
Muchas gracias! :)

 

Share this post


Link to post
Share on other sites

Buenas. No se solucionarte el error ya que a mi no me sucedió. Yo creo mis aplicaciones para móviles en B4A y ese es el primer programa que tengo en el portátil. Tiempo después cuando descubrí Unity tuve la suerte que solo le puse las direcciones donde correspondían y todo me funcionó a la primera. Pudiendo crear mis APK en Unity. Lo que si te puedo decir es que el SDK de Android no se lleva nada bien con rutas con espacios, a mi me dio mas de un quebradero de cabeza con el B4A, por lo tanto eso de c:/Program File/..... no es lo adecuado. Seguramente con Unity no pase y ese no sea tu error pero yo empezaría por ahí.

Te voy a dejar la pagina donde vienen las instrucciones de como instalar B4A y espero que se te solucione el problema.

https://www.b4x.com/b4a.html

Share this post


Link to post
Share on other sites
hace 5 horas, J_L said:

Buenas. No se solucionarte el error ya que a mi no me sucedió. Yo creo mis aplicaciones para móviles en B4A y ese es el primer programa que tengo en el portátil. Tiempo después cuando descubrí Unity tuve la suerte que solo le puse las direcciones donde correspondían y todo me funcionó a la primera. Pudiendo crear mis APK en Unity. Lo que si te puedo decir es que el SDK de Android no se lleva nada bien con rutas con espacios, a mi me dio mas de un quebradero de cabeza con el B4A, por lo tanto eso de c:/Program File/..... no es lo adecuado. Seguramente con Unity no pase y ese no sea tu error pero yo empezaría por ahí.

Te voy a dejar la pagina donde vienen las instrucciones de como instalar B4A y espero que se te solucione el problema.

https://www.b4x.com/b4a.html

Gracias J_L, vi en un foro que el error era debido a unas exclamaciones que tenía esa persona... he probado a cambiarlo de directorio, y me aparecen errores como:

1º) UnityEditor.Utils.Program.Start () (at C:/buildslave/unity/build/Editor/Mono/Utils/Program.cs:33)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.UpdateToolsDirectories ()
UnityEditor.Android.AndroidSDKTools..ctor (System.String sdkRoot)
UnityEditor.Android.AndroidSDKTools.GetInstance ()
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSdk.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessAndroidPlayer.PrepareForBuild (BuildOptions options, BuildTarget target)
UnityEditor.Android.AndroidBuildPostprocessor.PrepareForBuild (BuildOptions options, BuildTarget target)
UnityEditor.PostprocessBuildPlayer.PrepareForBuild (BuildOptions options, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:98)
UnityEditor.HostView:OnGUI()



2º)  Error building Player: Win32Exception: ApplicationName='C:\Program Files (x86)\bin\java.exe', CommandLine='-Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -', CurrentDirectory='C:\Users\infotronica\Desktop\Programas\Unity\2o juego\nivel 2'



Digamos que ahora mi primer error se ha hecho inmenso... vaya locura..

Por último, lo que me comentas de B4A, qué es?
Muchas gracias, un saludo!

 

Share this post


Link to post
Share on other sites

Madre mia, espero que al final lo consigas solucionar.

B4A es un programa para programar en Basic para Android en vez de utilizar Java. Es muy similar a lo que fue visual basic 6.0.

 

Share this post


Link to post
Share on other sites
On 6/3/2017 at 9:14, J_L said:

Madre mia, espero que al final lo consigas solucionar.

B4A es un programa para programar en Basic para Android en vez de utilizar Java. Es muy similar a lo que fue visual basic 6.0.

 

Puf, que va.. lo veo demasiado complicado, no sé si lo conseguiré, lo que si te quería preguntar.. es lo siguiente:

Yo cuando en Unity (creando un juego para pc) quiero coger algún objeto o entrar en algún sitio uso lo siguiente:
 

Cita

 

if (Input.GetKeyDown("e") )
    {
    abrirPuerta();

    }

 

Mi pregunta es.. si yo quiero hacerlo para Android ¿Qué tendría que poner, para qué cuando apriete a dicha puerta, o en el caso de un objeto qué tendría que poner para que al pinchar en el touch en cierto sitio coja ese objeto o abra una puerta?

Un saludo!

Edited by pioj
uso de tags y <> para pegar código.

Share this post


Link to post
Share on other sites

Bueno Infotronica, casi me veo obligado debido a que nadie te responde. He de decirte dos cosas, 1ª que llevo alejado de Unity casi 7 meses por culpa de una oposición que me sale después de semana santa y eso es una eternidad para responderte adecuadamente. Creo que hay mejores personas en este foro para hacerlo pero deberías plantear la pregunta en otro hilo. De todas formas intentaré responder a tu pregunta pero te diré que solamente hice dos pruebas para Android y entró aquí escasos 5 minutos para darme la satisfación del día. No he cogido objetos ni abierto puertas pero si te puedo decir como hice el movimiento del personaje para un móvil o Tablet android.

Aunque habrá otros métodos mas adecuados yo cree dos funciones publicas para unos botones en el Cambas. Una de pulsado y otra que no se pulsa. En la función puse un valor booleano de true o false que se activaba en el Update y así solo tenia que decirle que era true cuando quisiera que se moviera. Ej:

public void BotonIzquierdaPulsa()
    {
        valor1 = true;
        TiempoInicio = Time.time;
    }

    public void BotonIzquierdaSuelta()
    {
        valor1 = false;
        PosicionOffsetEn_x = (Escenario.mainTextureOffset.x);
    }

Ahora sólo tenia que insertar un evento en el button del cambas para que leyera eso. Por ejemplo Event Trigger (script) y decirle la función que la compone y el personaje que la lleva. Para el aprieta y suelta el botón se la puse en el evento Pointer Up y Pointer Down y decirle en el Update algo como esto. Ej.:

if (valor1 == true || Input.GetKey(KeyCode.LeftArrow))
        {
            Quaternion deltaRotation = Quaternion.Euler(AnguloRotacion * (velocidadrotacion * Time.deltaTime));
            Cb.MoveRotation(Cb.rotation * deltaRotation);
            Cb.MovePosition(Cb.position - Desplazamiento);
            Escenario.mainTextureOffset = new Vector2((((Time.time - TiempoInicio) * -0.05f) % 1) + PosicionOffsetEn_x, 0);
        }

El método funciona perfectamente y muy bien, pero seguramente un programador profesional te pueda aconsejar mejor que yo ( ya que no entiendo pq no funciona en el On Click y si en Event Trigger.

 

 

Bien, sobre la pregunta que planteas no se me ha dado el caso, pero siempre podrías hacer un raycast desde la cámara ha donde pulsas y si es el objeto deseado pues que haga lo que hay dentro del IF. Eso es lo primero que se me ocurre, pero seguro que hay otras formas mejores.

 Un saludo, y espero haber respondido a tu pregunta. De todas formas, lo dicho, haz la pregunta en otro hilo y seguro que alguien más profesional que yo te responde.

Como alguna vez dijo Ligthbug, yo también lo hago todo a prueba y error.

 

Edited by J_L
Nombrar a otro usuario

Share this post


Link to post
Share on other sites
hace 10 horas, J_L said:

Bueno Infotronica, casi me veo obligado debido a que nadie te responde. He de decirte dos cosas, 1ª que llevo alejado de Unity casi 7 meses por culpa de una oposición que me sale después de semana santa y eso es una eternidad para responderte adecuadamente. Creo que hay mejores personas en este foro para hacerlo pero deberías plantear la pregunta en otro hilo. De todas formas intentaré responder a tu pregunta pero te diré que solamente hice dos pruebas para Android y entró aquí escasos 5 minutos para darme la satisfación del día. No he cogido objetos ni abierto puertas pero si te puedo decir como hice el movimiento del personaje para un móvil o Tablet android.

Aunque habrá otros métodos mas adecuados yo cree dos funciones publicas para unos botones en el Cambas. Una de pulsado y otra que no se pulsa. En la función puse un valor booleano de true o false que se activaba en el Update y así solo tenia que decirle que era true cuando quisiera que se moviera. Ej:


public void BotonIzquierdaPulsa()
    {
        valor1 = true;
        TiempoInicio = Time.time;
    }

    public void BotonIzquierdaSuelta()
    {
        valor1 = false;
        PosicionOffsetEn_x = (Escenario.mainTextureOffset.x);
    }

Ahora sólo tenia que insertar un evento en el button del cambas para que leyera eso. Por ejemplo Event Trigger (script) y decirle la función que la compone y el personaje que la lleva. Para el aprieta y suelta el botón se la puse en el evento Pointer Up y Pointer Down y decirle en el Update algo como esto. Ej.:


if (valor1 == true || Input.GetKey(KeyCode.LeftArrow))
        {
            Quaternion deltaRotation = Quaternion.Euler(AnguloRotacion * (velocidadrotacion * Time.deltaTime));
            Cb.MoveRotation(Cb.rotation * deltaRotation);
            Cb.MovePosition(Cb.position - Desplazamiento);
            Escenario.mainTextureOffset = new Vector2((((Time.time - TiempoInicio) * -0.05f) % 1) + PosicionOffsetEn_x, 0);
        }

El método funciona perfectamente y muy bien, pero seguramente un programador profesional te pueda aconsejar mejor que yo ( ya que no entiendo pq no funciona en el On Click y si en Event Trigger.

 

 

Bien, sobre la pregunta que planteas no se me ha dado el caso, pero siempre podrías hacer un raycast desde la cámara ha donde pulsas y si es el objeto deseado pues que haga lo que hay dentro del IF. Eso es lo primero que se me ocurre, pero seguro que hay otras formas mejores.

 Un saludo, y espero haber respondido a tu pregunta. De todas formas, lo dicho, haz la pregunta en otro hilo y seguro que alguien más profesional que yo te responde.

Como alguna vez dijo Ligthbug, yo también lo hago todo a prueba y error.

 

Muchas gracias por responder J_L, lo primero espero que tengas muchas suerte en tu oposición.

Lo segundo sobre el tema de mover sé hacer, ya que, viendo algún vídeo de youtube, hay un elemento o como es FirstPersonController para Android en donde la parte izquierda es para moverte y la parte derecha para girar la cámara, incluso debajo de este último trae un botón de saltar, todo esto invisible, pero igualmente muchas gracias por contestar.

Lo que tengo duda es si alguna vez podré compilar algún juego a Android debido a los errores jajaj.

De nuevo, Muchas gracias por contestar, Un saludo! 

Edited by infotronica

Share this post


Link to post
Share on other sites

Hola. ¿Se ha solucionado este problema?

¿Puede el autor marcar la mejor respuesta, que le ha facilitado solucionar el problema, por favor?

 

Recordad que ésto no lo leéis sólo vosotros y puede servir de ayuda a más gente que le ocurra...

Share this post


Link to post
Share on other sites
hace 4 horas, pioj said:

Hola. ¿Se ha solucionado este problema?

¿Puede el autor marcar la mejor respuesta, que le ha facilitado solucionar el problema, por favor?

 

Recordad que ésto no lo leéis sólo vosotros y puede servir de ayuda a más gente que le ocurra...

Hola pioj, no, no se ha solucionado mi error, sigo esperando a ver si alguien puede solucionarlo.

Un saludo.

Share this post


Link to post
Share on other sites
On 8/3/2017 at 7:57, infotronica said:

Hola pioj, no, no se ha solucionado mi error, sigo esperando a ver si alguien puede solucionarlo.

Un saludo.

Pues ahora le dio el venaso a Unity de reconocerme el JDK... Al fin!!..  y tuve que aprender algunas cosas extras, si tu duda sigue en pie puedo ayudarte más detalladamente, aunque debo decir que a mí no me pidio en NDK.

Share this post


Link to post
Share on other sites
hace 16 horas, ytinU said:

Pues ahora le dio el venaso a Unity de reconocerme el JDK... Al fin!!..  y tuve que aprender algunas cosas extras, si tu duda sigue en pie puedo ayudarte más detalladamente, aunque debo decir que a mí no me pidio en NDK.

Hola ytinU, casualmente hoy he vuelto a descargar el SDK, y lo he puesto en el escritorio, además he borrado la dirección de JDK y de NDK solamente tengo puesto la raíz de SDK y de repente me ha creado la apk jaja! 

Un saludo! 

Share this post


Link to post
Share on other sites

×
×
  • Create New...