Cómo Compilar Samourai Wallet
view this post on our onion site
7 min read

Cómo Compilar Samourai Wallet

Cómo Compilar Samourai Wallet

Compilar es el proceso de convertir el código escrito en un lenguaje de programación, que puede ser entendido por los humanos, en código máquina, que puede ser ejecutado por los ordenadores.

En este artículo veremos cómo compilar Samourai Wallet y por qué es importante.

¡No es tan difícil como podría parecer!


1. Porque Compilar el software?

Supongamos que estás en un restaurante y acabas de comer un trozo de tarta que te ha gustado mucho. Le dices al cocinero lo mucho que te ha gustado y le pides la receta, que te da encantado.

Ahora bien, ¿cómo puedes saber si esa receta produce realmente esa tarta? La única forma de asegurarlo es seguir los pasos de la receta y comprobar si el resultado es esa misma tarta.

Por supuesto, la analogía no es perfecta. Cocinar no es matemático y difícilmente se acabará obteniendo la tarta exacta, sobre todo si no se es cocinero. Pero por suerte no tenemos ese problema con el software.

Por lo tanto, la primera razón para compilar es:

No confíes, verifica

  • Si compilas y subes el software a tu teléfono, no estás confiando en nadie;
  • Si descargas el apk y verificas la firma, estás confiando en el desarrollador; pero
  • Si descargas el monedero de Google o Apple, estás confiando en todos: los desarrolladores, el proveedor de la tienda, el gobierno;

Personalizar

La segunda razón es la personalización. Si hay algún detalle en la cartera que no te gusta o que preferirías cambiar, el software de código abierto nos permite modificarlo.

Claro que esto es más difícil que simplemente compilar, pero veremos algunos ejemplos sencillos.

Aportar

Esta última razón es sin duda la más difícil. En caso de que creas que tus cambios serían útiles para otros, puedes solicitar que tu código se fusione con el monedero, haciéndolo parte de una futura versión y beneficiando a todos los usuarios.


2. Compilación

Vamos a utilizar Ubuntu Linux en este tutorial, pero el proceso es prácticamente el mismo para cualquier distribución de Linux. Vamos a ver cada paso.

2.1 Obtener el código de Samourai Wallet

Necesitamos git VCS (sistema de control de versiones) instalado para obtener el código. Si aún no lo tienes, se puede instalar en las distros basadas en Debian con sudo apt install git.

Ahora, vamos a clonar el repositorio de Samourai con:

 
 $ git clone https://code.samourai.io/wallet/samourai-wallet-android
 $ cd samourai-wallet-android
 

Hemos descargado el código en el directorio samourai-wallet-android y lo hemos introducido. Si ahora escribes git status, verás un mensaje como On branch develop.
Los repositorios Git se organizan en ramas y actualmente estamos en la rama develop, que está destinada al código en el que se está trabajando para formar parte de una futura versión.

Dado que nuestro propósito aquí es construir Samourai para nuestro propio uso, debemos comprobar una rama que corresponde a una liberación, por lo que tendríamos el mismo código que fue liberado.

Primero, comprueba las ramas disponibles con git branch -a.

En el momento de escribir esto, la última versión liberada es la 0.99.98f. Cambiemos a esa versión usando git checkout 0.99.98f. Ahora los archivos del directorio han sido cambiados por los de la versión 0.99.98f.

2.2 Instalar Android Studio

Vaya a la página de descarga de Android Studio y obtenga la última versión para Linux, que actualmente es Android Studio Dolphin | 2021.3.1 Patch 1 para Linux 64-bit:

Extrae el contenido de ese paquete en algún lugar usando la GUI o con tar xvf android-studio-2021.3.1.17-linux.tar.gz. En mi caso, los extraje a /home/user/android-studio.

2.3 Abrir el proyecto

Dentro del directorio de Android Studio está el directorio bin con el ejecutable del IDE. Inícialo con ./studio.sh. Android Studio comenzará a cargar.
Las opciones por defecto están bien para aceptarlas. En la pantalla de bienvenida, selecciona Open y elige el lugar donde has clonado el proyecto. Si te pregunta si quieres confiar en el proyecto, confírmalo:

Abrir el proyecto puede llevar un tiempo. Es posible que aparezcan algunos errores del IDE y que en la parte inferior aparezcan muchos mensajes sobre las cosas que se están indexando. Espera hasta que esos mensajes desaparezcan.

Finalmente, Gradle descargará las dependencias del proyecto. Ten paciencia. Escribí este tutorial en una máquina virtual, así que es muy probable que a mí me lleve más tiempo que a ti :)

Después de que todas esas indexaciones y descargas estén hechas, es muy probable que el IDE ofrezca actualizaciones en el plugin de Gradle o incluso en el propio Android Studio. Te recomiendo que las instales todas (yo también reviso los pasos recomendados), reiniciando el IDE si te lo pide.

2.4 Construir el proyecto

Ahora que hemos actualizado todo y no quedan más notificaciones, estamos listos para construir el monedero. Abre el menú Build y selecciona Generate Signed Bundle / APK..., luego elige APK.

A continuación, te pedirá un almacén de claves para firmar el APK. Haz clic en Crear nuevo..., y luego elige una ruta y una contraseña. También necesitarás un alias para la clave con su propia contraseña (puede ser la misma contraseña del almacén de claves) y un nombre para el certificado. En el cuadro de diálogo anterior, introducirá la información de este almacén de claves (vea las imágenes de abajo):

Por último, tenemos que seleccionar la variante de construcción. Podemos elegir una compilación de producción o de ensayo y también una de lanzamiento o de depuración.

production está pensada para ser utilizada en la red principal, mientras que staging es más adecuada para la red de pruebas. Hay algunas diferencias entre ambas versiones. Por ejemplo, la versión de producción no permite grabar o capturar la pantalla de entrada del PIN por motivos de seguridad.

Una cosa a tener en cuenta aquí es que no se puede tener más de un APK de producción o staging en el mismo teléfono al mismo tiempo. Por lo tanto, si desea por ahora sólo probar este procedimiento, probablemente debería elegir la puesta en escena. Cuando te sientas más cómodo con el uso de tu propia versión compilada en mainnet, puedes ir con production. En este último caso, tendrás que desinstalar primero tu cartera Samourai ya existente (¡recuerda comprobar primero tu copia de seguridad!) y luego instalar tu APK.

La otra opción es debug o release. Como su nombre indica, la primera está indicada para la depuración, mientras que la liberación generará una versión optimizada. Aquí no vamos a depurar nada, así que elige release.

Si quieres tener un tercer Samourai en tu teléfono (como para probar las transacciones de PayNym entre 2 carteras de testnet), puedes crear fácilmente una nueva variante de build. Abre el archivo app/build.gradle y, en productFlavors, añade una variante más. Aquí, estoy creando una variante dev:

    
    dev {
    applicationId 'com.samourai.wallet.dev'
    versionCode 193
    versionName "0.99.98f"
    resValue "string", "app_name", "Samourai Dev"
    resValue "string", "version_name", "0.99.98f"
    }
    

3. Personalización

Como he dicho antes, cambiar el código fuente requiere tener conocimientos de desarrollo en Android, por lo que queda fuera del alcance del tutorial, pero vamos a ver algunos ejemplos de cosas sencillas que se pueden hacer.

Cambiar el idioma de la aplicación: Me gusta usar mi Samourai Wallet en inglés en lugar del idioma del teléfono. No hay forma de configurar esto en la propia app, pero podemos conseguirlo fácilmente entrando en el directorio app/src/main/res/values/strings y borrando los archivos strings.xml no deseados. En mi caso, borro los que están dentro de los directorios como values-es, values-de etc, manteniendo sólo el directorio values.

Cambiar el icono y el nombre de la aplicación: esto es un poco tonto, pero la aplicación puede disfrazarse de un potencial atacante físico. Puedes disfrazar tu app como TikTok, por ejemplo.
Descargue la aplicación TikTok de un sitio web como Apkpure, descomprima el apk y obtenga el icono de uno de los directorios bajo res. El icono se llama a.png o b.png.
Cámbiale el nombre a tiktok.png y cópialo en app/src/main/res/drawable-hdpi.

Edita AndroidManifest.xml y, en < application >, cambia el valor de **android:icon **a @drawable/tiktok y de android:label a TikTok:

0:00
/

Pedir el PIN antes de las transacciones: esto es un poco más avanzado, pero también me gusta que mi cartera me pida el PIN antes de cada transacción, así que he creado una preferencia para ello:

4. Conclusión

Construir el monedero no es realmente tan difícil y nos permite asegurarnos de que no estamos confiando en nadie: efectivamente estamos utilizando el código abierto publicado. Además, uno puede cambiar partes del monedero, con código hecho por él mismo o por otros.

Es cierto que hay que seguir muchos pasos, pero la mayoría de ellos sólo hay que hacerlos una vez.
Para futuros lanzamientos, sólo tendríamos que obtener el nuevo código con git pull, cambiar a la rama de lanzamiento más reciente con git checkout, reconstruir y subir el APK al teléfono.

Traducido por Dafer
Escrito originalmente: otto
🧡
Found this post helpful? Consider sending the author a tip
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ