diff --git a/.github/actions/ci/action.yml b/.github/actions/ci/action.yml
index 426a50db..a4587ba9 100644
--- a/.github/actions/ci/action.yml
+++ b/.github/actions/ci/action.yml
@@ -1,5 +1,6 @@
name: ci
description: Executes Dart specific CI steps.
+
inputs:
type:
description: The type of CI to run.
diff --git a/.github/actions/dependencies/action.yml b/.github/actions/dependencies/action.yml
index 0bb5eae4..6d4587e8 100644
--- a/.github/actions/dependencies/action.yml
+++ b/.github/actions/dependencies/action.yml
@@ -4,18 +4,35 @@ description: Installs dependencies
runs:
using: composite
steps:
- # General Tests
- - name: Install packages
+ # Install Flutter SDK
+ - name: Install Flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ architecture: x64
+
+ # Get package dependencies and generate files
+ - name: Get package dependencies and generate files
shell: bash
- run: flutter pub get
+ run: |
+ flutter pub get
+ flutter pub run build_runner build --delete-conflicting-outputs
- # - name: Generate code
- # shell: bash
- # run: flutter pub run build_runner build --delete-conflicting-outputs
+ # Get example app dependencies and generate files
+ - name: Get example app dependencies and generate files
+ shell: bash
+ working-directory: example/wallet
+ run: |
+ flutter pub get
+ flutter pub run build_runner build --delete-conflicting-outputs
- - name: Install packages for example
+ # Get example app dependencies and generate files
+ - name: Get example app dependencies and generate files
shell: bash
- run: cd example/dapp && flutter pub get && cd ../..
+ working-directory: example/dapp
+ run: |
+ flutter pub get
+ flutter pub run build_runner build --delete-conflicting-outputs
- name: Verify formatting and analyze project source
shell: bash
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index a7f133bd..71f4998f 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -14,26 +14,22 @@ jobs:
steps:
# Checkout the repo
- uses: actions/checkout@v3
-
- # Install Flutter
- - name: Install and set Flutter version
- uses: subosito/flutter-action@v2
- with:
- flutter-version: '3.19.5'
+ # Install Flutter and Dependencies
+ - uses: ./.github/actions/dependencies
+
# Setup Dart SDK
- uses: dart-lang/setup-dart@v1
- # Setup Dependencies
- - uses: ./.github/actions/dependencies
-
# Publish
- name: Check Publish Warnings
shell: bash
run: flutter pub publish --dry-run
+
- name: Publish Package
shell: bash
run: flutter pub publish -f
+
# Notify
- name: Notify Channel
uses: slackapi/slack-github-action@v1.24.0
@@ -44,4 +40,7 @@ jobs:
payload: |-
{
"text":"🚀 WalletConnectFlutterV2 *${{ github.ref_name }}* was just published at https://pub.dev/packages/walletconnect_flutter_v2"
- }
\ No newline at end of file
+ }
+
+# Launch locally
+# act -j publish --container-architecture linux/amd64 -P macos-latest-xlarge=-self-hosted --secret-file .github/workflows/.env.secret -W .github/workflows/publish.yml
diff --git a/.github/workflows/release_dapp_android.yml b/.github/workflows/release_dapp_android.yml
new file mode 100644
index 00000000..654e57e3
--- /dev/null
+++ b/.github/workflows/release_dapp_android.yml
@@ -0,0 +1,76 @@
+name: Android Web3Dapp deploy
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - closed
+
+jobs:
+ build:
+ if: github.event.pull_request.merged == true
+ runs-on: macos-latest-xlarge
+
+ steps:
+ # Checkout the repo
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ # Create temp firebase key
+ # - name: Create temp firebase key
+ # env:
+ # FIREBASE_KEY_BASE64: ${{ secrets.FIREBASE_KEY_BASE64 }}
+ # run: |
+ # # create variables
+ # FIREBASE_KEY_PATH=$RUNNER_TEMP/flutter-c7c2c-6df892fe6ddb.json
+
+ # # import certificate and provisioning profile from secrets
+ # echo -n "$FIREBASE_KEY_BASE64" | base64 --decode -o $FIREBASE_KEY_PATH
+
+ # Install Java 17
+ - name: Install Java 17
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: '17'
+ architecture: x86_64
+ cache: 'gradle'
+
+ # Cache Gradle
+ - name: Cache Gradle
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+
+ # # Install Fastlane
+ # - name: Install Fastlane
+ # run: gem install fastlane
+
+ # Install Flutter and Dependencies
+ - uses: ./.github/actions/dependencies
+
+ # Fastlane
+ - name: Fastlane
+ working-directory: example/dapp/android
+ env:
+ PROJECT_ID: ${{ secrets.DAPP_PROJECT_ID }}
+ SLACK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
+ FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
+ FIREBASE_DAPP_ID: ${{ secrets.FIREBASE_DAPP_ID }}
+ run: |
+ PUBSPEC_FILE=../../../pubspec.yaml
+ FILE_VALUE=$(echo | grep "^version: " $PUBSPEC_FILE)
+ PARTS=(${FILE_VALUE//:/ })
+ FULL_VERSION=${PARTS[1]}
+ VERSION_NUMBER=(${FULL_VERSION//-/ })
+
+ fastlane add_plugin firebase_app_distribution
+ fastlane release_firebase project_id:$PROJECT_ID app_version:$VERSION_NUMBER
+
+# Launch locally
+# act -j build --container-architecture linux/amd64 -P macos-latest-xlarge=-self-hosted --secret-file .github/workflows/.env.secret -W .github/workflows/release_dapp_android.yml
diff --git a/.github/workflows/release_dapp_ios.yml b/.github/workflows/release_dapp_ios.yml
new file mode 100644
index 00000000..1c563be9
--- /dev/null
+++ b/.github/workflows/release_dapp_ios.yml
@@ -0,0 +1,87 @@
+name: iOS Web3Dapp deploy
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - closed
+
+jobs:
+ build:
+ if: github.event.pull_request.merged == true
+ runs-on: macos-latest-xlarge
+
+ steps:
+ # Checkout the repo
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ # - uses: actions/checkout@v3
+ # - uses: ruby/setup-ruby@v1
+ # with:
+ # bundler-cache: true
+
+ # Cache
+ - name: Cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ .build
+ SourcePackagesCache
+ DerivedDataCache
+ key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
+ restore-keys: |
+ ${{ runner.os }}-spm-
+
+ # # Install Ruby
+ # - name: Install Ruby
+ # uses: ruby/setup-ruby@v1
+ # with:
+ # ruby-version: 3.0.2
+ # bundler-cache: true
+
+ # # Install Fastlane
+ # - name: Install Fastlane
+ # run: gem install fastlane
+
+ # Install Flutter and Dependencies
+ - uses: ./.github/actions/dependencies
+
+ # Build App
+ - name: Build App
+ working-directory: example/dapp
+ env:
+ PROJECT_ID: ${{ secrets.DAPP_PROJECT_ID }}
+ run: |
+ PUBSPEC_FILE=../../pubspec.yaml
+ FILE_VALUE=$(echo | grep "^version: " $PUBSPEC_FILE)
+ PARTS=(${FILE_VALUE//:/ })
+ FULL_VERSION=${PARTS[1]}
+ VERSION_NUMBER=(${FULL_VERSION//-/ })
+
+ flutter build ipa --build-name $VERSION_NUMBER --dart-define="PROJECT_ID=$PROJECT_ID" --release
+
+ # Fastlane
+ - name: Fastlane
+ working-directory: example/dapp/ios
+ env:
+ APPLE_ID: ${{ secrets.APPLE_ID }}
+ APPLE_DAPP_ID: ${{ secrets.APPLE_DAPP_ID }}
+ PROJECT_ID: ${{ secrets.DAPP_PROJECT_ID }}
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
+ APP_STORE_KEY_ID: ${{ secrets.APP_STORE_KEY_ID }}
+ APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
+ GH_BASIC_AUTH: ${{ secrets.GH_BASIC_AUTH }}
+ APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
+ MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}
+ SLACK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
+ run: |
+ PUBSPEC_FILE=../../../pubspec.yaml
+ FILE_VALUE=$(echo | grep "^version: " $PUBSPEC_FILE)
+ PARTS=(${FILE_VALUE//:/ })
+ FULL_VERSION=${PARTS[1]}
+ VERSION_NUMBER=(${FULL_VERSION//-/ })
+
+ fastlane release_testflight username:$APPLE_ID token:$GH_BASIC_AUTH project_id:$PROJECT_ID app_id:$APPLE_DAPP_ID app_store_key_id:$APP_STORE_KEY_ID apple_issuer_id:$APPLE_ISSUER_ID app_store_connect_key:"$APP_STORE_CONNECT_KEY" match_git_url:$MATCH_GIT_URL app_version:$VERSION_NUMBER
+
+# Launch locally
+# act -j build --container-architecture linux/amd64 -P macos-latest-xlarge=-self-hosted --secret-file .github/workflows/.env.secret -W .github/workflows/release_dapp_ios.yml
diff --git a/.github/workflows/release_wallet_android.yml b/.github/workflows/release_wallet_android.yml
new file mode 100644
index 00000000..0490d980
--- /dev/null
+++ b/.github/workflows/release_wallet_android.yml
@@ -0,0 +1,76 @@
+name: Android Web3Wallet deploy
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - closed
+
+jobs:
+ build:
+ if: github.event.pull_request.merged == true
+ runs-on: macos-latest-xlarge
+
+ steps:
+ # Checkout the repo
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ # Create temp firebase key
+ # - name: Create temp firebase key
+ # env:
+ # FIREBASE_KEY_BASE64: ${{ secrets.FIREBASE_KEY_BASE64 }}
+ # run: |
+ # # create variables
+ # FIREBASE_KEY_PATH=$RUNNER_TEMP/flutter-c7c2c-6df892fe6ddb.json
+
+ # # import certificate and provisioning profile from secrets
+ # echo -n "$FIREBASE_KEY_BASE64" | base64 --decode -o $FIREBASE_KEY_PATH
+
+ # Install Java 17
+ - name: Install Java 17
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: '17'
+ architecture: x86_64
+ cache: 'gradle'
+
+ # Cache Gradle
+ - name: Cache Gradle
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+
+ # # Install Fastlane
+ # - name: Install Fastlane
+ # run: gem install fastlane
+
+ # Install Flutter and Dependencies
+ - uses: ./.github/actions/dependencies
+
+ # Fastlane
+ - name: Fastlane
+ working-directory: example/wallet/android
+ env:
+ PROJECT_ID: ${{ secrets.WALLET_PROJECT_ID }}
+ SLACK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
+ FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
+ FIREBASE_WALLET_ID: ${{ secrets.FIREBASE_WALLET_ID }}
+ run: |
+ PUBSPEC_FILE=../../../pubspec.yaml
+ FILE_VALUE=$(echo | grep "^version: " $PUBSPEC_FILE)
+ PARTS=(${FILE_VALUE//:/ })
+ FULL_VERSION=${PARTS[1]}
+ VERSION_NUMBER=(${FULL_VERSION//-/ })
+
+ fastlane add_plugin firebase_app_distribution
+ fastlane release_firebase project_id:$PROJECT_ID app_version:$VERSION_NUMBER
+
+# Launch locally
+# act -j build --container-architecture linux/amd64 -P macos-latest-xlarge=-self-hosted --secret-file .github/workflows/.env.secret -W .github/workflows/release_wallet_android.yml
diff --git a/.github/workflows/release_wallet_ios.yml b/.github/workflows/release_wallet_ios.yml
new file mode 100644
index 00000000..be9b3713
--- /dev/null
+++ b/.github/workflows/release_wallet_ios.yml
@@ -0,0 +1,87 @@
+name: iOS Web3Wallet deploy
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - closed
+
+jobs:
+ build:
+ if: github.event.pull_request.merged == true
+ runs-on: macos-latest-xlarge
+
+ steps:
+ # Checkout the repo
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ # - uses: actions/checkout@v3
+ # - uses: ruby/setup-ruby@v1
+ # with:
+ # bundler-cache: true
+
+ # Cache
+ - name: Cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ .build
+ SourcePackagesCache
+ DerivedDataCache
+ key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
+ restore-keys: |
+ ${{ runner.os }}-spm-
+
+ # # Install Ruby
+ # - name: Install Ruby
+ # uses: ruby/setup-ruby@v1
+ # with:
+ # ruby-version: 3.0.2
+ # bundler-cache: true
+
+ # # Install Fastlane
+ # - name: Install Fastlane
+ # run: gem install fastlane
+
+ # Install Flutter and Dependencies
+ - uses: ./.github/actions/dependencies
+
+ # Build App
+ - name: Build App
+ working-directory: example/wallet
+ env:
+ PROJECT_ID: ${{ secrets.WALLET_PROJECT_ID }}
+ run: |
+ PUBSPEC_FILE=../../pubspec.yaml
+ FILE_VALUE=$(echo | grep "^version: " $PUBSPEC_FILE)
+ PARTS=(${FILE_VALUE//:/ })
+ FULL_VERSION=${PARTS[1]}
+ VERSION_NUMBER=(${FULL_VERSION//-/ })
+
+ flutter build ipa --build-name $VERSION_NUMBER --dart-define="PROJECT_ID=$PROJECT_ID" --release
+
+ # Fastlane
+ - name: Fastlane
+ working-directory: example/wallet/ios
+ env:
+ APPLE_ID: ${{ secrets.APPLE_ID }}
+ APPLE_DAPP_ID: ${{ secrets.APPLE_WALLET_ID }}
+ PROJECT_ID: ${{ secrets.WALLET_PROJECT_ID }}
+ MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
+ APP_STORE_KEY_ID: ${{ secrets.APP_STORE_KEY_ID }}
+ APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
+ GH_BASIC_AUTH: ${{ secrets.GH_BASIC_AUTH }}
+ APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
+ MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}
+ SLACK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
+ run: |
+ PUBSPEC_FILE=../../../pubspec.yaml
+ FILE_VALUE=$(echo | grep "^version: " $PUBSPEC_FILE)
+ PARTS=(${FILE_VALUE//:/ })
+ FULL_VERSION=${PARTS[1]}
+ VERSION_NUMBER=(${FULL_VERSION//-/ })
+
+ fastlane release_testflight username:$APPLE_ID token:$GH_BASIC_AUTH project_id:$PROJECT_ID app_id:$APPLE_DAPP_ID app_store_key_id:$APP_STORE_KEY_ID apple_issuer_id:$APPLE_ISSUER_ID app_store_connect_key:"$APP_STORE_CONNECT_KEY" match_git_url:$MATCH_GIT_URL app_version:$VERSION_NUMBER
+
+# Launch locally
+# act -j build --container-architecture linux/amd64 -P macos-latest-xlarge=-self-hosted --secret-file .github/workflows/.env.secret -W .github/workflows/release_wallet_ios.yml
diff --git a/.gitignore b/.gitignore
index 0c2f6acb..c68c1976 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,4 +53,5 @@ app.*.map.json
.vscode/
# Run scripts
-*.sh
\ No newline at end of file
+*.sh
+*.env.secret
diff --git a/example/dapp/android/Gemfile b/example/dapp/android/Gemfile
new file mode 100644
index 00000000..cdd3a6b3
--- /dev/null
+++ b/example/dapp/android/Gemfile
@@ -0,0 +1,6 @@
+source "https://rubygems.org"
+
+gem "fastlane"
+
+plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
+eval_gemfile(plugins_path) if File.exist?(plugins_path)
diff --git a/example/dapp/android/Gemfile.lock b/example/dapp/android/Gemfile.lock
new file mode 100644
index 00000000..1d021b00
--- /dev/null
+++ b/example/dapp/android/Gemfile.lock
@@ -0,0 +1,228 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.7)
+ base64
+ nkf
+ rexml
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ artifactory (3.0.17)
+ atomos (0.1.3)
+ aws-eventstream (1.3.0)
+ aws-partitions (1.956.0)
+ aws-sdk-core (3.201.1)
+ aws-eventstream (~> 1, >= 1.3.0)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.8)
+ jmespath (~> 1, >= 1.6.1)
+ aws-sdk-kms (1.88.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sigv4 (~> 1.5)
+ aws-sdk-s3 (1.156.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.5)
+ aws-sigv4 (1.8.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ base64 (0.2.0)
+ claide (1.1.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ declarative (0.0.20)
+ digest-crc (0.6.5)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.6.20240107)
+ dotenv (2.8.1)
+ emoji_regex (3.2.3)
+ excon (0.111.0)
+ faraday (1.10.3)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.4)
+ multipart-post (~> 2)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ faraday_middleware (1.2.0)
+ faraday (~> 1.0)
+ fastimage (2.3.1)
+ fastlane (2.221.1)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.8, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored (~> 1.2)
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.3)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-env (>= 1.6.0, < 2.0.0)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ http-cookie (~> 1.0.5)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (>= 2.0.0, < 3.0.0)
+ naturally (~> 2.2)
+ optparse (>= 0.1.1, < 1.0.0)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.5)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (~> 3)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
+ fastlane-plugin-firebase_app_distribution (0.9.1)
+ google-apis-firebaseappdistribution_v1 (~> 0.3.0)
+ google-apis-firebaseappdistribution_v1alpha (~> 0.2.0)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.54.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-core (0.11.3)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (>= 0.16.2, < 2.a)
+ httpclient (>= 2.8.1, < 3.a)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.a)
+ rexml
+ google-apis-firebaseappdistribution_v1 (0.3.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-firebaseappdistribution_v1alpha (0.2.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-iamcredentials_v1 (0.17.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-playcustomapp_v1 (0.13.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-storage_v1 (0.31.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-cloud-core (1.7.0)
+ google-cloud-env (>= 1.0, < 3.a)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.6.0)
+ faraday (>= 0.17.3, < 3.0)
+ google-cloud-errors (1.4.0)
+ google-cloud-storage (1.47.0)
+ addressable (~> 2.8)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.31.0)
+ google-cloud-core (~> 1.6)
+ googleauth (>= 0.16.2, < 2.a)
+ mini_mime (~> 1.0)
+ googleauth (1.8.1)
+ faraday (>= 0.17.3, < 3.a)
+ jwt (>= 1.4, < 3.0)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (>= 0.16, < 2.a)
+ highline (2.0.3)
+ http-cookie (1.0.6)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ jmespath (1.6.2)
+ json (2.7.2)
+ jwt (2.8.2)
+ base64
+ mini_magick (4.13.2)
+ mini_mime (1.1.5)
+ multi_json (1.15.0)
+ multipart-post (2.4.1)
+ nanaimo (0.3.0)
+ naturally (2.2.1)
+ nkf (0.2.0)
+ optparse (0.5.0)
+ os (1.1.4)
+ plist (3.7.1)
+ public_suffix (6.0.0)
+ rake (13.2.1)
+ representable (3.2.0)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.9)
+ strscan
+ rouge (2.0.7)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ security (0.1.5)
+ signet (0.19.0)
+ addressable (~> 2.8)
+ faraday (>= 0.17.5, < 3.a)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.10)
+ CFPropertyList
+ naturally
+ strscan (3.1.0)
+ terminal-notifier (2.0.0)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ trailblazer-option (0.1.2)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.2)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ uber (0.1.0)
+ unicode-display_width (2.5.0)
+ word_wrap (1.0.0)
+ xcodeproj (1.24.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ rexml (~> 3.2.4)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ arm64-darwin-23
+ ruby
+
+DEPENDENCIES
+ fastlane
+ fastlane-plugin-firebase_app_distribution
+
+BUNDLED WITH
+ 2.5.14
diff --git a/example/dapp/android/fastlane/Appfile b/example/dapp/android/fastlane/Appfile
new file mode 100644
index 00000000..09bd2c5c
--- /dev/null
+++ b/example/dapp/android/fastlane/Appfile
@@ -0,0 +1,2 @@
+json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
+package_name("com.walletconnect.flutterdapp") # e.g. com.krausefx.app
diff --git a/example/dapp/android/fastlane/Fastfile b/example/dapp/android/fastlane/Fastfile
new file mode 100644
index 00000000..538496c2
--- /dev/null
+++ b/example/dapp/android/fastlane/Fastfile
@@ -0,0 +1,93 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+default_platform(:android)
+
+platform :android do
+
+ # Helper method to read the changelog
+ def read_changelog
+ changelog_file = '../../../../CHANGELOG.md'
+ changelog = ""
+
+ if File.exist?(changelog_file)
+ File.open(changelog_file, 'r') do |file|
+ changelog = file.read
+ end
+
+ # Split the changelog into entries based on the version header pattern
+ entries = changelog.split(/^##\s/)
+
+ # Get the latest entry, which is the first one after splitting
+ latest_entry = entries[1]
+
+ # Re-add the '##' header to the latest entry and remove empty lines
+ changelog = latest_entry.strip if latest_entry
+ changelog = changelog.gsub /^$\n/, ''
+ else
+ UI.user_error!("CHANGELOG.md file not found")
+ end
+
+ changelog
+ end
+
+
+ lane :release_firebase do |options|
+
+ slack_url = ENV['SLACK_URL']
+ firebase_token = ENV['FIREBASE_TOKEN']
+ firebase_dapp_id = ENV['FIREBASE_DAPP_ID']
+
+ _latest_release = firebase_app_distribution_get_latest_release(
+ app: "#{firebase_dapp_id}",
+ )
+ _new_build_number = _latest_release[:buildVersion].to_i + 1
+ _app_version = "#{options[:app_version]}"
+ _project_id = "#{options[:project_id]}"
+
+ # gradle(task: 'assemble', build_type: 'Release')
+ sh "flutter build apk --build-name #{_app_version} --build-number #{_new_build_number} --dart-define='PROJECT_ID=#{_project_id}' --release"
+
+ changelog = read_changelog
+
+ firebase_app_distribution(
+ app: "#{firebase_dapp_id}",
+ groups: "flutter-team, javascript-team, kotlin-team, rust-team, unity, wc-testers",
+ android_artifact_path: '../build/app/outputs/flutter-apk/app-release.apk',
+ release_notes: changelog,
+ android_artifact_type: "APK",
+ )
+
+ slack(
+ message: "📱 Web3Dapp Flutter #{_app_version} (#{_new_build_number}) for 🤖 Android successfully released!\n\n",
+ default_payloads: [],
+ attachment_properties: {
+ fields: [
+ {
+ title: "CHANGELOG",
+ value: changelog,
+ # short: true
+ },
+ {
+ title: "LINK",
+ value: "https://appdistribution.firebase.dev/i/2c6573f6956fa7b5",
+ # short: true
+ },
+ ]
+ }
+ )
+
+ end
+end
diff --git a/example/dapp/android/fastlane/Pluginfile b/example/dapp/android/fastlane/Pluginfile
new file mode 100644
index 00000000..b18539bc
--- /dev/null
+++ b/example/dapp/android/fastlane/Pluginfile
@@ -0,0 +1,5 @@
+# Autogenerated by fastlane
+#
+# Ensure this file is checked in to source control!
+
+gem 'fastlane-plugin-firebase_app_distribution'
diff --git a/example/dapp/ios/Gemfile b/example/dapp/ios/Gemfile
new file mode 100644
index 00000000..7a118b49
--- /dev/null
+++ b/example/dapp/ios/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem "fastlane"
diff --git a/example/dapp/ios/Gemfile.lock b/example/dapp/ios/Gemfile.lock
new file mode 100644
index 00000000..550231d9
--- /dev/null
+++ b/example/dapp/ios/Gemfile.lock
@@ -0,0 +1,220 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.7)
+ base64
+ nkf
+ rexml
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ artifactory (3.0.17)
+ atomos (0.1.3)
+ aws-eventstream (1.3.0)
+ aws-partitions (1.956.0)
+ aws-sdk-core (3.201.1)
+ aws-eventstream (~> 1, >= 1.3.0)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.8)
+ jmespath (~> 1, >= 1.6.1)
+ aws-sdk-kms (1.88.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sigv4 (~> 1.5)
+ aws-sdk-s3 (1.156.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.5)
+ aws-sigv4 (1.8.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ base64 (0.2.0)
+ claide (1.1.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ declarative (0.0.20)
+ digest-crc (0.6.5)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.6.20240107)
+ dotenv (2.8.1)
+ emoji_regex (3.2.3)
+ excon (0.111.0)
+ faraday (1.10.3)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.4)
+ multipart-post (~> 2)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ faraday_middleware (1.2.0)
+ faraday (~> 1.0)
+ fastimage (2.3.1)
+ fastlane (2.221.1)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.8, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored (~> 1.2)
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.3)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-env (>= 1.6.0, < 2.0.0)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ http-cookie (~> 1.0.5)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (>= 2.0.0, < 3.0.0)
+ naturally (~> 2.2)
+ optparse (>= 0.1.1, < 1.0.0)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.5)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (~> 3)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.54.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-core (0.11.3)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (>= 0.16.2, < 2.a)
+ httpclient (>= 2.8.1, < 3.a)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.a)
+ rexml
+ google-apis-iamcredentials_v1 (0.17.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-playcustomapp_v1 (0.13.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-storage_v1 (0.31.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-cloud-core (1.7.0)
+ google-cloud-env (>= 1.0, < 3.a)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.6.0)
+ faraday (>= 0.17.3, < 3.0)
+ google-cloud-errors (1.4.0)
+ google-cloud-storage (1.47.0)
+ addressable (~> 2.8)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.31.0)
+ google-cloud-core (~> 1.6)
+ googleauth (>= 0.16.2, < 2.a)
+ mini_mime (~> 1.0)
+ googleauth (1.8.1)
+ faraday (>= 0.17.3, < 3.a)
+ jwt (>= 1.4, < 3.0)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (>= 0.16, < 2.a)
+ highline (2.0.3)
+ http-cookie (1.0.6)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ jmespath (1.6.2)
+ json (2.7.2)
+ jwt (2.8.2)
+ base64
+ mini_magick (4.13.2)
+ mini_mime (1.1.5)
+ multi_json (1.15.0)
+ multipart-post (2.4.1)
+ nanaimo (0.3.0)
+ naturally (2.2.1)
+ nkf (0.2.0)
+ optparse (0.5.0)
+ os (1.1.4)
+ plist (3.7.1)
+ public_suffix (6.0.0)
+ rake (13.2.1)
+ representable (3.2.0)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.9)
+ strscan
+ rouge (2.0.7)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ security (0.1.5)
+ signet (0.19.0)
+ addressable (~> 2.8)
+ faraday (>= 0.17.5, < 3.a)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.10)
+ CFPropertyList
+ naturally
+ strscan (3.1.0)
+ terminal-notifier (2.0.0)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ trailblazer-option (0.1.2)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.2)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ uber (0.1.0)
+ unicode-display_width (2.5.0)
+ word_wrap (1.0.0)
+ xcodeproj (1.24.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ rexml (~> 3.2.4)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ arm64-darwin-23
+ ruby
+
+DEPENDENCIES
+ fastlane
+
+BUNDLED WITH
+ 2.5.14
diff --git a/example/dapp/ios/Runner.xcodeproj/project.pbxproj b/example/dapp/ios/Runner.xcodeproj/project.pbxproj
index 567e4af4..06f5d8f4 100644
--- a/example/dapp/ios/Runner.xcodeproj/project.pbxproj
+++ b/example/dapp/ios/Runner.xcodeproj/project.pbxproj
@@ -357,6 +357,8 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = W5R8AG9K22;
ENABLE_BITCODE = NO;
@@ -368,6 +370,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.flutterdapp;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -487,8 +490,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = W5R8AG9K22;
+ DEVELOPMENT_TEAM = "";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5R8AG9K22;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Web3Dapp Flutter";
@@ -498,6 +503,8 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.flutterdapp;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.walletconnect.flutterdapp";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@@ -511,8 +518,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = W5R8AG9K22;
+ DEVELOPMENT_TEAM = "";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5R8AG9K22;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Web3Dapp Flutter";
@@ -522,6 +532,8 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.flutterdapp;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.walletconnect.flutterdapp";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
diff --git a/example/dapp/ios/Runner/Info.plist b/example/dapp/ios/Runner/Info.plist
index cf0ed9ea..feb1b212 100644
--- a/example/dapp/ios/Runner/Info.plist
+++ b/example/dapp/ios/Runner/Info.plist
@@ -44,6 +44,8 @@
wcflutterwallet
walletapp
+ ITSAppUsesNonExemptEncryption
+
LSRequiresIPhoneOS
UIApplicationSupportsIndirectInputEvents
diff --git a/example/dapp/ios/fastlane/Appfile b/example/dapp/ios/fastlane/Appfile
new file mode 100644
index 00000000..e74f3a9b
--- /dev/null
+++ b/example/dapp/ios/fastlane/Appfile
@@ -0,0 +1,7 @@
+app_identifier("com.walletconnect.flutterdapp") # The bundle identifier of your app
+
+itc_team_id("123564616") # App Store Connect Team ID
+team_id("W5R8AG9K22") # Developer Portal Team ID
+
+# For more information about the Appfile, see:
+# https://docs.fastlane.tools/advanced/#appfile
diff --git a/example/dapp/ios/fastlane/Fastfile b/example/dapp/ios/fastlane/Fastfile
new file mode 100644
index 00000000..dfaf1985
--- /dev/null
+++ b/example/dapp/ios/fastlane/Fastfile
@@ -0,0 +1,137 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "120"
+
+default_platform(:ios)
+
+platform :ios do
+
+ # Helper method to read the changelog
+ def read_changelog
+ changelog_file = '../../../../CHANGELOG.md'
+ changelog = ""
+
+ if File.exist?(changelog_file)
+ File.open(changelog_file, 'r') do |file|
+ changelog = file.read
+ end
+
+ # Split the changelog into entries based on the version header pattern
+ entries = changelog.split(/^##\s/)
+
+ # Get the latest entry, which is the first one after splitting
+ latest_entry = entries[1]
+
+ # Re-add the '##' header to the latest entry and remove empty lines
+ changelog = latest_entry.strip if latest_entry
+ changelog = changelog.gsub /^$\n/, ''
+ else
+ UI.user_error!("CHANGELOG.md file not found")
+ end
+
+ changelog
+ end
+
+ lane :release_testflight do |options|
+
+ # Setup the keychain and match to work with CI
+ setup_ci
+
+ match_password = ENV['MATCH_PASSWORD']
+ slack_url = ENV['SLACK_URL']
+ app_identifier = CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)
+
+ api_key = app_store_connect_api_key(
+ key_id: options[:app_store_key_id],
+ issuer_id: options[:apple_issuer_id],
+ key_content: options[:app_store_connect_key],
+ duration: 1200,
+ in_house: false,
+ )
+
+ match(
+ readonly: false,
+ type: "appstore",
+ app_identifier: "#{app_identifier}",
+ git_url: options[:match_git_url],
+ git_basic_authorization: options[:token],
+ api_key: api_key,
+ include_all_certificates: true,
+ force_for_new_devices: true,
+ force_for_new_certificates: true,
+ )
+
+ number = latest_testflight_build_number(
+ app_identifier: "#{app_identifier}",
+ username: options[:username],
+ )
+ new_build_number = number + 1
+
+ increment_build_number(
+ build_number: new_build_number,
+ xcodeproj: "Runner.xcodeproj"
+ )
+
+ gym(
+ configuration: "Release",
+ # project: "Runner.xcodeproj",
+ workspace: "Runner.xcworkspace",
+ scheme: "Runner",
+ export_method: "app-store",
+ clean: true,
+ xcargs: "PROJECT_ID='#{options[:project_id]}'"
+ )
+
+ changelog = read_changelog
+
+ upload_to_testflight(
+ apple_id: options[:app_id],
+ app_version: options[:app_version],
+ build_number: "#{new_build_number}",
+ app_identifier: "#{app_identifier}",
+ changelog: changelog,
+ distribute_external: true,
+ notify_external_testers: true,
+ distribute_external: true,
+ notify_external_testers: true,
+ skip_waiting_for_build_processing: false,
+ groups: ["External Testers"]
+ )
+
+ slack(
+ message: "📱 Web3Dapp Flutter #{options[:app_version]} (#{new_build_number}) for 🍎 iOS successfully released!\n\n",
+ default_payloads: [],
+ attachment_properties: {
+ fields: [
+ {
+ title: "CHANGELOG",
+ value: changelog,
+ # short: true
+ },
+ {
+ title: "LINK",
+ value: "https://testflight.apple.com/join/6aRJSllc",
+ # short: true
+ },
+ ]
+ }
+ )
+
+ clean_build_artifacts()
+
+ end
+
+end
diff --git a/example/wallet/android/Gemfile b/example/wallet/android/Gemfile
new file mode 100644
index 00000000..cdd3a6b3
--- /dev/null
+++ b/example/wallet/android/Gemfile
@@ -0,0 +1,6 @@
+source "https://rubygems.org"
+
+gem "fastlane"
+
+plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
+eval_gemfile(plugins_path) if File.exist?(plugins_path)
diff --git a/example/wallet/android/Gemfile.lock b/example/wallet/android/Gemfile.lock
new file mode 100644
index 00000000..1d021b00
--- /dev/null
+++ b/example/wallet/android/Gemfile.lock
@@ -0,0 +1,228 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.7)
+ base64
+ nkf
+ rexml
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ artifactory (3.0.17)
+ atomos (0.1.3)
+ aws-eventstream (1.3.0)
+ aws-partitions (1.956.0)
+ aws-sdk-core (3.201.1)
+ aws-eventstream (~> 1, >= 1.3.0)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.8)
+ jmespath (~> 1, >= 1.6.1)
+ aws-sdk-kms (1.88.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sigv4 (~> 1.5)
+ aws-sdk-s3 (1.156.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.5)
+ aws-sigv4 (1.8.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ base64 (0.2.0)
+ claide (1.1.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ declarative (0.0.20)
+ digest-crc (0.6.5)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.6.20240107)
+ dotenv (2.8.1)
+ emoji_regex (3.2.3)
+ excon (0.111.0)
+ faraday (1.10.3)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.4)
+ multipart-post (~> 2)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ faraday_middleware (1.2.0)
+ faraday (~> 1.0)
+ fastimage (2.3.1)
+ fastlane (2.221.1)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.8, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored (~> 1.2)
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.3)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-env (>= 1.6.0, < 2.0.0)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ http-cookie (~> 1.0.5)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (>= 2.0.0, < 3.0.0)
+ naturally (~> 2.2)
+ optparse (>= 0.1.1, < 1.0.0)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.5)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (~> 3)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
+ fastlane-plugin-firebase_app_distribution (0.9.1)
+ google-apis-firebaseappdistribution_v1 (~> 0.3.0)
+ google-apis-firebaseappdistribution_v1alpha (~> 0.2.0)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.54.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-core (0.11.3)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (>= 0.16.2, < 2.a)
+ httpclient (>= 2.8.1, < 3.a)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.a)
+ rexml
+ google-apis-firebaseappdistribution_v1 (0.3.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-firebaseappdistribution_v1alpha (0.2.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-iamcredentials_v1 (0.17.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-playcustomapp_v1 (0.13.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-storage_v1 (0.31.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-cloud-core (1.7.0)
+ google-cloud-env (>= 1.0, < 3.a)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.6.0)
+ faraday (>= 0.17.3, < 3.0)
+ google-cloud-errors (1.4.0)
+ google-cloud-storage (1.47.0)
+ addressable (~> 2.8)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.31.0)
+ google-cloud-core (~> 1.6)
+ googleauth (>= 0.16.2, < 2.a)
+ mini_mime (~> 1.0)
+ googleauth (1.8.1)
+ faraday (>= 0.17.3, < 3.a)
+ jwt (>= 1.4, < 3.0)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (>= 0.16, < 2.a)
+ highline (2.0.3)
+ http-cookie (1.0.6)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ jmespath (1.6.2)
+ json (2.7.2)
+ jwt (2.8.2)
+ base64
+ mini_magick (4.13.2)
+ mini_mime (1.1.5)
+ multi_json (1.15.0)
+ multipart-post (2.4.1)
+ nanaimo (0.3.0)
+ naturally (2.2.1)
+ nkf (0.2.0)
+ optparse (0.5.0)
+ os (1.1.4)
+ plist (3.7.1)
+ public_suffix (6.0.0)
+ rake (13.2.1)
+ representable (3.2.0)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.9)
+ strscan
+ rouge (2.0.7)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ security (0.1.5)
+ signet (0.19.0)
+ addressable (~> 2.8)
+ faraday (>= 0.17.5, < 3.a)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.10)
+ CFPropertyList
+ naturally
+ strscan (3.1.0)
+ terminal-notifier (2.0.0)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ trailblazer-option (0.1.2)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.2)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ uber (0.1.0)
+ unicode-display_width (2.5.0)
+ word_wrap (1.0.0)
+ xcodeproj (1.24.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ rexml (~> 3.2.4)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ arm64-darwin-23
+ ruby
+
+DEPENDENCIES
+ fastlane
+ fastlane-plugin-firebase_app_distribution
+
+BUNDLED WITH
+ 2.5.14
diff --git a/example/wallet/android/app/build.gradle b/example/wallet/android/app/build.gradle
index 0e171649..185b5606 100644
--- a/example/wallet/android/app/build.gradle
+++ b/example/wallet/android/app/build.gradle
@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
- compileSdkVersion 33
+ compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion
compileOptions {
diff --git a/example/wallet/android/fastlane/Appfile b/example/wallet/android/fastlane/Appfile
new file mode 100644
index 00000000..0270cf93
--- /dev/null
+++ b/example/wallet/android/fastlane/Appfile
@@ -0,0 +1,2 @@
+json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
+package_name("com.walletconnect.flutterwallet") # e.g. com.krausefx.app
diff --git a/example/wallet/android/fastlane/Fastfile b/example/wallet/android/fastlane/Fastfile
new file mode 100644
index 00000000..8cd0f9a2
--- /dev/null
+++ b/example/wallet/android/fastlane/Fastfile
@@ -0,0 +1,93 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+default_platform(:android)
+
+platform :android do
+
+ # Helper method to read the changelog
+ def read_changelog
+ changelog_file = '../../../../CHANGELOG.md'
+ changelog = ""
+
+ if File.exist?(changelog_file)
+ File.open(changelog_file, 'r') do |file|
+ changelog = file.read
+ end
+
+ # Split the changelog into entries based on the version header pattern
+ entries = changelog.split(/^##\s/)
+
+ # Get the latest entry, which is the first one after splitting
+ latest_entry = entries[1]
+
+ # Re-add the '##' header to the latest entry and remove empty lines
+ changelog = latest_entry.strip if latest_entry
+ changelog = changelog.gsub /^$\n/, ''
+ else
+ UI.user_error!("CHANGELOG.md file not found")
+ end
+
+ changelog
+ end
+
+
+ lane :release_firebase do |options|
+
+ slack_url = ENV['SLACK_URL']
+ firebase_token = ENV['FIREBASE_TOKEN']
+ firebase_wallet_id = ENV['FIREBASE_WALLET_ID']
+
+ _latest_release = firebase_app_distribution_get_latest_release(
+ app: "#{firebase_wallet_id}",
+ )
+ _new_build_number = _latest_release[:buildVersion].to_i + 1
+ _app_version = "#{options[:app_version]}"
+ _project_id = "#{options[:project_id]}"
+
+ # gradle(task: 'assemble', build_type: 'Release')
+ sh "flutter build apk --build-name #{_app_version} --build-number #{_new_build_number} --dart-define='PROJECT_ID=#{_project_id}' --release"
+
+ changelog = read_changelog
+
+ firebase_app_distribution(
+ app: "#{firebase_wallet_id}",
+ groups: "flutter-team, javascript-team, kotlin-team, rust-team, unity, wc-testers",
+ android_artifact_path: '../build/app/outputs/flutter-apk/app-release.apk',
+ release_notes: changelog,
+ android_artifact_type: "APK",
+ )
+
+ slack(
+ message: "🔐 Web3Wallet Flutter #{_app_version} (#{_new_build_number}) for 🤖 Android successfully released!\n\n",
+ default_payloads: [],
+ attachment_properties: {
+ fields: [
+ {
+ title: "CHANGELOG",
+ value: changelog,
+ # short: true
+ },
+ {
+ title: "LINK",
+ value: "https://appdistribution.firebase.dev/i/2b8b3dce9e2831cd",
+ # short: true
+ },
+ ]
+ }
+ )
+
+ end
+end
diff --git a/example/wallet/android/fastlane/Pluginfile b/example/wallet/android/fastlane/Pluginfile
new file mode 100644
index 00000000..b18539bc
--- /dev/null
+++ b/example/wallet/android/fastlane/Pluginfile
@@ -0,0 +1,5 @@
+# Autogenerated by fastlane
+#
+# Ensure this file is checked in to source control!
+
+gem 'fastlane-plugin-firebase_app_distribution'
diff --git a/example/wallet/ios/Gemfile b/example/wallet/ios/Gemfile
new file mode 100644
index 00000000..7a118b49
--- /dev/null
+++ b/example/wallet/ios/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem "fastlane"
diff --git a/example/wallet/ios/Gemfile.lock b/example/wallet/ios/Gemfile.lock
new file mode 100644
index 00000000..550231d9
--- /dev/null
+++ b/example/wallet/ios/Gemfile.lock
@@ -0,0 +1,220 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.7)
+ base64
+ nkf
+ rexml
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ artifactory (3.0.17)
+ atomos (0.1.3)
+ aws-eventstream (1.3.0)
+ aws-partitions (1.956.0)
+ aws-sdk-core (3.201.1)
+ aws-eventstream (~> 1, >= 1.3.0)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.8)
+ jmespath (~> 1, >= 1.6.1)
+ aws-sdk-kms (1.88.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sigv4 (~> 1.5)
+ aws-sdk-s3 (1.156.0)
+ aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.5)
+ aws-sigv4 (1.8.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ base64 (0.2.0)
+ claide (1.1.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ declarative (0.0.20)
+ digest-crc (0.6.5)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.6.20240107)
+ dotenv (2.8.1)
+ emoji_regex (3.2.3)
+ excon (0.111.0)
+ faraday (1.10.3)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.4)
+ multipart-post (~> 2)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ faraday_middleware (1.2.0)
+ faraday (~> 1.0)
+ fastimage (2.3.1)
+ fastlane (2.221.1)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.8, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored (~> 1.2)
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.3)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-env (>= 1.6.0, < 2.0.0)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ http-cookie (~> 1.0.5)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (>= 2.0.0, < 3.0.0)
+ naturally (~> 2.2)
+ optparse (>= 0.1.1, < 1.0.0)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.5)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (~> 3)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.54.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-core (0.11.3)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (>= 0.16.2, < 2.a)
+ httpclient (>= 2.8.1, < 3.a)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.a)
+ rexml
+ google-apis-iamcredentials_v1 (0.17.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-playcustomapp_v1 (0.13.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-storage_v1 (0.31.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-cloud-core (1.7.0)
+ google-cloud-env (>= 1.0, < 3.a)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.6.0)
+ faraday (>= 0.17.3, < 3.0)
+ google-cloud-errors (1.4.0)
+ google-cloud-storage (1.47.0)
+ addressable (~> 2.8)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.31.0)
+ google-cloud-core (~> 1.6)
+ googleauth (>= 0.16.2, < 2.a)
+ mini_mime (~> 1.0)
+ googleauth (1.8.1)
+ faraday (>= 0.17.3, < 3.a)
+ jwt (>= 1.4, < 3.0)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (>= 0.16, < 2.a)
+ highline (2.0.3)
+ http-cookie (1.0.6)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ jmespath (1.6.2)
+ json (2.7.2)
+ jwt (2.8.2)
+ base64
+ mini_magick (4.13.2)
+ mini_mime (1.1.5)
+ multi_json (1.15.0)
+ multipart-post (2.4.1)
+ nanaimo (0.3.0)
+ naturally (2.2.1)
+ nkf (0.2.0)
+ optparse (0.5.0)
+ os (1.1.4)
+ plist (3.7.1)
+ public_suffix (6.0.0)
+ rake (13.2.1)
+ representable (3.2.0)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.9)
+ strscan
+ rouge (2.0.7)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ security (0.1.5)
+ signet (0.19.0)
+ addressable (~> 2.8)
+ faraday (>= 0.17.5, < 3.a)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.10)
+ CFPropertyList
+ naturally
+ strscan (3.1.0)
+ terminal-notifier (2.0.0)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ trailblazer-option (0.1.2)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.2)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ uber (0.1.0)
+ unicode-display_width (2.5.0)
+ word_wrap (1.0.0)
+ xcodeproj (1.24.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ rexml (~> 3.2.4)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ arm64-darwin-23
+ ruby
+
+DEPENDENCIES
+ fastlane
+
+BUNDLED WITH
+ 2.5.14
diff --git a/example/wallet/ios/Runner.xcodeproj/project.pbxproj b/example/wallet/ios/Runner.xcodeproj/project.pbxproj
index 5a386a7a..d849cf7e 100644
--- a/example/wallet/ios/Runner.xcodeproj/project.pbxproj
+++ b/example/wallet/ios/Runner.xcodeproj/project.pbxproj
@@ -357,6 +357,8 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = W5R8AG9K22;
ENABLE_BITCODE = NO;
@@ -367,6 +369,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.flutterwallet;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -486,8 +489,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = W5R8AG9K22;
+ DEVELOPMENT_TEAM = "";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5R8AG9K22;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -496,6 +501,8 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.flutterwallet;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.walletconnect.flutterwallet";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@@ -509,8 +516,11 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = W5R8AG9K22;
+ DEVELOPMENT_TEAM = "";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5R8AG9K22;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -519,6 +529,8 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.flutterwallet;
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.walletconnect.flutterwallet";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
diff --git a/example/wallet/ios/Runner/Info.plist b/example/wallet/ios/Runner/Info.plist
index ed04ff0f..15c9facd 100644
--- a/example/wallet/ios/Runner/Info.plist
+++ b/example/wallet/ios/Runner/Info.plist
@@ -24,6 +24,8 @@
????
CFBundleVersion
$(FLUTTER_BUILD_NUMBER)
+ ITSAppUsesNonExemptEncryption
+
LSRequiresIPhoneOS
NSCameraUsageDescription
diff --git a/example/wallet/ios/fastlane/Appfile b/example/wallet/ios/fastlane/Appfile
new file mode 100644
index 00000000..8c2bde20
--- /dev/null
+++ b/example/wallet/ios/fastlane/Appfile
@@ -0,0 +1,7 @@
+app_identifier("com.walletconnect.flutterwallet") # The bundle identifier of your app
+
+itc_team_id("123564616") # App Store Connect Team ID
+team_id("W5R8AG9K22") # Developer Portal Team ID
+
+# For more information about the Appfile, see:
+# https://docs.fastlane.tools/advanced/#appfile
diff --git a/example/wallet/ios/fastlane/Fastfile b/example/wallet/ios/fastlane/Fastfile
new file mode 100644
index 00000000..d1506775
--- /dev/null
+++ b/example/wallet/ios/fastlane/Fastfile
@@ -0,0 +1,137 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "120"
+
+default_platform(:ios)
+
+platform :ios do
+
+ # Helper method to read the changelog
+ def read_changelog
+ changelog_file = '../../../../CHANGELOG.md'
+ changelog = ""
+
+ if File.exist?(changelog_file)
+ File.open(changelog_file, 'r') do |file|
+ changelog = file.read
+ end
+
+ # Split the changelog into entries based on the version header pattern
+ entries = changelog.split(/^##\s/)
+
+ # Get the latest entry, which is the first one after splitting
+ latest_entry = entries[1]
+
+ # Re-add the '##' header to the latest entry and remove empty lines
+ changelog = latest_entry.strip if latest_entry
+ changelog = changelog.gsub /^$\n/, ''
+ else
+ UI.user_error!("CHANGELOG.md file not found")
+ end
+
+ changelog
+ end
+
+ lane :release_testflight do |options|
+
+ # Setup the keychain and match to work with CI
+ setup_ci
+
+ match_password = ENV['MATCH_PASSWORD']
+ slack_url = ENV['SLACK_URL']
+ app_identifier = CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)
+
+ api_key = app_store_connect_api_key(
+ key_id: options[:app_store_key_id],
+ issuer_id: options[:apple_issuer_id],
+ key_content: options[:app_store_connect_key],
+ duration: 1200,
+ in_house: false,
+ )
+
+ match(
+ readonly: false,
+ type: "appstore",
+ app_identifier: "#{app_identifier}",
+ git_url: options[:match_git_url],
+ git_basic_authorization: options[:token],
+ api_key: api_key,
+ include_all_certificates: true,
+ force_for_new_devices: true,
+ force_for_new_certificates: true,
+ )
+
+ number = latest_testflight_build_number(
+ app_identifier: "#{app_identifier}",
+ username: options[:username],
+ )
+ new_build_number = number + 1
+
+ increment_build_number(
+ build_number: new_build_number,
+ xcodeproj: "Runner.xcodeproj"
+ )
+
+ gym(
+ configuration: "Release",
+ # project: "Runner.xcodeproj",
+ workspace: "Runner.xcworkspace",
+ scheme: "Runner",
+ export_method: "app-store",
+ clean: true,
+ xcargs: "PROJECT_ID='#{options[:project_id]}'"
+ )
+
+ changelog = read_changelog
+
+ upload_to_testflight(
+ apple_id: options[:app_id],
+ app_version: options[:app_version],
+ build_number: "#{new_build_number}",
+ app_identifier: "#{app_identifier}",
+ changelog: changelog,
+ distribute_external: true,
+ notify_external_testers: true,
+ distribute_external: true,
+ notify_external_testers: true,
+ skip_waiting_for_build_processing: false,
+ groups: ["External Testers"]
+ )
+
+ slack(
+ message: "🔐 Web3Wallet Flutter #{options[:app_version]} (#{new_build_number}) for 🍎 iOS successfully released!\n\n",
+ default_payloads: [],
+ attachment_properties: {
+ fields: [
+ {
+ title: "CHANGELOG",
+ value: changelog,
+ # short: true
+ },
+ {
+ title: "LINK",
+ value: "https://testflight.apple.com/join/Uv0XoBuD",
+ # short: true
+ },
+ ]
+ }
+ )
+
+ clean_build_artifacts()
+
+ end
+
+end