ServerGaRzY, Smartphones → Montando un servidor de Aptoide
Montando un servidor de Aptoide. Instala tus aplicaciones en tu Android a través de tu servidor.
Introducción
Si dispones de un terminal Android seguramente conozcas Aptoide, o mejor aún APKtor (una versión mejorada de Aptoide), aplicaciones para Android que permiten disponer de un Market alternativo al de Google cuya mecánica se basa en añadir alguno de los servidores que se encuentran en la red y poder instalar las aplicaciones (con extensión .apk) contenidas en éste.
Motivación
Seguramente tengas varios archivos de instalación guardados en la tarjeta de memoria de tu Android, listos para instalar cuando te apetezca, bien, pero ¿y si dispones de muchos archivos de instalación? ¿y si ocupan mucho?, estás ocupando un espacio muy valioso de tu tarjeta de memoria, que sería mejor utilizarlo para otros fines. Bien, una de las opciones que tienes es, si pilotas un poco del mundo de los servidores web, colocar los archivos de instalación en un servidor FTP y después descargarlas cuando de plaza mediante un cliente FTP para Android. Otra opción es usar, por ejemplo, Dropbox, que dispone de un cliente para Android bastante sencillo de utilizar.
Ambas soluciones son acertadas, pero esta forma de guardar archivos “en la nube” es bastante genérica (vale para guardar cualquier tipo de archivo), así que lo más elegente en el caso que nos ocupa, es montar un servidor de Aptoide, ya que esta aplicación está explícitamente creada para almacer los archivos de instalación para Android.
Instalación del servidor de Aptoide
Preconfiguración
El método de instalación es muy simple, y podemos consultar todos los pasos necesarios en la web oficial, pero como está “in inglish” te voy a indicar los pasos a seguir para que te sea más sencillo.
Un servidor de Aptoide consiste, básicamente, en una serie de archivos .apk y un fichero .xml que contiene la información sobre las aplicaciones del repositorio (las aplicaciones que tenemos en nuestro Aptoide server), seguramente, escribir ese fichero .xml a mano sería un suicido, así que, los chicos de Aptoide, muy majos, nos facilitan un script php para generar automáticamente el fichero.
Lo primero es cumplir los requisitos para que el servidor funcione:
- Servidor apache funcionando con php.
- Aplicación para descomprimir archivos zip (¿quien no ha utilizado el comando unzip en linux?)
Estos requisitos son fáciles de cumplir, ¿no?
Bien, hay que descargar un par de archivos para montar el repositorio
El repositorio debe colgarse en el servidor web apache, en alguna carpeta, subdominio o como más guste, en mi caso, he creado el subdominio http://android.servergarzy.com, y colocaré el repositorio una carpeta llamada “repo”, de manera que, para conectarme al repositorio desde mi Android, tendré que introducir la siguiente dirección: http://android.servergarzy.com/repo
Instalación
¿Donde deben colocarse los dos archivos que necesarios para montar el repositorio?, bien, personalmente recomiendo colocarlos fuera del htdocs de apache, para que no sean visibles desde el exterior. Vamos a ello:
cd /var/www/virtual/servergarzy.com/android/ root@rps:/var/www/virtual/servergarzy.com/android# ls cgi-bin htdocs phptmp root@rps:/[...]/android# wget http://www.aptoide.com/files/generate.ph root@rps:/[...]/android# wget http://www.aptoide.com/files/aapt root@rps:/var/www/virtual/servergarzy.com/android# ls -l total 3360 -rw-r--r-- 1 root root 3416299 2009-11-23 17:23 aapt drwxr-xr-x 2 vu2005 vu2005 4096 2010-11-17 11:32 cgi-bin -rw-r--r-- 1 root root 4149 2010-03-04 13:12 generate.ph drwxr-xr-x 3 vu2005 vu2005 4096 2010-11-17 11:32 htdocs drwxrwx--- 2 vu2005 www-data 4096 2010-11-17 11:32 phptmp
Los ficheros generate.php y aapt tienen que ser ejecutables, además voy a cambiar el propietario de los ficheros para mantener la consistencia
root@rps:/[...]/android# chmod +x generate.ph aapt root@rps:/[...]/android# chown vu2005.vu2005 generate.ph aapt root@rps:/[...]/android# ls -l total 3360 -rw-r--r-- 1 vu2005 vu2005 3416299 2009-11-23 17:23 aapt drwxr-xr-x 2 vu2005 vu2005 4096 2010-11-17 11:32 cgi-bin -rwxr-xr-x 1 vu2005 vu2005 4149 2010-03-04 13:12 generate.ph drwxr-xr-x 3 vu2005 vu2005 4096 2010-11-17 11:32 htdocs drwxrwx--- 2 vu2005 www-data 4096 2010-11-17 11:32 phptmp
Bien, ahora tiene mejor pinta.
Dentro de htdocs tengo creada la carpeta “repo”, ahora hay que editar el fichero generate.ph para que una de sus variables apunte a esta carpeta
root@rps:/[...]/android# vim generate.ph #!/usr/bin/php -q <? /* * Aptoide server generate script version 1.4 */ /***************************************/ /* * Directory where apk's are stored * Configuration changes go here! */ $DIR = "</your/repo/path/here/>"; $ICON_DIR_OUT = "icons/"; /****************************************/
Cambiamos el valor de $DIR substituyendo </your/repo/path/here/> por la ruta completa a la carpeta repo
<? /* * Aptoide server generate script version 1.4 */ /***************************************/ /* * Directory where apk's are stored * Configuration changes go here! */ $DIR = "/var/www/virtual/servergarzy.com/android/htdocs/repo/"; $ICON_DIR_OUT = "icons/"; /****************************************/
El siguiente paso es colocar todas los archivos .apk que queramos tener en el servidor, todos deben de ir colocados en la carpeta “repo” y no deben crearse subcarpetas dentro. Yo voy a subir mis .apk via FTP, como se trata de un ejemplo didáctico, subiré únicamente una aplicación, quedando el directorio repo así:
root@rps:/var/www/virtual/servergarzy.com/android/htdocs/repo# ls -l total 308 -rw-r--r-- 1 vu2005 vu2005 315249 2010-11-17 16:29 jme3_2.apk
Ahora ejecutamos el archivo generate.ph
root@rps:/[...]/android# ./generate.ph APK: icons APK: jme3_2.apk Package (hasID): com.g3d.app Version: Version: Name: Icon: res/drawable/icon.png Icon(L): icons/com.g3d.app Date: 2010-11-17 Md5Hash: 3e29bd6deecbea61a8a70423b7c32ee2 ======================== XML FILE SUCCESSFULLY CREATED!
La salida por pantalla muestra que el script ha procesado la aplicación jme3_2.apk y que ha creado un icono para ella, si hubiese más aplicaciones en la carpeta repo, se habrían repetido estas líneas por cada aplicacion.
Veamos como ha quedado la carpeta repo:
root@rps:/[...]/android/htdocs/repo# ls -l total 316 drwxr-xr-x 2 root root 4096 2010-11-17 16:40 icons -rw-r--r-- 1 root root 266 2010-11-17 16:40 info.xml -rw-r--r-- 1 vu2005 vu2005 315249 2010-11-17 16:29 jme3_2.apk
El script ha creado el directorio icons para guardar ahí los iconos de cada aplicación, también aparece el fichero info.xml generado por el script, a continuación abro el contenido de este fichero para ver cómo es, aprovecho para cambiar el propietario de los archivos, para que puedan ser leídos por apache.
root@rps:/[...]/android/htdocs/repo# chown -R vu2005.vu2005 *
root@rps:/[...]/android/htdocs/repo# vim info.xml
<?xml version="1.0" encoding="UTF-8"?>
<apklst>
<package>
<name></name>
<path>jme3_2.apk</path>
<ver></ver>
<vercode></vercode>
<apkid>com.g3d.app</apkid>
<icon>icons/com.g3d.app</icon>
<date>2010-11-17</date>
<md5h>3e29bd6deecbea61a8a70423b7c32ee2</md5h>
</package>
</apklst>
En la captura de arriba puede verse que el fichero xml representa los mismos datos que los obtenidos por pantalla, mediante el script generate.ph; el siguiente paso será probar que el repositorio funciona correctamente (el contenido del fichero lo he formateado para que quede bonito, ya que sale todo en una línea)
Probando el repositorio
Para probar que el repositorio funciona correctamente voy a conectarme desde la aplicación “Apktor” de mi Android, que puede encontrarse en el Market.
En esta imágen se puede ver la dirección que habría que poner para acceder al repositorio:
En en esta otra puede verse el contenido del repositorio:
Donde se puede apreciar, la fecha en que se colocó la aplicación en el repositorio, y el icono que ha generado el script, desde aquí sería muy fácil instalar y mantener actualizadas las aplicaciones, ya que Apktor mantiene los datos sobre qué aplicaciones se han instalado, cuáles necesitan actualizarse (si se ha colgado una nueva versión, aparecería como actualizable), y además permite consultar los datos de la aplicación en el Market (si existe, claro).
Sólo dispongo de un alojamiento web con php, pero no tengo acceso por consola ¿puedo montar el repositorio?
Si no dispones de un terminal de consola desde el que ejecutar el archivo generate.ph, siempre puedes ejecutarlo cargándolo desde el navegador (suponiendo que en la máquina donde tengas contratado el alojamiento web esté instalado el comando unzip y que la configuración de php permita crear archivos y directorios), para ello basta con copiar o mover los dos archivos para la generación del xml dentro de la carpeta htdocs (para que sean visibles desde el exterior) y cambiar la extensión del archivo generate.ph por generate.php.
Abriendo la siguiente web en el navegador http://android.servergarzy.com/generate.php aparece lo siguiente:
APK: icons APK: jme3_2.apk Package (hasID): com.g3d.app Version: Version: Name: Icon: res/drawable/icon.png Icon(L): icons/com.g3d.app Date: 2010-11-17 Md5Hash: 3e29bd6deecbea61a8a70423b7c32ee2 ======================== XML FILE SUCCESSFULLY CREATED!
Que es la misma salida que la obtenida al ejecutarlo desde la consola (algo más feo, pues carece de saltos de línea), compruebo que, efectivamente, crea el archivo .xml y los iconos, así que el resultado es similar.
Si optas por esta solución, es aconsejable, o bien eliminar el archivo generate.php, o bien proteger el acceso a ese archivo mediante un fichero .htpassword, con el objetivo que evitar que cualquiera pueda ejecutar ese script cuando le plazca (imagina que tienes un repositorio grande que tarda bastante en generarse y a alguien le dar por crear un programa que llame 1.000.000 veces a tu script generate.php)
Conclusión
Si has llegado hasta aquí, siguiendo todos los pasos, verás que, realmente, montar un servidor de Aptoide es muy simple, y que se puede resumir en los siguientes pasos:
- Disponer de un alojamiento web con php.
- Descargar los ficheros generate.ph y aapt y darles permiso de ejecución.
- Crear una carpeta donde colocar las aplicaciones con extensión .apk
- Editar el archivo generate.ph para escribir la ruta a la carpeta donde están las aplicaciones
- Ejecutar el archivo generate.ph








