Skip to content

Drop iOS Application Integrated with Firebase#5

Open
oluiscabral wants to merge 31 commits into
mainfrom
fix-and-firebase/kmp-ios-impl
Open

Drop iOS Application Integrated with Firebase#5
oluiscabral wants to merge 31 commits into
mainfrom
fix-and-firebase/kmp-ios-impl

Conversation

@oluiscabral
Copy link
Copy Markdown
Collaborator

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

mdrlzy and others added 24 commits January 24, 2026 02:53
- 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>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
tags:
- 'v*'
branches:
# TEMPORARY: Remove after testing
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't forget before merge

};
87961AEC2F239F6600972E0D /* XCRemoteSwiftPackageReference "arkdrop-swift-binaries" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/oluiscabral/arkdrop-swift-binaries";
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to use our official repo

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread .gitignore

# Firebase (contains API keys — never commit)
GoogleService-Info.plist
google-services.json
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kirillt Implement similar approach in other apps: Rate, website etc.

This was referenced May 24, 2026
check:
needs: [lint, ktlint]
if: ${{ startsWith(github.actor, 'dependabot') }}
environment: Development
Copy link
Copy Markdown
Member

@kirillt kirillt May 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Copy Markdown
Member

@kirillt kirillt May 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Double-check if the job is aborted when the Firebase config is missing.

@kirillt
Copy link
Copy Markdown
Member

kirillt commented May 24, 2026

I've replaced repository secrets with environment secrets.

Temporary: Development for Android, and Testflight for iOS.

Should restructure environments before merge.

Comment thread .github/workflows/release-ios.yml Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants