Prepare sandboxed Mac and iOS TestFlight packaging
8 files changed,
+118
−3
native/PrivacyInfo.xcprivacy+17 −0native/apple/Sources/DocsApp/DocsApp.swift+4 −2native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.pngbinarynative/ios/project.yml+7 −1native/macos/AppIcon.icnsbinarynative/macos/AppStore.entitlements+12 −0native/macos/Info.plist+30 −0native/macos/project.yml+48 −0
diff --git a/native/PrivacyInfo.xcprivacy b/native/PrivacyInfo.xcprivacy| new file mode 100644 |
| index 0000000..79bc9e2 |
| --- /dev/null |
| +++ b/native/PrivacyInfo.xcprivacy |
| @@ -0,0 +1,17 @@ |
| +<?xml version="1.0" encoding="UTF-8"?> |
| +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| +<plist version="1.0"> |
| +<dict> |
| + <key>NSPrivacyAccessedAPITypes</key> |
| + <array> |
| + <dict> |
| + <key>NSPrivacyAccessedAPIType</key> |
| + <string>NSPrivacyAccessedAPICategoryUserDefaults</string> |
| + <key>NSPrivacyAccessedAPITypeReasons</key> |
| + <array> |
| + <string>CA92.1</string> |
| + </array> |
| + </dict> |
| + </array> |
| +</dict> |
| +</plist> |
diff --git a/native/apple/Sources/DocsApp/DocsApp.swift b/native/apple/Sources/DocsApp/DocsApp.swift| index 498b22d..b6f42cf 100644 |
| --- a/native/apple/Sources/DocsApp/DocsApp.swift |
| +++ b/native/apple/Sources/DocsApp/DocsApp.swift |
| @@ -1,11 +1,11 @@ |
| -#if os(macOS) |
| +#if os(macOS) && canImport(RastrilloMacUpdates) |
| import RastrilloMacUpdates |
| #endif |
| import DocsKit |
| import RastrilloApple |
| import SwiftUI |
| @main struct DocsApp: App { |
| - #if os(macOS) |
| + #if os(macOS) && canImport(RastrilloMacUpdates) |
| @State private var updater = NativeUpdater() |
| #endif |
| #if os(macOS) |
| @@ -22,7 +22,9 @@ import SwiftUI |
| } |
| #if os(macOS) |
| .defaultSize(width: 1120, height: 820) |
| + #if canImport(RastrilloMacUpdates) |
| .commands { NativeUpdateCommands(updater: updater) } |
| #endif |
| + #endif |
| } |
| } |
diff --git a/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png b/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png| index b85bf23..8d1d92c 100644 |
| Binary files a/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png and b/native/ios/Assets.xcassets/AppIcon.appiconset/AppIcon.png differ |
diff --git a/native/ios/project.yml b/native/ios/project.yml| index 1092cfb..295726b 100644 |
| --- a/native/ios/project.yml |
| +++ b/native/ios/project.yml |
| @@ -19,7 +19,13 @@ targets: |
| DocsPhone: |
| type: application |
| platform: iOS |
| - sources: [../apple/Sources/DocsApp, Assets.xcassets] |
| + sources: |
| + - ../apple/Sources/DocsApp |
| + - Assets.xcassets |
| + - path: ../LICENSE.lucide |
| + buildPhase: resources |
| + - path: ../PrivacyInfo.xcprivacy |
| + buildPhase: resources |
| dependencies: |
| - package: DocsNative |
| product: DocsKit |
diff --git a/native/macos/AppIcon.icns b/native/macos/AppIcon.icns| new file mode 100644 |
| index 0000000..da1a204 |
| Binary files /dev/null and b/native/macos/AppIcon.icns differ |
diff --git a/native/macos/AppStore.entitlements b/native/macos/AppStore.entitlements| new file mode 100644 |
| index 0000000..a046386 |
| --- /dev/null |
| +++ b/native/macos/AppStore.entitlements |
| @@ -0,0 +1,12 @@ |
| +<?xml version="1.0" encoding="UTF-8"?> |
| +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| +<plist version="1.0"> |
| +<dict> |
| + <key>com.apple.security.app-sandbox</key> |
| + <true/> |
| + <key>com.apple.security.files.user-selected.read-write</key> |
| + <true/> |
| + <key>com.apple.security.network.client</key> |
| + <true/> |
| +</dict> |
| +</plist> |
diff --git a/native/macos/Info.plist b/native/macos/Info.plist| new file mode 100644 |
| index 0000000..7a59688 |
| --- /dev/null |
| +++ b/native/macos/Info.plist |
| @@ -0,0 +1,30 @@ |
| +<?xml version="1.0" encoding="UTF-8"?> |
| +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
| +<plist version="1.0"> |
| +<dict> |
| + <key>CFBundleDevelopmentRegion</key> |
| + <string>$(DEVELOPMENT_LANGUAGE)</string> |
| + <key>CFBundleDisplayName</key> |
| + <string>Oficina Docs</string> |
| + <key>CFBundleExecutable</key> |
| + <string>$(EXECUTABLE_NAME)</string> |
| + <key>CFBundleIconFile</key> |
| + <string>AppIcon</string> |
| + <key>CFBundleIdentifier</key> |
| + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> |
| + <key>CFBundleInfoDictionaryVersion</key> |
| + <string>6.0</string> |
| + <key>CFBundleName</key> |
| + <string>Oficina Docs</string> |
| + <key>CFBundlePackageType</key> |
| + <string>APPL</string> |
| + <key>CFBundleShortVersionString</key> |
| + <string>$(MARKETING_VERSION)</string> |
| + <key>CFBundleVersion</key> |
| + <string>$(CURRENT_PROJECT_VERSION)</string> |
| + <key>LSApplicationCategoryType</key> |
| + <string>public.app-category.productivity</string> |
| + <key>NSHighResolutionCapable</key> |
| + <true/> |
| +</dict> |
| +</plist> |
diff --git a/native/macos/project.yml b/native/macos/project.yml| new file mode 100644 |
| index 0000000..e0a58f1 |
| --- /dev/null |
| +++ b/native/macos/project.yml |
| @@ -0,0 +1,48 @@ |
| +name: DocsMacStore |
| +options: |
| + deploymentTarget: |
| + macOS: '26.0' |
| +packages: |
| + DocsNative: |
| + path: ../apple |
| + RastrilloNative: |
| + url: https://amadan.net/rastrillo/native |
| + revision: 4c61d6283a188c95647e1d0e609e69d29c2e7fa1 |
| +settings: |
| + base: |
| + SWIFT_VERSION: '6.0' |
| + CODE_SIGN_STYLE: Automatic |
| + MARKETING_VERSION: '0.1.0' |
| + CURRENT_PROJECT_VERSION: '3' |
| + ENABLE_HARDENED_RUNTIME: YES |
| +targets: |
| + DocsMacStore: |
| + type: application |
| + platform: macOS |
| + sources: |
| + - ../apple/Sources/DocsApp |
| + - path: AppIcon.icns |
| + buildPhase: resources |
| + - path: ../LICENSE.lucide |
| + buildPhase: resources |
| + - path: ../PrivacyInfo.xcprivacy |
| + buildPhase: resources |
| + dependencies: |
| + - package: DocsNative |
| + product: DocsKit |
| + - package: RastrilloNative |
| + product: RastrilloApple |
| + info: |
| + path: Info.plist |
| + properties: |
| + CFBundleDisplayName: Oficina Docs |
| + CFBundleName: Oficina Docs |
| + CFBundleShortVersionString: $(MARKETING_VERSION) |
| + CFBundleVersion: $(CURRENT_PROJECT_VERSION) |
| + CFBundleIconFile: AppIcon |
| + LSApplicationCategoryType: public.app-category.productivity |
| + NSHighResolutionCapable: true |
| + settings: |
| + base: |
| + PRODUCT_BUNDLE_IDENTIFIER: net.amadan.oficina.docs |
| + CODE_SIGN_ENTITLEMENTS: AppStore.entitlements |