Saltar al contenido principal

Agrega el SDK de Outline a tu app para dispositivos móviles

En este documento, se describe cómo integrar el SDK de Outline en tus aplicaciones para dispositivos móviles, con un enfoque en la biblioteca MobileProxy para simplificar la administración del proxy local.

MobileProxy es una biblioteca basada en Go diseñada para optimizar la integración de las funciones del proxy en apps para dispositivos móviles. Utiliza Go para dispositivos móviles con el objetivo de generar bibliotecas para dispositivos móviles, lo que te permite configurar las bibliotecas de redes de tu app para enrutar el tráfico a través de un proxy local.

App sin MobileProxy

Contenido de "App sin MobileProxy"

App con MobileProxy

Contenido de "App con MobileProxy"

Paso 1: Compila las bibliotecas MobileProxy para dispositivos móviles

Usa gomobile para compilar el código de Go en bibliotecas para iOS y Android.

  1. Clona el repositorio del SDK de Outline:
git clone https://github.com/OutlineFoundation/outline-sdk.git
cd outline-sdk/x
  1. Compila los objetos binarios de Go para dispositivos móviles con go build:
go build -o "$(pwd)/out/" golang.org/x/mobile/cmd/gomobile golang.org/x/mobile/cmd/gobind

Cómo agregar compatibilidad con Psiphon

Puedes agregar compatibilidad con el uso de la red de Psiphon siguiendo estos pasos adicionales:

  • Comunícate con el equipo de Psiphon para obtener un archivo de configuración que te otorgue acceso a su red (lo que puede requerir la celebración de un contrato).

  • Agrega el archivo de configuración de Psiphon a la sección fallback de tu archivo de configuración SmartDialer.

  • Crea el MobileProxy con la marca -tags psiphon:

go build -tags psiphon -o "$(pwd)/out/" golang.org/x/mobile/cmd/gomobile golang.org/x/mobile/cmd/gobind

La marca -tags psiphon es obligatoria porque la base de código de Psiphon tiene una licencia de GPL, que puede imponer restricciones de licencia en tu propio código. Te recomendamos que obtengas una licencia especial de Psiphon.

  1. Genera bibliotecas para dispositivos móviles y agrégalas a tu proyecto:
PATH="$(pwd)/out:$PATH" gomobile bind -ldflags='-s -w' -target=android -androidapi=21 -o "$(pwd)/out/mobileproxy.aar" github.com/OutlineFoundation/outline-sdk/x/mobileproxy

En Android Studio, selecciona File > Import Project… para importar el paquete out/mobileproxy.aar generado. Para obtener más ayuda, consulta la sección Building and deploying to Android del artículo sobre Go para dispositivos móviles.

Paso 2: Ejecuta MobileProxy

Inicializa e inicia el proxy local MobileProxy en el entorno de ejecución de tu app. Puedes usar una configuración de transporte estático o el proxy inteligente para la selección de una estrategia dinámica.

  • Configuración de transporte estático: Usa la función RunProxy con una dirección local y una configuración de transporte.
import mobileproxy.*

val dialer = StreamDialer("split:3")

// Use port zero to let the system pick an open port for you.
val proxy = Mobileproxy.runProxy("localhost:0", dialer)
// Configure your networking library using proxy.host() and proxy.port() or proxy.address().
// ...
// Stop running the proxy.
proxy.stop()
val testDomains = Mobileproxy.newListFromLines("www.youtube.com\ni.ytimg.com")
val strategiesConfig = "..." // Config YAML.
val dialer = Mobileproxy.newSmartStreamDialer(testDomains, strategiesConfig, Mobileproxy.newStderrLogWriter())

// Use port zero to let the system pick an open port for you.
val proxy = Mobileproxy.runProxy("localhost:0", dialer)
// Configure your networking library using proxy.host() and proxy.port() or proxy.address().
// ...
// Stop running the proxy.
proxy.stop()

Paso 3: Configura clientes HTTP y bibliotecas de redes

Configura tus bibliotecas de redes para que usen el puerto y la dirección del proxy local.

Configura el proxy con HttpClient.findProxy.

HttpClient client = HttpClient();
client.findProxy = (Uri uri) {
return "PROXY " + proxy.address();
};

Uso avanzado: Genera una biblioteca para dispositivos móviles personalizada

Para los casos de uso avanzados, puedes generar tus propias bibliotecas para dispositivos móviles:

  1. Crea una biblioteca de Go: Desarrolla un paquete de Go uniendo las funciones requeridas del SDK.

  2. Genera bibliotecas para dispositivos móviles: Usa gomobile bind para producir Android ARchives (AAR) y frameworks de Apple. Ejemplos:

  3. Integra la biblioteca en tu app: Agrega la biblioteca generada a tu aplicación para dispositivos móviles.

nota

Usa gomobile bind en tu paquete personalizado, no directamente en los paquetes del SDK.