Bueno, el tema es que no es algo directo, es decir, no es seleccionar Android como sistema de destino y listo sino que hay que preparar nuestro ordenador para que GameMaker pueda crear el apk correspondiente.
Abro el proyectillo que estoy haciendo, selecciono Android e intento exportar el proyecto para Android, es decir, crear un apk para probarlo en el móvil y obtento esto...
Cuando pulsemos OK el programa nos llevará a la pantalla de preferencias (
preferences) donde si seleccionamos arriba la pestaña de
Android podremos ver algo parecido a esto...
los mensajes que aparecen en rojo es por haber pulsado ambos botones que aparecen a la izquierda de los mensajes...
osea, que tendremos a prioiri que instalar en el equipo:
Android SDK (enlace alternativo versión 24.4.1)
Android NDK (enlace alternativo NDK r16b usado por mí)
Java JDK
Si vamos a programar directamente en Android lo mismo os conviene descargar el Android Studio completo que ocupa un huevo y trae más cositas pero en mi caso, lo único que quiero es exportar desde GameMaker a Android así que lo único que descargaré es la herramienta de líneas de comando... (arriba hay links aunque luego dejaré un paquetito ready to download)
Descargamos las versiones que necesitemos sobre todo teniendo en cuenta si tenemos un windows de 32 bits o de 64, tanto para el NDK como para el JAVA.
Lo primero que vamos a hacer es instalar el JAVA JDK , en mi caso, la versión
jdk-8u181 y como casi todo en windows, " doble click y to palante" ...
En la siguiente podemos quitar los ejemplos de código fuente...
y por cierto al final, aparece este mensaje que en principio no creo que afecte...
para finalmente dejar la carpeta de destino e instalación tal cual viene por defecto...
Una vez instalado java vamos a crear dos variables de entorno del sistema y para ello abrimos el explorador de ficheros de windows (pulsamos tecla Windows + E por ejemplo) y hacemos botón derecho del ratón sobe
Mi equiposeleccionamos la última opción que pone
Propiedades y en la siguiente pantalla seleccionamos
Configuración avanzada del sistema donde nos aparecerá una nueva pantalla en la que tendremos que estar en la pestaña
Opciones avanzadas y haremos click en el botón de
Variables de entornodonde en la siguiente pantalla que aparece deberemos crear dos variables del sistema con los nombres que están señaladas:
JAVA_HOME
JDK_HOMEy ambas apuntando al directorio donde habíamos instalado antes el JAVA.
Ahora vamos a preparar el Android SDK y en mi caso voy a usar el ejecutable que antes dejé como enlace alternativo de la
versión ejecutable 24.4.1 por lo que la ejecuto
Recordad, la ruta de instalación del SDK, en mi caso,
C:\Program Files (x86)\Android\android-sdkpara finalmente, clickar sobre
Install y listo.
Ahora queda el tema del
Android NDK el cual lo que hacemos es descomprimirlo en la siguiente ruta
C:\Program Files (x86)\Android\android-ndk-r16bNos vamos a ir a la carpeta donde instalamos nuestro SDK y vamos a ejecutar el
SDK ManagerLa primera recomendación cuando abra la pantalla del SDK Manager es irnos al final e instalar todos los extras ya que nos ahorraremos algunos posibles errores en Gamemaker a la hora de compilar.
Clickamos en el check de
Extras para seleccionarlos todos aunque si nos fijamos el
Google USB Driver ya estaba instalado así que deberemos desmarcarlo porque si no lo que haría es desinstalarlo; una vez seleccionado todo lo que queremos instalar
Pulsamos en el botón de
Install y aunque tardará un ratito lo instalará todo.
Todavía hay que seguir instalando alguna cosita más en el SDK Manager pero para entenderlo un poco mejor nos vamos a la pestaña
Android de
Global Game Settings en gamemaker y veremos algo parecido a esto
por lo que tendremos que verificar si tenemos instaladas y en caso contrario seleccionarlas para instalar:
Buildtools 23.0.1
Api 23 de Google
Igualmente, verifica también que estén instaladas como en mi caso y si no instala también las
Platforms Tools y el
SDK Tools.
Como podemos ver de la Api 23, tildamos el check y luego sólo dejamos los dos que tienen el simbolito de Google (SDK Platform y Google Api) para finalmente pulsar sobre el botón Install, aceptamos la licencia e instalamos.
En estos momentos, creo que está todo y lo que tenemos que ir es a la pantalla de antes en GameMaker para intentar configurar los campos precisamente del SDK,NDK y Java...
En estos momentos debería estar todo lo necesario instalado así que vamos a probar a ver; nos vamos a
Preferences en
GameMaker (
File - Preferences) y configuramos los campos con las rutas correctas pulsando luego en ambos botones de check para ver si están correctas las rutas del SDK,NDK y Java.
Nos vamos a la pestaña keystore y rellenamos los datos teniendo en cuenta que no podemos meter ni números ni caracteres extraños; luego pulsamos en el botón
Generate y en la ruta que viene arriba se genera un fichero que creo que no se puede perder, jeje.
A continuación aceptamos y en principio ya podemos intentar generar un apk a ver si todo funciona...
En el menú principal pulsamos sobre el icono de
Create executable for target habiendo antes seleccionado como plataforma de destino
Android / FireLe damos un nombre al apk y le damos al botón de
Guardar.
WOW!!!!! Ya me compila el programa para Android y me ha creado el apk; ahora sólo me queda probarlo en el móvil a ver.
Me ha aparecido esta ventana de error
pero si no me equivoco simplemente aparece porque creo que no tengo un teléfono móvil o tablet conectado al PC para que directamente pasarle el programita APK, cosa que probaré en unos días!!!
En la ventanita de compilación de gamemaker me ha aparecido un tocho de información mientras generaba el apk
Create started: 18:25:25
"C:\Users\crisber\AppData\Roaming\GameMaker-Studio\GMAssetCompiler.exe" /fU="C:\Users\crisber\AppData\Local\Temp\gm_ttt_46928\a80195.txt" /c /m=android /config="Default" /tgt=8 /obob=True /obpp=False /obru=True /obes=False /i=3 /j=4 /cvm /tp=1024 /mv=1 /iv=0 /rv=0 /bv=9999 /gn="FASI" /td="C:\Users\crisber\AppData\Local\Temp" /cd="C:\Users\crisber\Documents\GameMaker\Cache" /sh=True /dbgp="6502" /hip="192.168.56.1" /hprt="51268" /optionsini="C:\Users\crisber\AppData\Local\Temp\gm_ttt_46928\gm_ttt_25745\FASI-Default-1.0.3.ini" /o="C:\Users\crisber\AppData\Local\Temp\gm_ttt_46928\gm_ttt_25745" "C:\Users\crisber\Documents\GameMaker\Projects\FASI.gmx\FASI.project.gmx"
Reading project file....finished.
Compile Constants...finished.
Remove DnD...finished.
Compile Scripts...finished.
Compile Objects...finished.
Compile Timelines...finished.
Compile Triggers...finished.
Compile Rooms...finished.
Compile Extensions...finished.
Global scripts...finished.
Final Compile...finished.
Saving IFF file... C:\Users\crisber\AppData\Local\Temp\gm_ttt_46928\gm_ttt_25745\FASI.droid
Writing Chunk... GEN8
Writing Chunk... OPTN
Writing Chunk... LANG
Writing Chunk... EXTN
Writing Chunk... SOND
*writing audio file snd_musicamenu.ogg...
Writing Chunk... AGRP
Writing Chunk... SPRT
Writing Chunk... BGND
Writing Chunk... PATH
Writing Chunk... SCPT
Writing Chunk... GLOB
Writing Chunk... SHDR
Writing Chunk... FONT
Writing Chunk... TMLN
Writing Chunk... OBJT
Writing Chunk... ROOM
Writing Chunk... DAFL
Writing Chunk... TPAGE
Texture Group - Default
Writing Chunk... CODE
Writing Chunk... VARI
Writing Chunk... FUNC
Writing Chunk... STRG
Writing Chunk... TXTR
0 Compressing texture... writing texture texture_0.png...
1 Compressing texture... writing texture texture_1.png...
Writing Chunk... AUDO
Writing Chunk... SCPT
Writing Chunk... DBGI
Writing Chunk... INST
Writing Chunk... LOCL
Writing Chunk... STRG
Stats : GMA : Elapsed=3024,7653
Stats : GMA : sp=13,au=4,bk=2,pt=0,sc=6,sh=0,fo=1,tl=0,ob=14,ro=3,da=0,ex=0,ma=13,fm=0x90100CE10220
cmd /c "subst Z: "C:\Users\crisber\Documents\GameMaker\Cache\FASI\Android\Default" && Z: && cd \com.empardopo.FASI && "C:\Users\crisber\AppData\Roaming\GameMaker-Studio\Android\runner\gradle\gradlew" assembleRelease lint "
Incremental java compilation is an incubating feature.
The TaskInputs.source(Object) method has been deprecated and is scheduled to be removed in Gradle 4.0. Please use TaskInputs.file(Object).skipWhenEmpty() instead.
:com.empardopo.FASI:preBuild UP-TO-DATE
:com.empardopo.FASI:preReleaseBuild UP-TO-DATE
:com.empardopo.FASI:checkReleaseManifest
:com.empardopo.FASI:preDebugAndroidTestBuild UP-TO-DATE
:com.empardopo.FASI:preDebugBuild UP-TO-DATE
:com.empardopo.FASI:prepareComAndroidSupportMultidex101Library
:com.empardopo.FASI:prepareComAndroidSupportSupportV42311Library
:com.empardopo.FASI:prepareReleaseDependencies
:com.empardopo.FASI:compileReleaseAidl
:com.empardopo.FASI:compileReleaseRenderscript
:com.empardopo.FASI:generateReleaseBuildConfig
:com.empardopo.FASI:generateReleaseResValues
:com.empardopo.FASI:generateReleaseResources
:com.empardopo.FASI:mergeReleaseResources
:com.empardopo.FASI:processArmeabi-v7aReleaseManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processArmeabi-v7aReleaseResources
:com.empardopo.FASI:processArmeabiReleaseManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processArmeabiReleaseResources
:com.empardopo.FASI:processMipsReleaseManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processMipsReleaseResources
:com.empardopo.FASI:processUniversalReleaseManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processUniversalReleaseResources
:com.empardopo.FASI:processX86ReleaseManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processX86ReleaseResources
:com.empardopo.FASI:generateReleaseSources
:com.empardopo.FASI:incrementalReleaseJavaCompilationSafeguard
:com.empardopo.FASI:compileReleaseJavaWithJavac
:com.empardopo.FASI:compileReleaseJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Z:\com.empardopo.FASI\src\main\java\com\empardopo\FASI\Gamepad\Gamepad.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:com.empardopo.FASI:mergeReleaseShaders
:com.empardopo.FASI:compileReleaseShaders
:com.empardopo.FASI:generateReleaseAssets
:com.empardopo.FASI:mergeReleaseAssets
:com.empardopo.FASI:transformClassesWithJarMergingForRelease
:com.empardopo.FASI:collectReleaseMultiDexComponents
:com.empardopo.FASI:transformClassesWithMultidexlistForRelease
:com.empardopo.FASI:transformClassesWithDexForRelease
Running dex in-process requires build tools 23.0.2.
For faster builds update this project to use the latest build tools.
:com.empardopo.FASI:compileReleaseNdk UP-TO-DATE
:com.empardopo.FASI:mergeReleaseJniLibFolders
:com.empardopo.FASI:transformNative_libsWithMergeJniLibsForRelease
:com.empardopo.FASI:processReleaseJavaRes UP-TO-DATE
:com.empardopo.FASI:transformResourcesWithMergeJavaResForRelease
:com.empardopo.FASI:validateSigningArmeabi-v7aRelease
:com.empardopo.FASI:packageArmeabi-v7aRelease
:com.empardopo.FASI:assembleArmeabi-v7aRelease
:com.empardopo.FASI:validateSigningArmeabiRelease
:com.empardopo.FASI:packageArmeabiRelease
:com.empardopo.FASI:assembleArmeabiRelease
:com.empardopo.FASI:validateSigningMipsRelease
:com.empardopo.FASI:packageMipsRelease
:com.empardopo.FASI:assembleMipsRelease
:com.empardopo.FASI:validateSigningUniversalRelease
:com.empardopo.FASI:packageUniversalRelease
:com.empardopo.FASI:assembleUniversalRelease
:com.empardopo.FASI:validateSigningX86Release
:com.empardopo.FASI:packageX86Release
:com.empardopo.FASI:assembleX86Release
:com.empardopo.FASI:compileReleaseSources
:com.empardopo.FASI:lintVitalRelease
:com.empardopo.FASI:assembleRelease
:com.empardopo.FASI:checkDebugManifest
:com.empardopo.FASI:prepareDebugDependencies
:com.empardopo.FASI:compileDebugAidl
:com.empardopo.FASI:compileDebugRenderscript
:com.empardopo.FASI:generateDebugBuildConfig
:com.empardopo.FASI:generateDebugResValues
:com.empardopo.FASI:generateDebugResources
:com.empardopo.FASI:mergeDebugResources
:com.empardopo.FASI:processArmeabi-v7aDebugManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processArmeabi-v7aDebugResources
:com.empardopo.FASI:processArmeabiDebugManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processArmeabiDebugResources
:com.empardopo.FASI:processMipsDebugManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processMipsDebugResources
:com.empardopo.FASI:processUniversalDebugManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processUniversalDebugResources
:com.empardopo.FASI:processX86DebugManifest
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:27:3-77:17 Warning:
application@android:label was tagged at AndroidManifest.xml:27 to replace other declarations but no other declaration present
Z:\com.empardopo.FASI\src\main\AndroidManifest.xml:28:5-37:16 Warning:
activity#com.empardopo.FASI.RunnerActivity@android:label was tagged at AndroidManifest.xml:28 to replace other declarations but no other declaration present
:com.empardopo.FASI:processX86DebugResources
:com.empardopo.FASI:generateDebugSources
:com.empardopo.FASI:incrementalDebugJavaCompilationSafeguard
:com.empardopo.FASI:compileDebugJavaWithJavac
:com.empardopo.FASI:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Z:\com.empardopo.FASI\src\main\java\com\empardopo\FASI\Gamepad\Gamepad.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:com.empardopo.FASI:lint
Ran lint on variant debug: 58 issues found
Ran lint on variant release: 58 issues found
Wrote HTML report to file:///Z:/com.empardopo.FASI/build/outputs/lint-results-debug.html
Wrote XML report to file:///Z:/com.empardopo.FASI/build/outputs/lint-results-debug.xml
BUILD SUCCESSFUL
Total time: 45.98 secs
cmd /c "subst /d Z:"
Lint Build report available at C:\Users\crisber\Documents\GameMaker\Cache\FASI\Android\Default\com.empardopo.FASI\build\outputs\lint-results.html
"C:\Program Files (x86)\Android\android-sdk\platform-tools\adb" get-state
error: no devices/emulators found
Create finished: 18:26:18
entre lo que me ha llamado la atención las siguientes líneas
[color=red]Running dex in-process requires build tools 23.0.2.
For faster builds update this project to use the latest build tools.[/color]
Me han llamado la atención porque ha compilado parece bien pese a tener las build tools 23.0.1 así que intentaré cambiarlas en la pantalla de gamemaker a ver si obtengo algún mensaje distinto; por supuesto, instalando esas build tools desde el SDK Manager (uff, que pechá de cositas, jeje).