NetDesk 1.5.0 — source release

This commit is contained in:
NetDesk committed 2026-10-18 02:02:46 +00:00
commit 40318aafdd
227 files changed
+80798

No files matched your search

+60
View File
@@ -0,0 +1,60 @@
# NetDesk by Akronlogic — iOS Podfile TEMPLATE.
#
# packaging/build-ios.sh installs this as ui/ios/Podfile when `flutter create`
# has not already produced one. It is the stock Flutter iOS Podfile with two
# NetDesk changes: the platform min is uncommented (13.0, to match
# NetDeskCore.xcframework) and the netdesk_core pod is linked into Runner.
#
# If a Podfile already exists, build-ios.sh leaves it in place and only injects
# the `pod 'netdesk_core'` line (and uncomments the platform) rather than
# overwriting it.
platform :ios, '13.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
# NetDesk Rust core — vendored static xcframework assembled by
# packaging/build-ios.sh. Provides VideoToolbox H.264 decode, E2E crypto,
# signaling and transport; the Flutter UI binds to it in Phase 3.
pod 'netdesk_core', :path => '.'
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
+65
View File
@@ -0,0 +1,65 @@
#
# NetDesk by Akronlogic — CocoaPods spec that links the compiled Rust core
# (NetDeskCore.xcframework) into the Flutter iOS Runner.
#
# This file is a TEMPLATE kept under version control in packaging/ios/.
# packaging/build-ios.sh copies it to ui/ios/netdesk_core.podspec next to the
# freshly-assembled NetDeskCore.xcframework, then adds
# pod 'netdesk_core', :path => '.'
# to ui/ios/Podfile so `flutter build ipa` links it automatically.
#
# The xcframework is a *static* library (libnetdesk_core.a, one slice per
# platform: ios-arm64 device + ios-arm64-simulator). CocoaPods auto-selects the
# right slice per build, so there are no hardcoded slice paths here.
#
Pod::Spec.new do |s|
s.name = 'netdesk_core'
s.version = '0.1.0'
s.summary = 'NetDesk native Rust core (static) for iOS — Akronlogic.'
s.description = <<-DESC
The compiled NetDesk engine: signaling, end-to-end crypto, the media
transport and VideoToolbox H.264 hardware decode (core/src/decode_vt.rs).
Vendored as a static xcframework; the Flutter UI binds to it over dart:ffi /
flutter_rust_bridge in Phase 3.
DESC
s.homepage = 'https://akronlogic.com'
s.license = { :type => 'Proprietary', :text => 'Copyright Akronlogic. All rights reserved.' }
s.author = { 'Akronlogic' => 'https://akronlogic.com' }
s.platform = :ios, '13.0'
s.source = { :path => '.' }
# The Rust core, assembled by packaging/build-ios.sh (xcodebuild -create-xcframework).
s.vendored_frameworks = 'NetDeskCore.xcframework'
# System frameworks the VideoToolbox decode path links with
# #[link(kind = "framework")] in core/src/decode_vt.rs. A static Rust lib
# records these in its metadata but does NOT pull them in at the final app
# link, so they must be named here.
# CoreMedia — CMVideoFormatDescription / CMSampleBuffer / CMBlockBuffer
# VideoToolbox — VTDecompressionSession*
# CoreVideo — CVPixelBuffer*
# CoreFoundation — CFDictionary/CFString/CFRelease (core-foundation-sys)
s.frameworks = 'VideoToolbox', 'CoreMedia', 'CoreVideo', 'CoreFoundation'
# Vendored static xcframework, no public headers yet (the C ABI header is
# generated with cbindgen when Phase 3's core/src/ffi.rs lands — see
# docs/build-ios.md). CocoaPods links the archive normally; once the Phase-3
# Dart bindings reference the symbols they are retained automatically.
#
# Before those bindings exist, nothing references the archive, so the linker
# may drop it. That is harmless for the build. If you want to *prove* the
# archive links end-to-end before Phase 3, force it in by uncommenting:
#
# s.user_target_xcconfig = {
# 'OTHER_LDFLAGS' => '-force_load "${PODS_XCFRAMEWORKS_BUILD_DIR}/netdesk_core/libnetdesk_core.a"'
# }
#
# (Do not combine -force_load with Phase-3 symbol references, or you may hit
# duplicate-symbol errors — pick one.)
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
# Keep the Rust/FFI symbols discoverable for dart:ffi lookups.
'STRIP_STYLE' => 'non-global',
}
end