Drop iOS Application Integrated with Firebase#5
Conversation
- Added NSObject import from platform.darwin for iOS protocol implementations - Fixed NSMutableData initialization for receive file buffer - Added ExperimentalForeignApi opt-in annotations - Fixed UInt/ULong type conversions in use cases - Configured proper iosMain source set hierarchy in build.gradle.kts - Added Java 17 configuration for Xcode builds - Linked SystemConfiguration framework for network monitoring - Implemented ArkDrop bridge wrapper for iOS - Added send/receive file implementations for iOS - Configured cinterop for Objective-C bridge
- Add .github/workflows/release-ios.yml (Testflight, same secrets as Rate-iOS) - Add fastlane Fastfile, Appfile, Gemfile - Add shared iosApp.xcscheme - Update bundle ID to com.arkbuilders.Drop (from deprecated Drop-iOS) - Update Release config: Team SQNXHTL7FT, manual signing Co-authored-by: Cursor <cursoragent@cursor.com>
…ties Gradle will use JAVA_HOME from environment (set by GitHub Actions) Co-authored-by: Cursor <cursoragent@cursor.com>
- Config.xcconfig: use // instead of # for comment (fix preprocessor directive error) - Add copyFrameworkForXcode Gradle task to copy XCFramework to path Xcode expects - Add Gradle pre-build step in workflow before Xcode build Co-authored-by: Cursor <cursoragent@cursor.com>
Replace custom task with Copy task to avoid project ref at execution time Co-authored-by: Cursor <cursoragent@cursor.com>
- Match provisioning profile (Drop-AppStore) - Add XCFramework-Info.plist template for when Kotlin doesn't create it Co-authored-by: Cursor <cursoragent@cursor.com>
Fixes ios-arm64/Shared.framework not found - Gradle Copy was not copying nested dirs Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ion ARK-Builders#10 Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
| tags: | ||
| - 'v*' | ||
| branches: | ||
| # TEMPORARY: Remove after testing |
| }; | ||
| 87961AEC2F239F6600972E0D /* XCRemoteSwiftPackageReference "arkdrop-swift-binaries" */ = { | ||
| isa = XCRemoteSwiftPackageReference; | ||
| repositoryURL = "https://github.com/oluiscabral/arkdrop-swift-binaries"; |
|
|
||
| # Firebase (contains API keys — never commit) | ||
| GoogleService-Info.plist | ||
| google-services.json |
There was a problem hiding this comment.
@kirillt Implement similar approach in other apps: Rate, website etc.
| check: | ||
| needs: [lint, ktlint] | ||
| if: ${{ startsWith(github.actor, 'dependabot') }} | ||
| environment: Development |
There was a problem hiding this comment.
@kirillt Determine correct separation of environments
In fact, Development is uploaded to Testflight too.
Options:
[A] Create new Production for release and use Testflight here
[B] Keep Development here and use Testflight for production
Create separate Firebase project for non-test analytics.
There was a problem hiding this comment.
Consider renaming the variable so it's clear that it's used in Android.
Environments for iOS and Android should be used symetrically, both X for test/dev and both Y for production.
| jobs: | ||
| build: | ||
| runs-on: macos-26 # macOS 26 Tahoe with Xcode 26.2 (required for App Store from Apr 28, 2026 - ITMS-90725) | ||
| environment: Testflight |
There was a problem hiding this comment.
@kirillt Determine correct separation of environments
In fact, Development is uploaded to Testflight too.
Options:
[A] Create new Production for release and use Testflight here
[B] Keep Development here and use Testflight for production
Create separate Firebase project for non-test analytics.
There was a problem hiding this comment.
Consider renaming the variable so it's clear that it's used in iOS.
Environments for iOS and Android should be used symetrically, both X for test/dev and both Y for production.
|
|
||
| - name: Decode Google Services config | ||
| run: | | ||
| echo "${{ secrets.GOOGLE_SERVICES_JSON }}" | base64 --decode > composeApp/google-services.json |
There was a problem hiding this comment.
Double-check if the job is aborted when the Firebase config is missing.
|
I've replaced repository secrets with environment secrets. Temporary: Development for Android, and Testflight for iOS. Should restructure environments before merge. |
Branched off from the last commit of #4 (ef81c65)
Integrates Firebase Analytics and Crashlytics.
Cover the whole Send Files and Receive Files use cases with Firebase Crashlytics logs