Ana içeriğe geç

Outline SDK'yı mobil uygulamanıza ekleme

Bu belgede, Outline SDK'yı mobil uygulamalarınıza nasıl entegre edeceğiniz açıklanmaktadır. Basitleştirilmiş yerel proxy yönetimi için MobileProxy kitaplığına odaklanılmıştır.

Go temelli bir kitaplık olan MobileProxy, proxy işlevlerini mobil uygulamalara entegrasyonunu iyileştirmek için tasarlanmıştır. Mobil uygulama kitaplıklarını oluşturmak için Go Mobile'dan yararlanır. Böylece, uygulamanızın ağ kitaplıklarını trafiği yerel bir proxy üzerinden yönlendirecek şekilde yapılandırabilirsiniz.

MobileProxy kullanılmayan uygulama

MobileProxy kullanılmayan içerik uygulaması

MobileProxy kullanılan uygulama

MobileProxy kullanılan içerik uygulaması

1. adım: MobileProxy mobil uygulama kitaplıklarını oluşturun

Go kodunu Android ve iOS'e yönelik kitaplıklar hâlinde derlemek için gomobile'ı kullanın.

  1. Outline SDK deposunu klonlayın:
git clone https://github.com/OutlineFoundation/outline-sdk.git
cd outline-sdk/x
  1. go build ile Go Mobile ikili programlarını derleyin:
go build -o "$(pwd)/out/" golang.org/x/mobile/cmd/gomobile golang.org/x/mobile/cmd/gobind

Psiphon desteği ekleme

Şu ek adımları izleyerek Psiphon ağını kullanma desteği ekleyebilirsiniz:

  • Psiphon ekibine ulaşarak ağlarına erişim sağlayan bir yapılandırma alın. Bunun için bir sözleşmenizin olması gerekebilir.

  • Aldığınız Psiphon yapılandırmasını, SmartDialer yapılandırmanızın fallback bölümüne ekleyin.

  • -tags psiphon işaretini kullanarak MobileProxy'yi derleyin:

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

Psiphon kod tabanı GPL kapsamında lisanslandığından kodunuza lisans kısıtlamaları uygulanabilir. Bu nedenle -tags psiphon işareti zorunludur. Psiphon ekibinden özel bir lisans almanız önerilir.

  1. Mobil uygulama kitaplıklarını oluşturun ve projenize ekleyin:
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

Oluşturulan out/mobileproxy.aar paketini içe aktarmak için Android Studio'da Dosya > Projeyi İçe Aktar… seçeneğini belirleyin. Daha fazla yardım için Go Mobile'ın Building and deploying to Android (Uygulama derleme ve Android'e dağıtma) başlıklı bölümünü inceleyin.

2. adım: MobileProxy'yi çalıştırın

MobileProxy yerel proxy'sini uygulamanızın çalışma zamanında başlatın. Dinamik strateji seçimi için statik bir araç yapısı ya da akıllı proxy kullanabilirsiniz.

  • Statik araç yapılandırması: Yerel bir adres ve araç yapılandırmasıyla RunProxy işlevini kullanın.
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()

3. adım: HTTP istemcilerini ve ağ kitaplıklarını yapılandırın

Ağ kitaplıklarınızı yerel proxy adresini ve bağlantı noktasını kullanacak şekilde yapılandırın.

Proxy'yi HttpClient.findProxy ile ayarlayın.

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

İleri düzey: Özel mobil uygulama kitaplığı oluşturma

İleri düzey kullanım alanları için kendi mobil uygulama kitaplıklarınızı oluşturabilirsiniz:

  1. Go kitaplığı oluşturma: Zorunlu SDK işlevlerini sarmalayan bir Go paketi oluşturun.

  2. Mobil uygulama kitaplıkları oluşturma: Android Archive (AAR) ve Apple çerçeveleri oluşturmak için gomobile bind komutunu kullanın. Örnekler:

  3. Uygulamanıza entegre etme: Oluşturulan kitaplığı mobil uygulamanıza ekleyin.

not

gomobile bind komutunu doğrudan SDK paketlerinde değil, özel paketinizde kullanın.