Skip to main content

เพิ่ม Outline SDK ลงในแอปบนมือถือ

เอกสารฉบับนี้สรุปวิธีผสานรวม Outline SDK เข้ากับแอปพลิเคชันบนมือถือ โดยจะมุ่งเน้นที่ไลบรารี MobileProxy สำหรับการจัดการพร็อกซีในระบบแบบง่าย

MobileProxy คือไลบรารีที่พัฒนาด้วยภาษา Go ซึ่งออกแบบมาเพื่อเพิ่มความคล่องตัวให้กับการผสานรวมฟังก์ชันการทำงานของพร็อกซีเข้ากับแอปบนมือถือ โดยจะใช้ Go Mobile ในการสร้างไลบรารีมือถือ ซึ่งช่วยให้คุณสามารถกำหนดค่าไลบรารีระบบเครือข่ายของแอปให้กำหนดเส้นทางการรับส่งข้อมูลผ่านพร็อกซีในระบบ

แอปที่ไม่มี MobileProxy

แอปเนื้อหาที่ไม่มี MobileProxy

แอปที่มี MobileProxy

แอปเนื้อหาที่มี MobileProxy

ขั้นตอนที่ 1: การสร้างไลบรารี MobileProxy สำหรับมือถือ

ใช้ gomobile เพื่อคอมไพล์โค้ด Go ลงในไลบรารีสำหรับ Android และ iOS

  1. โคลนที่เก็บ Outline SDK
git clone https://github.com/OutlineFoundation/outline-sdk.git
cd outline-sdk/x
  1. สร้างไบนารี Go Mobile ด้วย go build
go build -o "$(pwd)/out/" golang.org/x/mobile/cmd/gomobile golang.org/x/mobile/cmd/gobind

เพิ่มการรองรับ Psiphon

คุณเพิ่มการรองรับเพื่อใช้เครือข่าย Psiphon ได้โดยทำตามขั้นตอนเพิ่มเติมต่อไปนี้

  • ติดต่อทีม Psiphon เพื่อรับการกำหนดค่าที่ให้สิทธิ์เข้าถึงเครือข่าย ซึ่งการดำเนินการนี้อาจต้องมีการทำสัญญา

  • เพิ่มการกำหนดค่า Psiphon ที่ได้รับมาในส่วน fallback ของการกำหนดค่า SmartDialer

  • สร้าง Mobile Proxy โดยใช้แฟล็ก -tags psiphon

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

จำเป็นต้องใช้แฟล็ก -tags psiphon เนื่องจากฐานของโค้ด Psiphon ได้รับใบอนุญาตภายใต้ GPL ซึ่งสามารถบังคับใช้ข้อจำกัดของใบอนุญาตกับโค้ดของคุณเองได้ คุณจึงอาจต้องพิจารณาขอรับใบอนุญาตพิเศษจากทีมดังกล่าว

  1. สร้างไลบรารีมือถือและเพิ่มไปยังโปรเจ็กต์ของคุณ โดยทำดังนี้
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

ใน Android Studio ให้เลือก ไฟล์ > นำเข้าโปรเจ็กต์… เพื่อนำเข้าแพ็กเกจ out/mobileproxy.aar ที่สร้าง โปรดดูความช่วยเหลือเพิ่มเติมที่บทความการสร้างและการติดตั้งใช้งานกับ Android ของ Go Mobile

ขั้นตอนที่ 2: เรียกใช้ MobileProxy

เริ่มต้นพร็อกซีในระบบ MobileProxy ภายในรันไทม์ของแอป คุณใช้การกำหนดค่าการรับส่งข้อมูลแบบคงที่หรือ Smart Proxy สำหรับการเลือกกลยุทธ์แบบไดนามิกได้

  • การกำหนดค่าการรับส่งข้อมูลแบบคงที่: ใช้ฟังก์ชัน RunProxy กับที่อยู่ในระบบและการกำหนดค่าการรับส่งข้อมูล
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: กำหนดค่าไคลเอ็นต์ HTTP และไลบรารีระบบเครือข่าย

กำหนดค่าไลบรารีระบบเครือข่ายเพื่อใช้ที่อยู่พร็อกซีและพอร์ตในระบบ

ตั้งค่าพร็อกซีด้วย HttpClient.findProxy

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

ขั้นสูง: สร้างไลบรารีมือถือที่กำหนดเอง

สำหรับ Use Case ขั้นสูง คุณสร้างไลบรารีมือถือของคุณเองได้

  1. สร้างไลบรารี Go: พัฒนาแพ็กเกจ Go ที่รวมฟังก์ชันการทำงาน SDK ที่จำเป็นเข้าด้วยกัน

  2. สร้างไลบรารีมือถือ: ใช้ gomobile bind เพื่อสร้าง Android ARchive (AAR) และ Apple Framework โดยตัวอย่างมีดังนี้

  3. ผสานรวมลงในแอป: เพิ่มไลบรารีที่สร้างขึ้นลงในแอปพลิเคชันบนมือถือ

note

ใช้ gomobile bind ในแพ็กเกจที่กำหนดเองของคุณ ไม่ใช่ในแพ็กเกจ SDK โดยตรง