diff --git a/.env.sample b/.env.sample index 5f29d5064..82a545df1 100644 --- a/.env.sample +++ b/.env.sample @@ -7,7 +7,10 @@ COORDINATOR_P2P_ENDPOINT=03507b924dae6595cfb78492489978127c5f1e3877848564de2015c COORDINATOR_PORT_HTTP=80 NETWORK=regtest -# Fastlane variables +# Fastlane android variables +ANDROID_SERVICE_ACCOUNT_KEY=/path/to/android-service-key.json + +# Fastlane ios variables FASTLANE_DEVELOPER_APP_ID="1234567890" FASTLANE_DEVELOPER_APP_IDENTIFIER="finance.get10101.app" FASTLANE_PROVISIONING_PROFILE_SPECIFIER="sample" diff --git a/.github/workflows/android-fastlane.yml b/.github/workflows/android-fastlane.yml new file mode 100644 index 000000000..1641dd249 --- /dev/null +++ b/.github/workflows/android-fastlane.yml @@ -0,0 +1,187 @@ +name: "Fastlane: Build and release Android App to Google Play" + +on: + workflow_call: + inputs: + coordinator_port_http: + required: true + type: string + esplora_endpoint: + required: true + type: string + coordinator_p2p_endpoint: + required: true + type: string + network: + required: true + type: string + description: "The target network for the release, e.g. mainnet/regtest" + tag: + required: true + description: "The branch, tag or SHA to checkout." + type: string + oracle_endpoint: + required: true + type: string + oracle_pubkey: + required: true + description: "The public key of the oracle. Must match with the public key returned at http://${oracle_endpoint}/oracle/publickey" + type: string + workflow_dispatch: + inputs: + coordinator_port_http: + required: true + description: "The coordinator's http port" + type: string + esplora_endpoint: + required: true + description: "Esplora http url" + type: string + coordinator_p2p_endpoint: + required: true + description: "The coordinator's p2p endpoint" + type: string + network: + required: true + type: string + description: "The target network for the release, e.g. mainnet/regtest" + tag: + required: true + description: "The branch, tag or SHA to checkout." + type: string + oracle_endpoint: + required: true + description: 'The oracles http url' + type: string + oracle_pubkey: + required: true + description: "The public key of the oracle. Must match with the public key returned at http://${oracle_endpoint}/oracle/publickey" + type: string + +env: + FLUTTER_VERSION: "3.10.5" + +jobs: + build: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + with: + # fetch the complete history to correctly calculate build_number + fetch-depth: 0 + ref: ${{ inputs.tag }} + + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: "14.2" + + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + channel: "stable" + cache: true + cache-key: flutter-${{ env.FLUTTER_VERSION }} + cache-path: ${{ runner.tool_cache }}/flutter + + - uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + ./rust/target + key: ${{ runner.os }}-cargo-build-release-android-${{ hashFiles('**/Cargo.lock') }} + + - name: Install just + if: steps.cache-deps.outputs.cache-hit != 'true' + run: cargo install just + + - uses: actions/setup-java@v3 + with: + distribution: "temurin" + java-version: "11.x" + cache: "gradle" + + - name: Install fastlane + run: | + cd mobile/android/fastlane + gem install bundler + bundle install + bundle info fastlane + + - name: Install FFI bindings + if: steps.cache-deps.outputs.cache-hit != 'true' + run: just deps-gen + + - name: Add Rust targets + run: rustup target add armv7-linux-androideabi aarch64-linux-android + + # #499, https://github.com/actions/virtual-environments/issues/5595 + - name: Configure ndk + if: steps.cache-deps.outputs.cache-hit != 'true' + run: | + ANDROID_HOME=$HOME/Library/Android/sdk + SDKMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager + + echo y | $SDKMANAGER "ndk;21.4.7075529" + + ln -sfn $ANDROID_HOME/ndk/21.4.7075529 $ANDROID_HOME/ndk-bundle + + - name: Install cargo ndk + if: steps.cache-deps.outputs.cache-hit != 'true' + run: cargo install cargo-ndk + + - name: Generate FFI bindings + run: just gen + + - name: Build android Rust lib in release mode + run: just android-release + + - name: Parse version from pubspec.yaml + id: version + uses: jbutcher5/read-yaml@1.6 + with: + file: "mobile/pubspec.yaml" + key-path: '["version"]' + + - name: Prepare signingkeys + env: + # secrets + FASTLANE_ANDROID_SERVICE_ACCOUNT_KEY_BASE64: ${{ secrets.FASTLANE_ANDROID_SERVICE_ACCOUNT_KEY_BASE64 }} + FASTLANE_ANDROID_UPLOAD_KEY_BASE64: ${{ secrets.FASTLANE_ANDROID_UPLOAD_KEY_BASE64 }} + FASTLANE_ANDROID_STORE_PASSWORD: ${{ secrets.FASTLANE_ANDROID_STORE_PASSWORD }} + run: | + echo "$FASTLANE_ANDROID_SERVICE_ACCOUNT_KEY_BASE64" | base64 --decode > ${{ runner.temp }}/fastlane_service_account.json + echo "$FASTLANE_ANDROID_UPLOAD_KEY_BASE64" | base64 --decode > ${{ runner.temp }}/upload-keystore.jks + + upload_keystore_content="storePassword=$FASTLANE_ANDROID_STORE_PASSWORD + keyPassword=$FASTLANE_ANDROID_STORE_PASSWORD + keyAlias=upload + storeFile=${{ runner.temp }}/upload-keystore.jks" + + echo "$upload_keystore_content" > "./mobile/android/key.properties" + + - name: Build Android Archive + id: build-android + run: | + NETWORK=$NETWORK just build-android-app-bundle + env: + ESPLORA_ENDPOINT: ${{ inputs.esplora_endpoint }} + COORDINATOR_P2P_ENDPOINT: ${{ inputs.coordinator_p2p_endpoint }} + NETWORK: ${{ inputs.network }} + COORDINATOR_PORT_HTTP: ${{ inputs.coordinator_port_http }} + ORACLE_ENDPOINT: ${{ inputs.oracle_endpoint }} + ORACLE_PUBKEY: ${{ inputs.oracle_pubkey }} + + - name: Release to Google Play Store + env: + # secrets + FASTLANE_ANDROID_SERVICE_ACCOUNT_KEY_BASE64: ${{ secrets.FASTLANE_ANDROID_SERVICE_ACCOUNT_KEY_BASE64 }} + FASTLANE_ANDROID_UPLOAD_KEY_BASE64: ${{ secrets.FASTLANE_ANDROID_UPLOAD_KEY_BASE64 }} + FASTLANE_ANDROID_STORE_PASSWORD: ${{ secrets.FASTLANE_ANDROID_STORE_PASSWORD }} + NETWORK: ${{ inputs.network }} + run: | + NETWORK=$NETWORK ANDROID_SERVICE_ACCOUNT_KEY=${{ runner.temp }}/fastlane_service_account.json just upload-app-bundle + rm ${{ runner.temp }}/fastlane_service_account.json diff --git a/.github/workflows/deliverables-push-main.yml b/.github/workflows/deliverables-push-main.yml index 7d2e3b8c6..0a804df9f 100644 --- a/.github/workflows/deliverables-push-main.yml +++ b/.github/workflows/deliverables-push-main.yml @@ -52,3 +52,20 @@ jobs: fastlane_developer_app_identifier: finance.get10101.app.test fastlane_provisioning_profile_specifier: match AppStore finance.get10101.app.test app_scheme: test + + build_and_release_regtest_android_app_for_latest_main: + needs: changes + if: needs.changes.outputs.ios-app == 'true' + permissions: + packages: write + contents: read + uses: ./.github/workflows/android-fastlane.yml + secrets: inherit + with: + tag: main + esplora_endpoint: http://35.189.57.114:3000 + coordinator_p2p_endpoint: 03507b924dae6595cfb78492489978127c5f1e3877848564de2015cd6d41375802@35.189.57.114:9045 + coordinator_port_http: 80 + network: regtest + oracle_endpoint: http://api.test.10101.finance:8081 + oracle_pubkey: 5d12d79f575b8d99523797c46441c0549eb0defb6195fe8a080000cbe3ab3859 diff --git a/README.md b/README.md index 1d2e487a4..17b36395c 100644 --- a/README.md +++ b/README.md @@ -122,3 +122,19 @@ The app currently works only on `regtest`, which means that the wallet needs to 2. Block explorer - http://localhost:8080/ 3. Lightning & Bitcoin faucet - http://localhost:8080/faucet/ 4. Manually open a lightning channel - http://localhost:8080/channel/ + +## Deploy for android beta + +1. Create a `./mobile/android/key.properties` with the content from the key generation step from here https://docs.flutter.dev/deployment/android#signing-the-app +2. `just clean` never hurts but might not be necessary ;) +3. `just gen` +4. `just android-release` +5. `NETWORK=regtest just build-android-app-bundle` +6. `NETWORK=regtest just upload-app-bundle` + +TL;DR; +a shortcut for this is available but it is recommended to execute each step separately: + +```bash +just release-app-bundle-regtest +``` diff --git a/justfile b/justfile index ed88be382..03099fe06 100644 --- a/justfile +++ b/justfile @@ -71,7 +71,7 @@ android args="": # Note that this does not include x86_64 unlike the above, as android x86_64 is only a development # target and not a deployment target android-release: - cd mobile/native && cargo ndk -t armeabi-v7a -t arm64-v8a -o ../android/app/src/main/jniLibs build --release + cd mobile/native && cargo ndk -t armeabi-v7a -t arm64-v8a -o ../android/app/src/main/jniLibs build --release --verbose # Build Rust library for iOS (debug mode) ios: @@ -430,6 +430,67 @@ build-app-bundle-regtest: --dart-define="COORDINATOR_PORT_HTTP={{public_coordinator_http_port}}" \ --flavor demo + +build-android-app-bundle: + #!/usr/bin/env bash + BUILD_NAME=$(yq -r .version {{pubspec}}) + BUILD_NUMBER=$(git rev-list HEAD --count) + echo "build name: ${BUILD_NAME}" + echo "build number: ${BUILD_NUMBER}" + + regtest_args=() + ANDROID_PACKAGE_NAME='finance.get10101.app'; + if [ "$NETWORK" = "regtest" ]; then + regtest_args+=(--flavor demo) + ANDROID_PACKAGE_NAME='finance.get10101.app.demo'; + else + regtest_args+=(--flavor full) + fi + + # Replacing package id using the env variable. + os={{os()}} + echo "building on '$os' for '$NETWORK' and package id '$ANDROID_PACKAGE_NAME'" + if [ "$os" = "linux" ]; then + sed -i "s/\"finance\.get10101\.app\"/\"${ANDROID_PACKAGE_NAME}\"/g" mobile/android/app/google-services.json + elif [ "$os" = "macos" ]; then + sed -i '' "s/\"finance\.get10101\.app\"/\"$ANDROID_PACKAGE_NAME\"/g" mobile/android/app/google-services.json + else + echo "Only Linux and macOS are supported." + exit 1 + fi + cat mobile/android/app/google-services.json | jq 'recurse | select(type == "object" and (.bundle_id or .package_name))' + + cd mobile && flutter build appbundle \ + --build-name=${BUILD_NAME} \ + --build-number=${BUILD_NUMBER} \ + --release \ + --dart-define="ESPLORA_ENDPOINT=${ESPLORA_ENDPOINT}" \ + --dart-define="COORDINATOR_P2P_ENDPOINT=${COORDINATOR_P2P_ENDPOINT}" \ + --dart-define="NETWORK=${NETWORK}" \ + --dart-define="COMMIT=$(git rev-parse HEAD)" \ + --dart-define="BRANCH=$(git rev-parse --abbrev-ref HEAD)" \ + --dart-define="COORDINATOR_PORT_HTTP=${COORDINATOR_PORT_HTTP}" \ + --dart-define="ORACLE_ENDPOINT=${ORACLE_ENDPOINT}" \ + --dart-define="ORACLE_PUBKEY=${ORACLE_PUBKEY}" \ + "${regtest_args[@]}" + +upload-app-bundle: + #!/usr/bin/env bash + + cd mobile/android/fastlane + + ANDROID_PACKAGE_NAME='finance.get10101.app'; + FASTLANE_ANDROID_APP_SCHEME='full' + if [ "$NETWORK" = "regtest" ]; then + ANDROID_PACKAGE_NAME='finance.get10101.app.demo'; + FASTLANE_ANDROID_APP_SCHEME='demo'; + fi + echo $NETWORK + echo $ANDROID_PACKAGE_NAME + FASTLANE_ANDROID_APP_SCHEME=${FASTLANE_ANDROID_APP_SCHEME} ANDROID_PACKAGE_NAME=${ANDROID_PACKAGE_NAME} bundle exec fastlane alpha + +release-app-bundle-regtest: gen android-release build-app-bundle-regtest upload-app-bundle + # Run prometheus for local debugging (needs it installed, e.g. `brew install prometheus`) prometheus: #!/usr/bin/env bash diff --git a/mobile/android/.gitignore b/mobile/android/.gitignore index 6f568019d..3b33edec9 100644 --- a/mobile/android/.gitignore +++ b/mobile/android/.gitignore @@ -11,3 +11,9 @@ GeneratedPluginRegistrant.java key.properties **/*.keystore **/*.jks + +# Fastlane keys +fastlane/key.json +## autogenerated stuff +fastlane/report.xml +fastlane/README.md diff --git a/mobile/android/Gemfile b/mobile/android/Gemfile new file mode 100644 index 000000000..7a118b49b --- /dev/null +++ b/mobile/android/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle index 4dad45c20..e274ba537 100644 --- a/mobile/android/app/build.gradle +++ b/mobile/android/app/build.gradle @@ -66,14 +66,15 @@ android { resValue "string", "app_name", "10101 (regtest)" applicationIdSuffix ".demo" } - } - - productFlavors { local { dimension "default" resValue "string", "app_name", "10101 (local)" applicationIdSuffix ".local" } + full { + dimension "default" + resValue "string", "app_name", "10101" + } } signingConfigs { diff --git a/mobile/android/fastlane/Appfile b/mobile/android/fastlane/Appfile new file mode 100644 index 000000000..b227c5ff8 --- /dev/null +++ b/mobile/android/fastlane/Appfile @@ -0,0 +1,2 @@ +json_key_file ENV["ANDROID_SERVICE_ACCOUNT_KEY"] +package_name ENV["ANDROID_PACKAGE_NAME"] diff --git a/mobile/android/fastlane/Fastfile b/mobile/android/fastlane/Fastfile new file mode 100644 index 000000000..e887ce400 --- /dev/null +++ b/mobile/android/fastlane/Fastfile @@ -0,0 +1,15 @@ +default_platform(:android) + +APP_SCHEME = ENV["FASTLANE_ANDROID_APP_SCHEME"] + +platform :android do + + desc "Submit a new build to google play store" + lane :alpha do + changelog = File.read("../../../CHANGELOG.md") + upload_to_play_store( + track: 'alpha', + aab: "../build/app/outputs/bundle/#{APP_SCHEME}Release/app-#{APP_SCHEME}-release.aab", + ) + end +end diff --git a/mobile/android/fastlane/Gemfile b/mobile/android/fastlane/Gemfile new file mode 100644 index 000000000..82d1e3049 --- /dev/null +++ b/mobile/android/fastlane/Gemfile @@ -0,0 +1,4 @@ +source "https://rubygems.org" + +gem "fastlane" +gem "cocoapods" diff --git a/mobile/android/fastlane/Gemfile.lock b/mobile/android/fastlane/Gemfile.lock new file mode 100644 index 000000000..3efefe1ce --- /dev/null +++ b/mobile/android/fastlane/Gemfile.lock @@ -0,0 +1,283 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.6) + rexml + activesupport (5.2.8.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.8.5) + public_suffix (>= 2.0.2, < 6.0) + algoliasearch (1.27.5) + httpclient (~> 2.8, >= 2.8.3) + json (>= 1.5.1) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.2.0) + aws-partitions (1.798.0) + aws-sdk-core (3.180.1) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.71.0) + aws-sdk-core (~> 3, >= 3.177.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.132.0) + aws-sdk-core (~> 3, >= 3.179.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.6) + aws-sigv4 (1.6.0) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.1.0) + cocoapods (1.10.2) + addressable (~> 2.6) + claide (>= 1.0.2, < 2.0) + cocoapods-core (= 1.10.2) + cocoapods-deintegrate (>= 1.0.3, < 2.0) + cocoapods-downloader (>= 1.4.0, < 2.0) + cocoapods-plugins (>= 1.0.0, < 2.0) + cocoapods-search (>= 1.0.0, < 2.0) + cocoapods-trunk (>= 1.4.0, < 2.0) + cocoapods-try (>= 1.1.0, < 2.0) + colored2 (~> 3.1) + escape (~> 0.0.4) + fourflusher (>= 2.3.0, < 3.0) + gh_inspector (~> 1.0) + molinillo (~> 0.6.6) + nap (~> 1.0) + ruby-macho (~> 1.4) + xcodeproj (>= 1.19.0, < 2.0) + cocoapods-core (1.10.2) + activesupport (> 5.0, < 6) + addressable (~> 2.6) + algoliasearch (~> 1.0) + concurrent-ruby (~> 1.1) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + netrc (~> 0.11) + public_suffix + typhoeus (~> 1.0) + cocoapods-deintegrate (1.0.5) + cocoapods-downloader (1.6.3) + cocoapods-plugins (1.0.0) + nap + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) + nap (>= 0.8, < 2.0) + netrc (~> 0.11) + cocoapods-try (1.2.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + concurrent-ruby (1.2.2) + declarative (0.0.20) + digest-crc (0.6.5) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.8.1) + emoji_regex (3.2.3) + escape (0.0.4) + ethon (0.16.0) + ffi (>= 1.15.0) + excon (0.100.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.2.7) + fastlane (2.214.0) + 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 + 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-storage (~> 1.31) + highline (~> 2.0) + 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) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + 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) + ffi (1.15.5) + fourflusher (2.3.1) + fuzzy_match (2.0.4) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.47.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.1) + 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 + webrick + 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.19.0) + google-apis-core (>= 0.9.0, < 2.a) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.3.1) + google-cloud-storage (1.44.0) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.19.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.7.0) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.5) + domain_name (~> 0.5) + httpclient (2.8.3) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + jmespath (1.6.2) + json (2.6.3) + jwt (2.7.1) + memoist (0.16.2) + mini_magick (4.12.0) + mini_mime (1.1.2) + minitest (5.19.0) + molinillo (0.6.6) + multi_json (1.15.0) + multipart-post (2.3.0) + nanaimo (0.3.0) + nap (1.1.0) + naturally (2.2.1) + netrc (0.11.0) + optparse (0.1.1) + os (1.1.4) + plist (3.7.0) + public_suffix (5.0.3) + rake (13.0.6) + 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.6) + rouge (2.0.7) + ruby-macho (1.4.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.3) + signet (0.17.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 + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (1.2.11) + thread_safe (~> 0.1) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.2) + unicode-display_width (1.8.0) + webrick (1.8.1) + word_wrap (1.0.0) + xcodeproj (1.22.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-22 + +DEPENDENCIES + cocoapods + fastlane + +BUNDLED WITH + 2.3.26 diff --git a/mobile/android/fastlane/key.sample.json b/mobile/android/fastlane/key.sample.json new file mode 100644 index 000000000..f42217a32 --- /dev/null +++ b/mobile/android/fastlane/key.sample.json @@ -0,0 +1,4 @@ +{ + "1": "ask bonomat for the real key content", + "2": "copy the key file here as key.json here" +} diff --git a/mobile/android/fastlane/metadata/android/en-US/default.txt b/mobile/android/fastlane/metadata/android/en-US/default.txt new file mode 100644 index 000000000..14c7e68cb --- /dev/null +++ b/mobile/android/fastlane/metadata/android/en-US/default.txt @@ -0,0 +1 @@ +Some empty changelog \ No newline at end of file diff --git a/mobile/android/fastlane/metadata/android/en-US/full_description.txt b/mobile/android/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 000000000..8b25fa48b --- /dev/null +++ b/mobile/android/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1 @@ +10101 is a self-custodial lightning wallet for your phone. Using DLCs (Discreet Log Contracts) we enable users to trade without counterparty risk and offer a synthetic stable coin. \ No newline at end of file diff --git a/mobile/android/fastlane/metadata/android/en-US/images/featureGraphic.png b/mobile/android/fastlane/metadata/android/en-US/images/featureGraphic.png new file mode 100644 index 000000000..1a4e2aff5 Binary files /dev/null and b/mobile/android/fastlane/metadata/android/en-US/images/featureGraphic.png differ diff --git a/mobile/android/fastlane/metadata/android/en-US/images/icon.png b/mobile/android/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 000000000..59ce9ce4b Binary files /dev/null and b/mobile/android/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/mobile/android/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png b/mobile/android/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png new file mode 100644 index 000000000..d059eb4cc Binary files /dev/null and b/mobile/android/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png differ diff --git a/mobile/android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png b/mobile/android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png new file mode 100644 index 000000000..df744c90c Binary files /dev/null and b/mobile/android/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png differ diff --git a/mobile/android/fastlane/metadata/android/en-US/short_description.txt b/mobile/android/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 000000000..5d10c0793 --- /dev/null +++ b/mobile/android/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +Decentralized finance on Bitcoin. For real. \ No newline at end of file diff --git a/mobile/android/fastlane/metadata/android/en-US/title.txt b/mobile/android/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 000000000..9716e8b9f --- /dev/null +++ b/mobile/android/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +10101 \ No newline at end of file diff --git a/mobile/android/fastlane/metadata/android/en-US/video.txt b/mobile/android/fastlane/metadata/android/en-US/video.txt new file mode 100644 index 000000000..e69de29bb diff --git a/mobile/android/key.sample.properties b/mobile/android/key.sample.properties new file mode 100644 index 000000000..3841ce1f0 --- /dev/null +++ b/mobile/android/key.sample.properties @@ -0,0 +1,4 @@ +storePassword=put-key-password +keyPassword=put-key-password +keyAlias=upload +storeFile=/path/to/upload-keystore.jks