diff --git a/.github/scripts/import-certificate.sh b/.github/scripts/import-certificate.sh new file mode 100755 index 0000000..a016622 --- /dev/null +++ b/.github/scripts/import-certificate.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -euo pipefail + +security create-keychain -p "" build.keychain +security list-keychains -s build.keychain +security default-keychain -s build.keychain +security unlock-keychain -p "" build.keychain +security set-keychain-settings +echo $SIGNING_CERTIFICATE_P12_DATA | base64 --decode > signingCertificate.p12 +security import signingCertificate.p12 \ + -f pkcs12 \ + -k build.keychain \ + -P $SIGNING_CERTIFICATE_PASSWORD \ + -T /usr/bin/codesign +security set-key-partition-list -S apple-tool:,apple: -s -k "" build.keychain \ No newline at end of file diff --git a/.github/scripts/import-profile.sh b/.github/scripts/import-profile.sh new file mode 100755 index 0000000..bc2dbee --- /dev/null +++ b/.github/scripts/import-profile.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -euo pipefail + +mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles +echo "$PROVISIONING_PROFILE_DATA" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/profile.mobileprovision \ No newline at end of file diff --git a/.github/workflows/assemble_android_debug.yml b/.github/workflows/assemble_android_debug.yml new file mode 100644 index 0000000..f0540e5 --- /dev/null +++ b/.github/workflows/assemble_android_debug.yml @@ -0,0 +1,100 @@ +# 工作流名称 +name: Assemble Android Debug + +# 触发工作流程的事件 +on: + push: + branches: [ master ] + tags: [ v* ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +# 工作流环境变量 +env: + # 应用的application_id + APP_ID: com.tarodemo + # 应用名称 + APP_NAME: Taro Demo + # 打包类型 + BUILD_TYPE: debug + # 版本名称 + VERSION_NAME: 1.0.0 + # 版本号 + VERSION_CODE: 10 + # 密钥库文件 + KEYSTORE_FILE: debug.keystore + # 密钥库口令 + KEYSTORE_PASSWORD: android + # 密钥库别名 + KEYSTORE_KEY_ALIAS: androiddebugkey + # 密钥库别名口令 + KEYSTORE_KEY_PASSWORD: android + +# 工作流作业 +jobs: + assemble: + runs-on: ubuntu-latest + steps: + - name: Checkout Project + uses: actions/checkout@v2 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + - name: Cache node_modules Folder + uses: actions/cache@v2 + with: + path: ${{ github.workspace }}/node_modules + key: ${{ runner.os }}-node_modules + restore-keys: ${{ runner.os }}-node_modules + - name: Get Yarn Cache Directory Path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: Cache Yarn + uses: actions/cache@v2 + env: + cache-name: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install Dependencies + run: | + yarn + # - name: Build Taro React Native Bundle + # run: | + # yarn build:rn --platform android + - name: Cache Gradle + uses: actions/cache@v2 + env: + cache-name: gradle-cache + with: + path: ~/.gradle + key: ${{ runner.os }}-gradle + restore-keys: | + ${{ runner.os }}-gradle + - name: Assemble Android ${{ env.BUILD_TYPE }} + run: | + sudo apt install -y ruby-bundler + cd android + bundle update + bundle exec fastlane assemble + env: + KEYSTORE_FILE: ${{ github.workspace }}/android/app/${{ env.KEYSTORE_FILE }} + - name: Upload Android Products + uses: actions/upload-artifact@v2 + with: + name: app-${{ env.BUILD_TYPE }} + path: ${{ github.workspace }}/android/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk + - name: Upload release assets + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + prerelease: ${{ contains(github.ref, 'beta') }} + files: | + android/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/assemble_android_release.yml b/.github/workflows/assemble_android_release.yml new file mode 100644 index 0000000..961562c --- /dev/null +++ b/.github/workflows/assemble_android_release.yml @@ -0,0 +1,105 @@ +# 工作流名称 +name: Assemble Android Release + +# 触发工作流程的事件 +on: + push: + branches: [ master ] + tags: [ v* ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +# 工作流环境变量 +env: + # 应用的application_id + APP_ID: com.tarodemo + # 应用名称 + APP_NAME: Taro Demo + # 打包类型 + BUILD_TYPE: release + # 版本名称 + VERSION_NAME: 1.0.0 + # 版本号 + VERSION_CODE: 10 + # 密钥库文件 + KEYSTORE_FILE: debug.keystore + # 密钥库口令 + KEYSTORE_PASSWORD: android + # 密钥库别名 + KEYSTORE_KEY_ALIAS: androiddebugkey + # 密钥库别名口令 + KEYSTORE_KEY_PASSWORD: android + +# 工作流作业 +jobs: + assemble: + runs-on: ubuntu-latest + steps: + - name: Checkout Project + uses: actions/checkout@v2 + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + - name: Cache node_modules Folder + uses: actions/cache@v2 + with: + path: ${{ github.workspace }}/node_modules + key: ${{ runner.os }}-node_modules + restore-keys: ${{ runner.os }}-node_modules + - name: Get Yarn Cache Directory Path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: Cache Yarn + uses: actions/cache@v2 + env: + cache-name: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install Dependencies + run: | + yarn + # - name: Build Taro React Native Bundle + # run: | + # yarn build:rn --platform android + # - name: Upload Taro React Native Bundle + # uses: actions/upload-artifact@v2 + # with: + # name: taro-android-bundle + # path: ${{ github.workspace }}/android/app/src/main/assets/index.android.bundle + - name: Cache Gradle + uses: actions/cache@v2 + env: + cache-name: gradle-cache + with: + path: ~/.gradle + key: ${{ runner.os }}-gradle + restore-keys: | + ${{ runner.os }}-gradle + - name: Assemble Android ${{ env.BUILD_TYPE }} + run: | + sudo apt install -y ruby-bundler + cd android + bundle update + bundle exec fastlane assemble + env: + KEYSTORE_FILE: ${{ github.workspace }}/android/app/${{ env.KEYSTORE_FILE }} + - name: Upload Android Products + uses: actions/upload-artifact@v2 + with: + name: app-${{ env.BUILD_TYPE }} + path: ${{ github.workspace }}/android/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk + - name: Upload release assets + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + prerelease: ${{ contains(github.ref, 'beta') }} + files: | + android/app/build/outputs/apk/${{ env.BUILD_TYPE }}/app-${{ env.BUILD_TYPE }}.apk + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/assemble_ios_debug.yml b/.github/workflows/assemble_ios_debug.yml new file mode 100644 index 0000000..b9a6f20 --- /dev/null +++ b/.github/workflows/assemble_ios_debug.yml @@ -0,0 +1,113 @@ +# 工作流名称 +name: Assemble Ios Debug + +# 触发工作流程的事件 +on: + push: + branches: [ master ] + tags: [ v* ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +# 工作流环境变量 +env: + # 应用的application_id + APP_ID: ${{secrets.APP_ID}} + APP_NAME: Taro Demo + VERSION_NUMBER: 1.0.0 + BUILD_TYPE: debug + TEAM_ID: ${{secrets.TEAM_ID}} + PROVISIONING_PROFILE_SPECIFIER: ${{secrets.DEBUG_PROVISIONING_PROFILE_SPECIFIER}} + CODE_SIGN_IDENTITY: Apple Development + SIGNING_CERTIFICATE_P12_DATA: ${{secrets.DEBUG_SIGNING_CERTIFICATE_P12_DATA}} + SIGNING_CERTIFICATE_PASSWORD: ${{secrets.DEBUG_SIGNING_CERTIFICATE_PASSWORD}} + PROVISIONING_PROFILE_DATA: ${{secrets.DEBUG_PROVISIONING_PROFILE_DATA}} + +jobs: + assemble: + runs-on: macos-13 + steps: + - name: Checkout Project + uses: actions/checkout@v2 + - name: Cache node_modules Folder + uses: actions/cache@v2 + with: + path: ${{ github.workspace }}/node_modules + key: ${{ runner.os }}-node_modules + restore-keys: ${{ runner.os }}-node_modules + - name: Get Yarn Cache Directory Path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: Cache Yarn + uses: actions/cache@v2 + env: + cache-name: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Cache Pods + uses: actions/cache@v2 + with: + path: ios/Pods + key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} + restore-keys: | + ${{ runner.os }}-pods- + - name: Install Dependencies + run: | + yarn + # - name: Build Taro React Native Bundle + # run: | + # yarn build:rn --platform ios + - name: Install pods + run: cd ios && pod update --no-repo-update + - name: Import signing certificate + env: + SIGNING_CERTIFICATE_P12_DATA: ${{ env.SIGNING_CERTIFICATE_P12_DATA }} + SIGNING_CERTIFICATE_PASSWORD: ${{ env.SIGNING_CERTIFICATE_PASSWORD }} + run: | + exec .github/scripts/import-certificate.sh + - name: Import provisioning profile + env: + PROVISIONING_PROFILE_DATA: ${{ env.PROVISIONING_PROFILE_DATA }} + run: | + exec .github/scripts/import-profile.sh + - name: Build app + env: + SKIP_BUNDLING: 1 + FL_APP_IDENTIFIER: ${{ env.APP_ID }} + FL_UPDATE_PLIST_DISPLAY_NAME: ${{ env.APP_NAME }} + FL_UPDATE_PLIST_PATH: taroDemo/Info.plist + FL_VERSION_NUMBER_VERSION_NUMBER: ${{ env.VERSION_NUMBER }} + FL_BUILD_NUMBER_BUILD_NUMBER: ${{ env.BUILD_NUMBER }} + FL_CODE_SIGN_IDENTITY: ${{ env.CODE_SIGN_IDENTITY }} + FL_PROVISIONING_PROFILE_SPECIFIER: ${{ env.PROVISIONING_PROFILE_SPECIFIER }} + FASTLANE_TEAM_ID: ${{ env.TEAM_ID }} + run: | + cd ios + bundle update + bundle exec fastlane build_dev + - name: Upload Ios Products + uses: actions/upload-artifact@v2 + with: + name: app-${{ env.BUILD_TYPE }} + path: | + ${{ github.workspace }}/ios/taroDemo.ipa + ${{ github.workspace }}/ios/taroDemo.app.dSYM.zip + - name: Rename release assets + run: | + mv ios/taroDemo.ipa ios/app-${{ env.BUILD_TYPE }}.ipa + mv ios/taroDemo.app.dSYM.zip ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip + - name: Upload release assets + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + prerelease: ${{ contains(github.ref, 'beta') }} + files: | + ios/app-${{ env.BUILD_TYPE }}.ipa + ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/assemble_ios_release.yml b/.github/workflows/assemble_ios_release.yml new file mode 100644 index 0000000..cb53972 --- /dev/null +++ b/.github/workflows/assemble_ios_release.yml @@ -0,0 +1,131 @@ +# 工作流名称 +name: Assemble Ios Release + +# 触发工作流程的事件 +on: + push: + branches: [ master ] + tags: [ v* ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +# 工作流环境变量 +env: + # 应用的application_id + APP_ID: ${{secrets.APP_ID}} + APP_NAME: Taro Demo + VERSION_NUMBER: 1.0.0 + BUILD_NUMBER: 1.0.0.0 + BUILD_TYPE: release + TEAM_ID: ${{secrets.TEAM_ID}} + PROVISIONING_PROFILE_SPECIFIER: ${{secrets.RELEASE_PROVISIONING_PROFILE_SPECIFIER}} + CODE_SIGN_IDENTITY: Apple Distribution + SIGNING_CERTIFICATE_P12_DATA: ${{secrets.RELEASE_SIGNING_CERTIFICATE_P12_DATA}} + SIGNING_CERTIFICATE_PASSWORD: ${{secrets.RELEASE_SIGNING_CERTIFICATE_PASSWORD}} + PROVISIONING_PROFILE_DATA: ${{secrets.RELEASE_PROVISIONING_PROFILE_DATA}} + APP_STORE_CONNECT_USERNAME: ${{secrets.APP_STORE_CONNECT_USERNAME}} + APP_STORE_CONNECT_PASSWORD: ${{secrets.APP_STORE_CONNECT_PASSWORD}} + +jobs: + assemble: + runs-on: macos-13 + steps: + - name: Get current date + id: date + run: echo "::set-output name=timestamp::$(date +'%s')" + - name: Checkout Project + uses: actions/checkout@v2 + - name: Cache node_modules Folder + uses: actions/cache@v2 + with: + path: ${{ github.workspace }}/node_modules + key: ${{ runner.os }}-node_modules + restore-keys: ${{ runner.os }}-node_modules + - name: Get Yarn Cache Directory Path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: Cache Yarn + uses: actions/cache@v2 + env: + cache-name: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Cache Pods + uses: actions/cache@v2 + with: + path: ios/Pods + key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} + restore-keys: | + ${{ runner.os }}-pods- + - name: Install Dependencies + run: | + yarn + # - name: Build Taro React Native Bundle + # run: | + # yarn build:rn --platform ios + # - name: Upload Taro React Native Bundle + # uses: actions/upload-artifact@v2 + # with: + # name: taro-ios-bundle + # path: ${{ github.workspace }}/ios/main.jsbundle + - name: Install pods + run: cd ios && pod update --no-repo-update + - name: Import signing certificate + env: + SIGNING_CERTIFICATE_P12_DATA: ${{ env.SIGNING_CERTIFICATE_P12_DATA }} + SIGNING_CERTIFICATE_PASSWORD: ${{ env.SIGNING_CERTIFICATE_PASSWORD }} + run: | + exec .github/scripts/import-certificate.sh + - name: Import provisioning profile + env: + PROVISIONING_PROFILE_DATA: ${{ env.PROVISIONING_PROFILE_DATA }} + run: | + exec .github/scripts/import-profile.sh + - name: Build app + env: + SKIP_BUNDLING: 1 + FL_APP_IDENTIFIER: ${{ env.APP_ID }} + FL_UPDATE_PLIST_DISPLAY_NAME: ${{ env.APP_NAME }} + FL_UPDATE_PLIST_PATH: taroDemo/Info.plist + FL_VERSION_NUMBER_VERSION_NUMBER: ${{ env.VERSION_NUMBER }} + FL_BUILD_NUMBER_BUILD_NUMBER: ${{ env.BUILD_NUMBER }}.${{steps.date.outputs.timestamp}} + FL_CODE_SIGN_IDENTITY: ${{ env.CODE_SIGN_IDENTITY }} + FL_PROVISIONING_PROFILE_SPECIFIER: ${{ env.PROVISIONING_PROFILE_SPECIFIER }} + FASTLANE_TEAM_ID: ${{ env.TEAM_ID }} + run: | + cd ios + bundle update + bundle exec fastlane build_release + - name: Upload Ios Products + uses: actions/upload-artifact@v2 + with: + name: app-${{ env.BUILD_TYPE }} + path: | + ${{ github.workspace }}/ios/taroDemo.ipa + ${{ github.workspace }}/ios/taroDemo.app.dSYM.zip + - name: Upload app to App Store Connect + env: + APP_STORE_CONNECT_USERNAME: ${{ env.APP_STORE_CONNECT_USERNAME }} + APP_STORE_CONNECT_PASSWORD: ${{ env.APP_STORE_CONNECT_PASSWORD }} + run: | + cd ios + xcrun altool --upload-app -t ios -f "taroDemo.ipa" -u "$APP_STORE_CONNECT_USERNAME" -p "$APP_STORE_CONNECT_PASSWORD" + - name: Rename release assets + run: | + mv ios/taroDemo.ipa ios/app-${{ env.BUILD_TYPE }}.ipa + mv ios/taroDemo.app.dSYM.zip ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip + - name: Upload release assets + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + prerelease: ${{ contains(github.ref, 'beta') }} + files: | + ios/app-${{ env.BUILD_TYPE }}.ipa + ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Gemfile b/Gemfile index 6a7d5c7..9213973 100644 --- a/Gemfile +++ b/Gemfile @@ -3,5 +3,6 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version ruby ">= 2.6.10" +gem 'fastlane' gem 'cocoapods', '~> 1.13' gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' diff --git a/README.md b/README.md index cf6ff68..42e7af2 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,13 @@ yarn yarn upgradePeerdeps ``` +5. 添加打包脚本,此部分可以直接 cherry-pick + - [fastlane] 添加 Android、iOS fastlane 配置 + - [actions] 添加 Android、iOS 打包脚本 + - [ios] 添加默认图标 + - [ios] 添加 ITSAppUsesNonExemptEncryption false + - [ios] 添加 main.jsbundle assets 引用 + ## React Native 小版本更新 https://react-native-community.github.io/upgrade-helper/ diff --git a/android/Gemfile b/android/Gemfile new file mode 100644 index 0000000..3bb287d --- /dev/null +++ b/android/Gemfile @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +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/android/Gemfile.lock b/android/Gemfile.lock new file mode 100644 index 0000000..a21c3c8 --- /dev/null +++ b/android/Gemfile.lock @@ -0,0 +1,222 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.5) + rexml + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.2.0) + aws-partitions (1.587.0) + aws-sdk-core (3.130.2) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.525.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-kms (1.56.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.114.0) + aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.5.0) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + 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.4) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.6) + emoji_regex (3.2.3) + excon (0.92.3) + faraday (1.10.0) + 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.3) + multipart-post (>= 1.2, < 3) + 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.6) + fastlane (2.205.2) + 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) + 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) + fastlane-plugin-update_android_strings (0.1.0) + ox + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.20.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-core (0.4.2) + 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.10.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-playcustomapp_v1 (0.7.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-storage_v1 (0.13.0) + google-apis-core (>= 0.4, < 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.2.0) + google-cloud-storage (1.36.2) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.1) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.1.3) + 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.4) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.6.1) + json (2.6.1) + jwt (2.3.0) + memoist (0.16.2) + mini_magick (4.11.0) + mini_mime (1.1.2) + multi_json (1.15.0) + multipart-post (2.0.0) + nanaimo (0.3.0) + naturally (2.2.1) + optparse (0.1.1) + os (1.1.4) + ox (2.14.11) + plist (3.6.0) + public_suffix (4.0.7) + rake (13.0.6) + representable (3.1.1) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.5) + rouge (2.0.7) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.3) + signet (0.16.1) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.0) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.8.1) + unicode-display_width (1.8.0) + webrick (1.7.0) + word_wrap (1.0.0) + xcodeproj (1.21.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 + universal-darwin-21 + +DEPENDENCIES + fastlane + fastlane-plugin-update_android_strings + +BUNDLED WITH + 2.2.27 diff --git a/android/app/build.gradle b/android/app/build.gradle index 46921c3..dc8fa57 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -76,7 +76,7 @@ android { namespace "com.tarodemo" defaultConfig { - applicationId "com.tarodemo" + applicationId app_id minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 diff --git a/android/fastlane/Appfile b/android/fastlane/Appfile new file mode 100644 index 0000000..17a3137 --- /dev/null +++ b/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.tarodemo") # e.g. com.krausefx.app diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile new file mode 100644 index 0000000..a766054 --- /dev/null +++ b/android/fastlane/Fastfile @@ -0,0 +1,43 @@ +# 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 + + desc "assemble" + lane :assemble do + update_android_strings( + xml_path: 'app/src/main/res/values/strings.xml', + block: lambda { |strings| + strings['app_name'] = ENV['APP_NAME'] + } + ) + gradle( + task: "assemble", + build_type: ENV['BUILD_TYPE'], + properties: { + "app_id" => ENV['APP_ID'], + "android.injected.version.code" => ENV['VERSION_CODE'].to_i, + "android.injected.version.name" => ENV['VERSION_NAME'], + "android.injected.signing.store.file" => ENV['KEYSTORE_FILE'], + "android.injected.signing.store.password" => ENV['KEYSTORE_PASSWORD'], + "android.injected.signing.key.alias" => ENV['KEYSTORE_KEY_ALIAS'], + "android.injected.signing.key.password" => ENV['KEYSTORE_KEY_PASSWORD'], + } + ) + end + +end diff --git a/android/fastlane/Pluginfile b/android/fastlane/Pluginfile new file mode 100644 index 0000000..438d7e1 --- /dev/null +++ b/android/fastlane/Pluginfile @@ -0,0 +1,5 @@ +# Autogenerated by fastlane +# +# Ensure this file is checked in to source control! + +gem 'fastlane-plugin-update_android_strings' diff --git a/android/gradle.properties b/android/gradle.properties index a46a5b9..b6c973a 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -39,3 +39,4 @@ newArchEnabled=false # Use this property to enable or disable the Hermes JS engine. # If set to false, you will be using JSC instead. hermesEnabled=true +app_id=com.tarodemo \ No newline at end of file diff --git a/ios/assets/.gitkeep b/ios/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile new file mode 100644 index 0000000..1803063 --- /dev/null +++ b/ios/fastlane/Appfile @@ -0,0 +1,6 @@ +# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app +# apple_id("[[APPLE_ID]]") # Your Apple email address + + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile new file mode 100644 index 0000000..4586950 --- /dev/null +++ b/ios/fastlane/Fastfile @@ -0,0 +1,56 @@ +# 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(:ios) + +platform :ios do + desc "Description of what the lane does" + lane :custom_lane do + # add actions here: https://docs.fastlane.tools/actions + end + + desc "development" + lane :build_dev do |options| + update_info_plist + update_code_signing_settings + increment_version_number + build_app( + scheme: "taroDemo", + workspace: "taroDemo.xcworkspace", + export_method: "development", + configuration: "Debug", + clean: true, + xcargs: "GCC_PREPROCESSOR_DEFINITIONS='$(inherited) DEBUG=1'", + export_options: { + method: "development", + compileBitcode: false + } + ) + end + + desc "release" + lane :build_release do |options| + update_info_plist + update_code_signing_settings + increment_version_number + increment_build_number + build_app( + scheme: "taroDemo", + # clean: true, + workspace: "taroDemo.xcworkspace" + ) + end + +end diff --git a/ios/fastlane/README.md b/ios/fastlane/README.md new file mode 100644 index 0000000..49abb9e --- /dev/null +++ b/ios/fastlane/README.md @@ -0,0 +1,48 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## iOS + +### ios custom_lane + +```sh +[bundle exec] fastlane ios custom_lane +``` + +Description of what the lane does + +### ios build_dev + +```sh +[bundle exec] fastlane ios build_dev +``` + +development + +### ios build_release + +```sh +[bundle exec] fastlane ios build_release +``` + +release + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/ios/taroDemo/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/taroDemo/Images.xcassets/AppIcon.appiconset/Contents.json index 8121323..1b5e555 100644 --- a/ios/taroDemo/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/taroDemo/Images.xcassets/AppIcon.appiconset/Contents.json @@ -31,6 +31,7 @@ "size" : "40x40" }, { + "filename" : "icon-60@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "60x60" @@ -41,6 +42,7 @@ "size" : "60x60" }, { + "filename" : "icon-1024.png", "idiom" : "ios-marketing", "scale" : "1x", "size" : "1024x1024" diff --git a/ios/taroDemo/Images.xcassets/AppIcon.appiconset/icon-1024.png b/ios/taroDemo/Images.xcassets/AppIcon.appiconset/icon-1024.png new file mode 100644 index 0000000..b3756fc Binary files /dev/null and b/ios/taroDemo/Images.xcassets/AppIcon.appiconset/icon-1024.png differ diff --git a/ios/taroDemo/Images.xcassets/AppIcon.appiconset/icon-60@2x.png b/ios/taroDemo/Images.xcassets/AppIcon.appiconset/icon-60@2x.png new file mode 100644 index 0000000..91b172e Binary files /dev/null and b/ios/taroDemo/Images.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/ios/taroDemo/Info.plist b/ios/taroDemo/Info.plist index f0abed9..346dd38 100644 --- a/ios/taroDemo/Info.plist +++ b/ios/taroDemo/Info.plist @@ -2,6 +2,8 @@ + ITSAppUsesNonExemptEncryption + CFBundleDevelopmentRegion en CFBundleDisplayName