[MINI-TUTORIAL BÁSICO] Tutorial: Como manejarse en la consola de comandos

Desconectado trunk

  • Founder
  • *
  • 8781
  • Sexo: Masculino
  • Mi Community
  • medallas
  • Tercer rango por comentarios publicados Premio recibido a usuarios con más tiempo conectado Premio a los usuarios con más Karma obtenido Fundador del proyecto miui.es
    • Ver Perfil
    • Mi Community
    • Awards
  • Votados: 2948
Puesto que para hacer muchas de las acciones necesarias para traducir aplicaciones y crear temas es necesario un conocimiento básico de consola de comandos, he decidido crear este mini-tutorial, donde pondré los primeros pasos sobre cómo usar el táctil instrumento que es la consola - si se sabe cómo usarla, claro :P



~ Windows ~

Movernos por el sistema de archivos



Al iniciar la consola de comandos - Ejecutar > cmd, veremos que nos muestra lo siguiente:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
C:\Documents and Settings\tunombre>


Esto implica, que la consola se ejecuta sobre el directorio tunombre que está dentro de la carpeta Documents and Settings en la unidad C:\.



Para poder ver los ficheros y carpetas que hay en esta carpeta, usaremos el comando dir, Directory:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
dir ---> Nos mostrará todos los archivos de esta carpeta

dir \Android\*.apk ---> Nos mostrará todos los archivos en C:\Android\ que acabasen en .apk

dir ..\a* ---> Nos mostrará todos los archivos en la carpeta superior a esta que comenzaran con "a"




~ Linux ~

Movernos por el sistema de archivos



Spoiler for Hiden:

Bien, los que usáis linux casi seguro que ya tendréis algo de manejo con la consola. De todas formas, repasaremos. Si abres una consola de comando, os mostrará¡ lo siguiente:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
[tunombre@host ~]


¿Véis ese ~? Ese pequeño sí­mbolo significa que estáis en vuestra carpeta "Home" - en este caso, la mí­a es:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
/home/arasthel/


¡Uy cuantas barras! ¿Y eso qué significa? Pues veamos, la primera "/", indica que partimos del directorio raíz, es decir, de "/". Después, nos indica que entramos en la carpeta "home", y en la carpeta "arasthel", que está¡ dentro de ésta. ¿Empezáis a ver cómo funciona la representación de carpetas?



Bien, ahora aprenderemos a movernos por ellas. Supongamos que tenemos, dentro de "/home/arasthel", una carpeta llamada "Android". Para acceder a ella desde la línea de comandos, haríamos lo siguiente:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd /home/arasthel/Android/


O, lo que es lo mismo, (recordad que "~" simboliza nuestra carpeta home):



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd ~/Android/


Lo mismo me he adelantado. Vayamos por partes, ¿qué es cd? Pues no es otra cosa que Change Directory, es decir, cambiar de carpeta.



Como veréis, hasta ahora hemos usado las rutas absolutas, es decir, el camino completo, desde la raíz (/) hasta la carpeta que deseamos. ¿Y si queremos movernos desde el directorio Home a Android sin liar tanto?



Muy fácil:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd Android


¡Importante! Observad la ausencia de "/" al comienzo del nombre de la carpeta. Si lo hubiéramos puesto, linux interpretaría que queremos ir a /Android, y no a /home/arasthel/Android/, ya que, como se ha dicho, el / al comienzo del nombre de la carpeta nos indica que partimos de la raíz del disco.



Vaya, y ahora queremos volver atrás, sin tener que escribir la biblia. Pues tan fácil como:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd ..


Suponiendo que estamos en /home/arasthel/Android/, esto nos devolvería a /home/arasthel/. Los .. indican subir un nivel en el sistema de archivos. Por ejemplo, si hiciésemos:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd ../../   ---> Acabaríamos en /home/

cd ../../../   ---> Nos llevaría a /



También, en caso de que tengamos una carpeta o archivo cuyo nombre tenga espacio, podemos hacer referencia a él usando " ". Por ejemplo, una carpeta "Mi carpeta" que estuviese en /home/arasthel/, podría accederse así:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd "/home/arasthel/Mi Carpeta/"


Como curiosidad, decir que:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd .


Nos devuelve a la misma carpeta. El "." simboliza la carpeta actual.



Si queremos que la consola nos muestre una lista de los archivos y carpetas que hay en el directorio, podemos escribir:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
ls .


Esto hace que el comando List nos muestre todos los archivos y carpetas del directorio ".", es decir, el mismo en el que estás. Podemos modificarlo al igual que con cd:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
ls ../  ---> Nos mostrará la lista de la carpeta superior a esta

ls Android  ---> Nos mostrará el contenido de la carpeta Android

ls /home/minombre/  ---> Nos mostrará el contenido de nuestra carpeta Home



Asimismo, podemos decirle que nos muestre algo en especial, por ejemplo:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
ls ./*.apk ---> Buscaría todos los archivos en la carpeta actual que acabasen en .apk

ls /home/a* ---> Mostraría todos los archivos y carpetas que comenzasen con "a"



Un truco útil: usad el tabulador, cuanto más, mejor. El tabulador es esa tecla que hay justo encima del Bloq. Mayús., y en la consola sirve para autocompletar, de forma que:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd /home/a  ---> Pasaría a ser, tras pulsar el tabulador:

cd /home/arasthel/



En caso de que haya múltiples opciones, al pulsar 2 veces seguidas Tab, la consola os mostrará un listado de los archivos y carpeta que comiencen con "a" y que estén en /home/ :



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
Si tuviésemos:

/home/ -> arasthel

   '----> antonio



Al pulsar Tab 2 veces, se nos mostraría:



cd /home/a [Tab][Tab]

arasthel/    antonio/



¡Tab nos ahorra escribir mucho texto!






Usar apktool



Spoiler for Hiden:

Bien, ahora queremos aprender a usar apktool. Para ello, debemos bajarnos tanto el apktool.zip como el apktool-install-linux.zip desde No tienes permisos para ver los enlaces. Regístrate o Inicia sesión. Pongamos que descomprimís los archivos en /home/usuario/Descargas . Para poder usarlos cómodamente, yo hago lo siguiente:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
cd /home/usuario/Descargas

sudo cp apktool /usr/bin/

sudo cp appt /usr/bin/

sudo cp apktool.jar /usr/bin/

cd /usr/bin/

sudo chmod +x apktool

sudo chmod +x aapt




¿Qué hace esto?:



  • Nos movemos a la carpeta Descargas, por comodidad
  • Copiamos -con permisos de root, para eso "sudo"-, el ejecutable, apktool, a /usr/bin/
  • Copiamos el archivo a ejecutar, apktool.jar, a la misma carpeta que el ejecutable, así como el ejecutable aapt, necesario para usar apktool
  • Nos movemos a /usr/bin/
  • Cambiamos los permisos de apktool y aapt para que sean ejecutables, de lo contrario nos diría que no tenemos permisos suficientes para usar los comandos



El resultado es que podemos llamar al comando apktool directamente de la forma:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
[usuario@host]apktool



En vez de:



[usuario@host]/home/usuario/Descargas/apktool




Ya que tanto apktool como apktool.jar se encuentran en una de las carpetas donde linux supone que están los archivos ejecutables.



Bueno, ya hemos instalado apktool de forma que podamos usarlo cómodamente. Ahora, toca usarlo. Lo primero, es descargar la ROM de MIUI a traducir o editar. Navegamos hasta su interior, hasta la carpeta system/framework/ y hacemos:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
apktool if framework-res.apk


Esto instala el framework-res.apk como framework usado para decompilar los apks, de forma que si no hiciésemos esto, en cuanto una aplicación al decompilarla hiciese referencia a cualquier cosa contenida en el framework-res.apk, nos daría un error.



Ahora, para hacer una prueba, podemos irnos a system/app/ y hacer:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
apktool d Launcher2.apk


De forma que con el parámetro d le decimos al programa que decompile la aplicación, y:



Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
apktool b Launcher2


Consiguiendo así que los archivos se recompilen dentro de la carpeta Launcher2 antes generada. Recordad que no podéis usar los apks que están dentro de "dist/", si no que debéis mantener los apks originales, empaquetando en su interior los resultados de la recompilación que están en build/apk/ Más adelante, os pondré unos mini-scripts que he creado para automatizar un poco todo.

Importante: no reempaquetéis el contenido de build/apk/res/layout/, apktool recompila mal estos archivos, y así sólo os darán Force Closes.






Scripts automatizados



Spoiler for Hiden:

Estos son scripts en bash que he creado para poder automatizar más las tareas. La forma de instalarlos es la misma que para apktool, copiarlos a /usr/bin/ y darles permisos.



Los scripts son:



  • Decompilar todos los apks de la carpeta:
Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión

for i in $(ls *.apk); do

  echo "=============Decompilando $i==============="

  apktool d $i

done




  • Recompilar y guardar todos los apks decompilados de la carpeta:
Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
for i in $(ls *.apk); do

  nombre=${i%.apk}

  echo "=============Empaquetando $nombre==============="

  apktool b $nombre

  cd $nombre/build/apk/

  zip -r ../../../$nombre.apk resources.arsc

  cd ../../../

done




  • Recompilar y empaquetar un apk (uso: empaquetar Nombredelapk, siendo "empaquetar" el nombre del script):
Código: No tienes permisos para ver los enlaces. Regístrate o Inicia sesión
apktool b $1

cd $1/build/apk/

zip -r ../../../$1.apk resources.arsc

cd ../../../






    El tema aún no está terminado, iré añadiendo información segun vaya teniendo tiempo.



    Un saludo!



    by Arasthel

    Desconectado rauldlnx10

    Re:[MINI-TUTORIAL BÁSICO] Tutorial: Como manejarse en la consola de comandos
    « Respuesta #1 en: 07 de Noviembre de 13, 17:32:11 pm »
    Buen tuto Trunk, gracias ^^ lo tendré en mente si me paso a Linux