diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index 1415cc79d..c04302f76 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -428,6 +428,13 @@ jobs: prefix-key: rustdesk-lib-cache key: ${{ matrix.job.target }}-${{ matrix.job.extra-build-features }} + - name: Install flutter rust bridge deps + shell: bash + run: | + cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" + pushd flutter && flutter pub get && popd + ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/ios/Runner/bridge_generated.h + - name: Build rustdesk lib env: VCPKG_ROOT: /opt/rustdesk_thirdparty_lib/vcpkg @@ -439,7 +446,9 @@ jobs: shell: bash run: | pushd flutter - flutter build ipa --release --obfuscate --split-debug-info=./split-debug-info --no-codesign + # flutter build ipa --release --obfuscate --split-debug-info=./split-debug-info --no-codesign + # for easy debugging + flutter build ipa --release --no-codesign # - name: Upload Artifacts # # if: env.ANDROID_SIGNING_KEY != null && env.UPLOAD_ARTIFACT == 'true' diff --git a/flutter/build_ios.sh b/flutter/build_ios.sh index 6d0d627ac..a6468a0a8 100755 --- a/flutter/build_ios.sh +++ b/flutter/build_ios.sh @@ -1,2 +1,5 @@ #!/usr/bin/env bash -flutter build ipa --release --obfuscate --split-debug-info=./split-debug-info +# https://docs.flutter.dev/deployment/ios +# flutter build ipa --release --obfuscate --split-debug-info=./split-debug-info +# no obfuscate, because no easy to check errors +flutter build ipa --release diff --git a/flutter/ios/Podfile.lock b/flutter/ios/Podfile.lock index 76d0bac73..1ad5f6360 100644 --- a/flutter/ios/Podfile.lock +++ b/flutter/ios/Podfile.lock @@ -75,7 +75,7 @@ DEPENDENCIES: - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - uni_links (from `.symlinks/plugins/uni_links/ios`) @@ -106,7 +106,7 @@ EXTERNAL SOURCES: package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: - :path: ".symlinks/plugins/path_provider_foundation/ios" + :path: ".symlinks/plugins/path_provider_foundation/darwin" qr_code_scanner: :path: ".symlinks/plugins/qr_code_scanner/ios" sqflite: @@ -141,6 +141,6 @@ SPEC CHECKSUMS: video_player_avfoundation: e489aac24ef5cf7af82702979ed16f2a5ef84cff wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f -PODFILE CHECKSUM: c649b4e69a3086d323110011d04604e416ad0dcd +PODFILE CHECKSUM: 2aff76ba0ac13439479560d1d03e9b4479f5c9e1 -COCOAPODS: 1.12.0 +COCOAPODS: 1.12.1 diff --git a/flutter/ios/Runner.xcodeproj/project.pbxproj b/flutter/ios/Runner.xcodeproj/project.pbxproj index a3bc7d43d..0813abb11 100644 --- a/flutter/ios/Runner.xcodeproj/project.pbxproj +++ b/flutter/ios/Runner.xcodeproj/project.pbxproj @@ -208,6 +208,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -437,6 +438,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.carriez.flutterHbb; PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -634,6 +636,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.carriez.flutterHbb; PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -723,6 +726,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.carriez.flutterHbb; PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; diff --git a/flutter/ios/Runner/AppDelegate.swift b/flutter/ios/Runner/AppDelegate.swift index b1c78e9c8..730c9adcb 100644 --- a/flutter/ios/Runner/AppDelegate.swift +++ b/flutter/ios/Runner/AppDelegate.swift @@ -13,6 +13,7 @@ import Flutter } public func dummyMethodToEnforceBundling() { + dummy_method_to_enforce_bundling(); session_get_rgba(nil); } } diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index eabd8512d..53611299a 100644 --- a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,122 +1,122 @@ { - "images": [ + "images" : [ { - "filename": "Icon-App-20x20@2x.png", - "idiom": "iphone", - "scale": "2x", - "size": "20x20" + "filename" : "Icon-App-20x20@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" }, { - "filename": "Icon-App-20x20@3x.png", - "idiom": "iphone", - "scale": "3x", - "size": "20x20" + "filename" : "Icon-App-20x20@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" }, { - "filename": "Icon-App-29x29@1x.png", - "idiom": "iphone", - "scale": "1x", - "size": "29x29" + "filename" : "Icon-App-29x29@1x.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "29x29" }, { - "filename": "Icon-App-29x29@2x.png", - "idiom": "iphone", - "scale": "2x", - "size": "29x29" + "filename" : "Icon-App-29x29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" }, { - "filename": "Icon-App-29x29@3x.png", - "idiom": "iphone", - "scale": "3x", - "size": "29x29" + "filename" : "Icon-App-29x29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" }, { - "filename": "Icon-App-40x40@2x.png", - "idiom": "iphone", - "scale": "2x", - "size": "40x40" + "filename" : "Icon-App-40x40@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" }, { - "filename": "Icon-App-40x40@3x.png", - "idiom": "iphone", - "scale": "3x", - "size": "40x40" + "filename" : "Icon-App-40x40@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" }, { - "filename": "Icon-App-60x60@2x.png", - "idiom": "iphone", - "scale": "2x", - "size": "60x60" + "filename" : "Icon-App-60x60@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" }, { - "filename": "Icon-App-60x60@3x.png", - "idiom": "iphone", - "scale": "3x", - "size": "60x60" + "filename" : "Icon-App-60x60@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" }, { - "filename": "Icon-App-20x20@1x.png", - "idiom": "ipad", - "scale": "1x", - "size": "20x20" + "filename" : "Icon-App-20x20@1x.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" }, { - "filename": "Icon-App-20x20@2x.png", - "idiom": "ipad", - "scale": "2x", - "size": "20x20" + "filename" : "Icon-App-20x20@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" }, { - "filename": "Icon-App-29x29@1x.png", - "idiom": "ipad", - "scale": "1x", - "size": "29x29" + "filename" : "Icon-App-29x29@1x.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" }, { - "filename": "Icon-App-29x29@2x.png", - "idiom": "ipad", - "scale": "2x", - "size": "29x29" + "filename" : "Icon-App-29x29@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" }, { - "filename": "Icon-App-40x40@1x.png", - "idiom": "ipad", - "scale": "1x", - "size": "40x40" + "filename" : "Icon-App-40x40@1x.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" }, { - "filename": "Icon-App-40x40@2x.png", - "idiom": "ipad", - "scale": "2x", - "size": "40x40" + "filename" : "Icon-App-40x40@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" }, { - "filename": "Icon-App-76x76@1x.png", - "idiom": "ipad", - "scale": "1x", - "size": "76x76" + "filename" : "Icon-App-76x76@1x.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" }, { - "filename": "Icon-App-76x76@2x.png", - "idiom": "ipad", - "scale": "2x", - "size": "76x76" + "filename" : "Icon-App-76x76@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" }, { - "filename": "Icon-App-83.5x83.5@2x.png", - "idiom": "ipad", - "scale": "2x", - "size": "83.5x83.5" + "filename" : "Icon-App-83.5x83.5@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" }, { - "filename": "Icon-App-1024x1024@1x.png", - "idiom": "ios-marketing", - "scale": "1x", - "size": "1024x1024" + "filename" : "Icon-App-1024x1024@1x.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" } ], - "info": { - "author": "icons_launcher", - "version": 1 + "info" : { + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json index 0bedcf2fd..00cabce83 100644 --- a/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ b/flutter/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -1,23 +1,23 @@ { "images" : [ { - "idiom" : "universal", "filename" : "LaunchImage.png", + "idiom" : "universal", "scale" : "1x" }, { - "idiom" : "universal", "filename" : "LaunchImage@2x.png", + "idiom" : "universal", "scale" : "2x" }, { - "idiom" : "universal", "filename" : "LaunchImage@3x.png", + "idiom" : "universal", "scale" : "3x" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } } diff --git a/flutter/ios/Runner/Base.lproj/Main.storyboard b/flutter/ios/Runner/Base.lproj/Main.storyboard index f3c28516f..d68a3a7a5 100644 --- a/flutter/ios/Runner/Base.lproj/Main.storyboard +++ b/flutter/ios/Runner/Base.lproj/Main.storyboard @@ -1,8 +1,10 @@ - - + + + - + + @@ -14,13 +16,14 @@ - + - + + diff --git a/flutter/ios/Runner/Runner-Bridging-Header.h b/flutter/ios/Runner/Runner-Bridging-Header.h index a8c447418..e930a3997 100644 --- a/flutter/ios/Runner/Runner-Bridging-Header.h +++ b/flutter/ios/Runner/Runner-Bridging-Header.h @@ -1,3 +1,3 @@ #import "GeneratedPluginRegistrant.h" -#import "ffi.h" +#import "bridge_generated.h" diff --git a/flutter/ios/Runner/ffi.h b/flutter/ios/Runner/ffi.h deleted file mode 100644 index 56b0d6ccc..000000000 --- a/flutter/ios/Runner/ffi.h +++ /dev/null @@ -1 +0,0 @@ -const unsigned char* session_get_rgba(const char*); diff --git a/flutter/pubspec.lock b/flutter/pubspec.lock index cfd41ab75..415f46eeb 100644 --- a/flutter/pubspec.lock +++ b/flutter/pubspec.lock @@ -237,10 +237,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.17.1" colorize: dependency: transitive description: @@ -743,10 +743,10 @@ packages: dependency: transitive description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 url: "https://pub.dev" source: hosted - version: "0.18.1" + version: "0.18.0" io: dependency: transitive description: @@ -799,10 +799,10 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.2.0" meta: dependency: transitive description: @@ -1474,14 +1474,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" - web: - dependency: transitive - description: - name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 - url: "https://pub.dev" - source: hosted - version: "0.1.4-beta" web_socket_channel: dependency: transitive description: @@ -1565,5 +1557,5 @@ packages: source: hosted version: "0.2.0" sdks: - dart: ">=3.1.0-185.0.dev <4.0.0" + dart: ">=3.0.0 <4.0.0" flutter: ">=3.7.0-0" diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index fc0be7018..ff6187d06 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # 1.1.9-1 works for android, but for ios it becomes 1.1.91, need to set it to 1.1.9-a.1 for iOS, will get 1.1.9.1, but iOS store not allow 4 numbers -version: 1.2.2 +version: 1.2.2+34 environment: sdk: ">=2.17.0"