Этот репозиторий — форк официального
VPNclient/libh2.Документ ведётся по требованию §2.1 / §2.3 лицензии NativeMind NONC (см.
wrappers/flutter_h2/LICENSE— единственная копия текста лицензии в репозитории на момент форка).
- Правообладатель / автор оригинала: NativeMind. © 2010–2025 NativeMind. Все права защищены.
- Официальный репозиторий (upstream): https://github.com/VPNclient/libh2
- Связанный core-репозиторий: https://github.com/VPNclient/h2.core
- Оригинальная лицензия: NativeMind NONC —
wrappers/flutter_h2/LICENSE. - Этот форк: https://github.com/PrabhuArjun/libh2 (публичный, по §2.1).
- Цель форка: помощь апстриму — реорганизация структуры обёрток (wrappers) и подготовка PR обратно в upstream. Коммерческого использования НЕТ (коммерция — только по отдельной письменной лицензии NativeMind, в работе). Помощь апстриму и публичный форк лицензией разрешены.
Реорганизация структуры обёрток (подготовка к разделению ответственности h2.core ↔ libh2). Изменения только структурные, бизнес-логика обёрток не менялась.
-
mobile/→wrappers/gomobile/. Пакет gomobile-обёртки (висевший в корне без go.mod) перенесён вwrappers/gomobile/и получил собственный модульgithub.com/vpnclient/libh2/wrappers/gomobile(require github.com/vpnclient/https-vpn, replace на локальный../../../h2.core) — по образцу существующегоwrappers/cgo/go.mod. Старый каталогmobile/удалён. -
Каркасы
wrappers/swift_h2/иwrappers/kotlin_h2/заведены по утверждённым спецификациямflows/sdd-h2.core-wrapper-swift/иflows/sdd-h2.core-wrapper-kotlin/:swift_h2/: README,Package.swift(бинарная цель наH2Core.xcframework),Sources/H2Core/H2Core.swift(тонкий Swift-фасад над gomobileMobile.*),build/gomobile-ios.sh.kotlin_h2/: README,build.gradle.kts(Android library, подключаетh2core.aar),src/main/kotlin/dev/vpnclient/h2core/H2Core.kt(тонкий Kotlin-фасад),build/gomobile-android.sh.- Оба собираются из общего источника
wrappers/gomobile/командойgomobile bind -target=ios|android.
-
План разделения
flows/sdd-h2-libh2-separation/скопирован из репозиторияh2.core, чтобы вся история обёрток жила в одном месте.
-
wrappers/gomobile/tools.goдобавлен — фиксируетgolang.org/x/mobile/bindкак зависимость модуля (blank-import под build-tagtools). Причина:go mod tidyбез него удаляет x/mobile (обычныйgo buildеё не использует), иgomobile bindломается. Стандартный паттерн tools.go. -
go mod tidy прогнан в
cgoиgomobile— go.sum актуализированы. -
Верификация каркасов через
gobind(без NDK/Xcode):gobind -lang=java→mobile/{Mobile,Client,Stats}.java(API:newClient(serverAddr, cryptoProvider),version()) ✓gobind -lang=objc→Mobile.objc.h,Universe.objc.h✓go build ./...в обоих модулях — чисто (Go 1.26.3) ✓ Это подтверждает: общийwrappers/gomobile/корректно конвертируется gomobile'ом и в Android-, и в iOS-биндинги. Полная сборка.aar/.xcframeworkтребует Android NDK / Xcode (ставятся на CI-раннере; на dev-машине не выполнялась).
go.mod обёрток используют replace github.com/vpnclient/https-vpn => ../../../h2.core — это dev-конвенция этого репозитория (так же в
wrappers/cgo/go.mod). Для production-релиза upstream
VPNclient/libh2 запинит конкретную версию/commit модуля h2.core.
В форке replace сохранён, чтобы локальная сборка работала из соседнего
каталога ../h2.core — не ломаем dev-flow.
Ветка refactor/separation-cleanup в PrabhuArjun/h2.core: удалены
дубли каталогов cgo/ и mobile/ (логика обёрток переезжает в libh2).
- PR в upstream
VPNclient/libh2не открывался — будет открыт владельцем форка после согласования. - Релизы через GitHub Actions (§2.2) на этой ветке не выполнялись.
- Имя/UI продукта (§2.5) не затрагивались.