Pular para o conteúdo principal

Adicionar o SDK Outline ao seu app para dispositivos móveis

Este documento resume como integrar o SDK Outline aos seus aplicativos para dispositivos móveis, com foco na biblioteca MobileProxy para gerenciamento simplificado de proxies locais.

MobileProxy é uma biblioteca com base no Go, criada para simplificar a integração de funcionalidades de proxy a apps para dispositivos móveis. Ela usa o Go Mobile (em inglês) para gerar bibliotecas para dispositivos móveis. Dessa forma, você pode configurar as bibliotecas de rede do seu aplicativo para encaminhar o tráfego por um proxy local.

App sem MobileProxy

App de conteúdo sem MobileProxy

App com MobileProxy

App de conteúdo com MobileProxy

Etapa 1: como criar bibliotecas para dispositivos móveis com MobileProxy

Use o gomobile (em inglês) para compilar o código Go em bibliotecas para Android e iOS.

  1. Clone o repositório do SDK Outline:
git clone https://github.com/OutlineFoundation/outline-sdk.git
cd outline-sdk/x
  1. Crie os binários do Go Mobile com go build (em inglês):
go build -o "$(pwd)/out/" golang.org/x/mobile/cmd/gomobile golang.org/x/mobile/cmd/gobind

Adicionar suporte do Psiphon

Você pode adicionar suporte para usar a rede do Psiphon (em inglês) seguindo estas etapas extras:

  • Entre em contato com a equipe do Psiphon para obter uma configuração que dê acesso à rede deles. Isso pode requerer um contrato.

  • Adicione a configuração do Psiphon que você recebeu à seção fallback da sua configuração SmartDialer.

  • Crie a MobileProxy usando o sinalizador -tags psiphon:

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

O sinalizador -tags psiphon é obrigatório, porque a base de código Psiphon é licenciada sob o GPL, que pode impor restrições de licença ao seu próprio código. Pode ser uma boa ideia adquirir uma licença especial com eles.

  1. Gere bibliotecas para dispositivos móveis e adicione-as ao seu projeto:
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

No Android Studio, selecione File > Import Project… para importar o pacote out/mobileproxy.aar gerado. Se quiser mais ajuda, confira Como criar e implantar no Android (em inglês) em Go Mobile.

Etapa 2: executar a MobileProxy

Abra o app e inicie o proxy local MobileProxy dentro do tempo de execução do seu app. Você pode usar uma configuração de transporte estática ou o Proxy Inteligente para a seleção dinâmica de estratégias.

  • Configuração de transporte estática: use a função RunProxy com uma configuração de transporte e endereço local.
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()

Etapa 3: configurar as bibliotecas de rede e clientes HTTP

Configure suas bibliotecas de rede para usar a porta e endereço do proxy local.

Defina o proxy com HttpClient.findProxy (em inglês).

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

Avançado: gere uma biblioteca para dispositivos móveis personalizada

Para casos de uso avançados, você pode gerar suas próprias bibliotecas para dispositivos móveis:

  1. Criar uma biblioteca Go: desenvolva um pacote Go reunindo as funcionalidades do SDK necessárias.

  2. Gerar bibliotecas para dispositivos móveis: use gomobile bind para produzir ARchives do Android (AAR) e Apple Frameworks. Exemplos (em inglês):

  3. Integrar ao seu app: adicione a biblioteca gerada ao seu aplicativo para dispositivos móveis.

observação

use gomobile bind no seu pacote personalizado, não diretamente nos pacotes do SDK.