diff --git a/.github/workflows/build_android.yml b/.github/workflows/build_android.yml index 6a64fed6d..dac8678e5 100644 --- a/.github/workflows/build_android.yml +++ b/.github/workflows/build_android.yml @@ -104,8 +104,12 @@ jobs: echo "ANDROID_NDK_HOME=/tmp/android-ndk-r21e" >> $GITHUB_ENV - name: Install Unity installer (U3D) - shell: bash - run: gem install u3d -v 1.2.3 + uses: nick-invision/retry@v2 + with: + timeout_minutes: 10 + max_attempts: 3 + shell: bash + command: gem install u3d -v 1.2.3 - name: Install python deps shell: bash @@ -113,9 +117,13 @@ jobs: pip install -r scripts/gha/requirements.txt - name: Install Unity - shell: bash - run: | - python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} + uses: nick-invision/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 3 + shell: bash + command: | + python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} - name: Setup Unity path shell: bash @@ -128,6 +136,7 @@ jobs: swig -version - name: Build SDK (Android) + timeout-minutes: 90 shell: bash run: | # TODO add handling cmake_extras diff --git a/.github/workflows/build_ios.yml b/.github/workflows/build_ios.yml index c6ffb87e4..6dcedbb46 100644 --- a/.github/workflows/build_ios.yml +++ b/.github/workflows/build_ios.yml @@ -83,8 +83,12 @@ jobs: cd .. - name: Install Unity installer (U3D) - shell: bash - run: gem install u3d -v 1.2.3 + uses: nick-invision/retry@v2 + with: + timeout_minutes: 10 + max_attempts: 3 + shell: bash + command: gem install u3d -v 1.2.3 - name: Install python deps shell: bash @@ -92,9 +96,13 @@ jobs: pip install -r scripts/gha/requirements.txt - name: Install Unity - shell: bash - run: | - python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} + uses: nick-invision/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 3 + shell: bash + command: | + python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} - name: Setup Unity path shell: bash @@ -102,6 +110,7 @@ jobs: echo "UNITY_ROOT_DIR=$( python scripts/gha/print_matrix_configuration.py -u ${{ inputs.unity_version }} -k unity_path )" >> $GITHUB_ENV - name: Build SDK (iOS) + timeout-minutes: 90 shell: bash run: | # TODO add handling cmake_extras diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 67bf17a6a..834efce68 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -69,8 +69,12 @@ jobs: ruby-version: 3.0.2 - name: Install Unity installer (U3D) - shell: bash - run: gem install u3d -v 1.2.3 + uses: nick-invision/retry@v2 + with: + timeout_minutes: 10 + max_attempts: 3 + shell: bash + command: gem install u3d -v 1.2.3 - name: Setup python uses: actions/setup-python@v2 @@ -95,9 +99,13 @@ jobs: sudo apt install openssl - name: Install Unity - shell: bash - run: | - python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} + uses: nick-invision/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 3 + shell: bash + command: | + python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} - name: Setup Unity path shell: bash @@ -108,6 +116,7 @@ jobs: echo "SWIG_DIR=$(swig -swiglib)" >> $GITHUB_ENV - name: Build SDK (Linux) + timeout-minutes: 90 shell: bash run: | # TODO add handling cmake_extras diff --git a/.github/workflows/build_macos.yml b/.github/workflows/build_macos.yml index 1e2ef47e0..3c0045121 100644 --- a/.github/workflows/build_macos.yml +++ b/.github/workflows/build_macos.yml @@ -69,8 +69,12 @@ jobs: ruby-version: 3.0.2 - name: Install Unity installer (U3D) - shell: bash - run: gem install u3d -v 1.2.3 + uses: nick-invision/retry@v2 + with: + timeout_minutes: 10 + max_attempts: 3 + shell: bash + command: gem install u3d -v 1.2.3 - name: Setup python uses: actions/setup-python@v2 @@ -101,9 +105,13 @@ jobs: echo "OPENSSL_ROOT_DIR=$(brew --prefix openssl --installed)" >> $GITHUB_ENV - name: Install Unity - shell: bash - run: | - python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} + uses: nick-invision/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 3 + shell: bash + command: | + python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} - name: Setup Unity path shell: bash @@ -114,6 +122,7 @@ jobs: echo "SWIG_DIR=$(swig -swiglib)" >> $GITHUB_ENV - name: Build SDK (MacOS) + timeout-minutes: 90 shell: bash run: | # TODO add handling cmake_extras diff --git a/.github/workflows/build_starter.yml b/.github/workflows/build_starter.yml index e14b517a5..2777c445f 100644 --- a/.github/workflows/build_starter.yml +++ b/.github/workflows/build_starter.yml @@ -4,6 +4,9 @@ name: Firebase Unity SDK build on: schedule: - cron: "0 7 * * *" # 7am UTC = 11pm PST / 12am PDT + + pull_request: + types: [ labeled, closed ] workflow_dispatch: inputs: @@ -218,7 +221,6 @@ jobs: uses: ./.github/workflows/package.yml if: (needs.check_and_prepare.outputs.should_trigger_package == 'true') && !cancelled() && !failure() with: - triggered_by_callable: true release_label: ${{ needs.check_and_prepare.outputs.release_label }} skipIntegrationTests: ${{ needs.check_and_prepare.outputs.skipIntegrationTests }} build_run_id: ${{ github.run_id }} diff --git a/.github/workflows/build_windows.yml b/.github/workflows/build_windows.yml index 97448e4f5..e09af1de7 100644 --- a/.github/workflows/build_windows.yml +++ b/.github/workflows/build_windows.yml @@ -72,8 +72,12 @@ jobs: ruby-version: 3.0.2 - name: Install Unity installer (U3D) - shell: bash - run: gem install u3d -v 1.2.3 + uses: nick-invision/retry@v2 + with: + timeout_minutes: 10 + max_attempts: 3 + shell: bash + command: gem install u3d -v 1.2.3 - name: Setup python uses: actions/setup-python@v2 @@ -101,9 +105,13 @@ jobs: choco install openssl -r - name: Install Unity - shell: bash - run: | - python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} + uses: nick-invision/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 3 + shell: bash + command: | + python scripts/gha/unity_installer.py --install --platforms ${{ inputs.unity_platform_name }} --version ${{ inputs.unity_version }} - name: Setup Unity path shell: bash @@ -114,6 +122,7 @@ jobs: echo "SWIG_DIR=$(swig -swiglib)" >> $GITHUB_ENV - name: Build SDK (Windows) + timeout-minutes: 90 shell: bash run: | # TODO add handling cmake_extras diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index f0ab8e0d2..30d6f4900 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -9,6 +9,10 @@ on: workflow_dispatch: inputs: + packaged_sdk_run_id: + description: 'run # of "Firebase Unity SDK build" workflow' + default: '0' + required: true unity_versions: description: 'Unity version' default: '2019' @@ -29,16 +33,10 @@ on: description: 'Run mobile tests on real and/or virtual devices? (separated by commas)' default: 'real,virtual' required: true - sdk_url: - description: 'Download unity sdk from this URL' - default: 'https://dl.google.com/firebase/sdk/unity/firebase_unity_sdk_8.7.0.zip' - required: true use_expanded_matrix: description: 'Use an expanded matrix? Note: above config will be ignored.' default: '0' required: true - test_packaged_sdk: - description: 'Optional: Packaging run # to build against? (sdk_url will be ignored.)' test_pull_request: description: 'Optional: Pull request # to build and test? (With optional commit hash, separated by a colon. Specify the FULL hash.)' @@ -215,12 +213,14 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install Unity installer (U3D) - timeout-minutes: 10 - shell: bash - run: | - gem install u3d -v 1.2.3 - u3d available - # u3d available -u ${{ matrix.unity_version }} -p + uses: nick-invision/retry@v2 + with: + timeout_minutes: 10 + max_attempts: 3 + shell: bash + command: | + gem install u3d -v 1.2.3 + u3d available - name: Setup python uses: actions/setup-python@v2 with: @@ -231,12 +231,15 @@ jobs: run: | pip install -r scripts/gha/requirements.txt - name: Install Unity - timeout-minutes: 30 - shell: bash - run: | - python scripts/gha/unity_installer.py --install \ - --platforms ${{ matrix.platform }} \ - --version ${{ matrix.unity_version }} + uses: nick-invision/retry@v2 + with: + timeout_minutes: 30 + max_attempts: 3 + shell: bash + command: | + python scripts/gha/unity_installer.py --install \ + --platforms ${{ matrix.platform }} \ + --version ${{ matrix.unity_version }} - name: Activate Unity license timeout-minutes: 10 shell: bash @@ -254,26 +257,15 @@ jobs: python scripts/gha/restore_secrets.py --passphrase "${{ secrets.TEST_SECRET }}" - name: Fetch prebuilt packaged SDK from previous run uses: dawidd6/action-download-artifact@v2 - if: ${{ github.event.inputs.test_packaged_sdk != '' }} with: name: 'firebase_unity_sdk.zip' - workflow: 'packaging.yml' - run_id: ${{ github.event.inputs.test_packaged_sdk }} - + workflow: 'build_starter.yml' + run_id: ${{ github.event.inputs.packaged_sdk_run_id }} - name: Build integration tests + timeout-minutes: 180 shell: bash run: | - if [[ -n "${{ github.event.inputs.test_packaged_sdk }}" ]]; then - unzip -q firebase_unity_sdk.zip -d ~/Downloads/ - else - if [[ -z "${{ github.event.inputs.sdk_url }}" ]];then - sdk_url="https://dl.google.com/firebase/sdk/unity/firebase_unity_sdk_8.7.0.zip" - else - sdk_url=${{ github.event.inputs.sdk_url }} - fi - curl ${sdk_url} -o ~/Downloads/firebase_unity_sdk.zip - unzip -q ~/Downloads/firebase_unity_sdk.zip -d ~/Downloads/ - fi + unzip -q firebase_unity_sdk.zip -d ~/Downloads/ python scripts/gha/build_testapps.py \ --t ${{ needs.check_and_prepare.outputs.apis }} \ --u $( python scripts/gha/print_matrix_configuration.py -k version -u ${{matrix.unity_version}}) \ @@ -411,12 +403,14 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install Unity installer (U3D) - timeout-minutes: 10 - shell: bash - run: | - gem install u3d - u3d available - # u3d available -u ${{ matrix.unity_version }} -p + uses: nick-invision/retry@v2 + with: + timeout_minutes: 10 + max_attempts: 3 + shell: bash + command: | + gem install u3d + u3d available - name: Setup python uses: actions/setup-python@v2 with: @@ -427,11 +421,14 @@ jobs: run: | pip install -r scripts/gha/requirements.txt - name: Install Unity - timeout-minutes: 30 - shell: bash - run: | - python scripts/gha/unity_installer.py --install \ - --version ${{ matrix.unity_version }} + uses: nick-invision/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 3 + shell: bash + command: | + python scripts/gha/unity_installer.py --install \ + --version ${{ matrix.unity_version }} - name: Activate Unity license timeout-minutes: 10 shell: bash @@ -449,26 +446,14 @@ jobs: python scripts/gha/restore_secrets.py --passphrase "${{ secrets.TEST_SECRET }}" - name: Fetch prebuilt packaged SDK from previous run uses: dawidd6/action-download-artifact@v2 - if: ${{ github.event.inputs.test_packaged_sdk != '' }} with: name: 'firebase_unity_sdk.zip' - workflow: 'packaging.yml' - run_id: ${{ github.event.inputs.test_packaged_sdk }} - + workflow: 'build_starter.yml' + run_id: ${{ github.event.inputs.packaged_sdk_run_id }} - name: Run Playmode (in editor mode) integration tests shell: bash run: | - if [[ -n "${{ github.event.inputs.test_packaged_sdk }}" ]]; then - unzip -q firebase_unity_sdk.zip -d ~/Downloads/ - else - if [[ -z "${{ github.event.inputs.sdk_url }}" ]];then - sdk_url="https://dl.google.com/firebase/sdk/unity/firebase_unity_sdk_8.7.0.zip" - else - sdk_url=${{ github.event.inputs.sdk_url }} - fi - curl ${sdk_url} -o ~/Downloads/firebase_unity_sdk.zip - unzip -q ~/Downloads/firebase_unity_sdk.zip -d ~/Downloads/ - fi + unzip -q firebase_unity_sdk.zip -d ~/Downloads/ python scripts/gha/build_testapps.py \ --t ${{ needs.check_and_prepare.outputs.apis }} \ --u $( python scripts/gha/print_matrix_configuration.py -k version -u ${{matrix.unity_version}}) \ diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index a07b382d3..77a4a383e 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -4,11 +4,6 @@ name: Package SDKs on: workflow_call: inputs: - triggered_by_callable: - description: 'Check if this package grabs artifacts from new build workflow' - default: false - required: true - type: boolean skipIntegrationTests: description: 'skip integration tests?' default: '0' @@ -42,42 +37,6 @@ on: required: true type: string - workflow_dispatch: - inputs: - use_new_build: - description: 'Check if this package grabs artifacts from new build workflow' - default: '0' - required: true - skipIntegrationTests: - description: 'skip integration tests?' - default: '0' - required: false - create_new_branch: - description: 'Check if we need to create new branch to package guids update. If working_branch set, will ignore this value. ' - default: '0' - required: false - working_branch: - description: 'If already a working in progress release branch' - required: false - release_label: - description: 'If the package is intended to run for a release, put -RC## for label' - required: false - download_ios_run: - description: 'run id for ios.yml or build_starter.yml, search for ios_unity output' - required: false - download_android_run: - description: 'run id for android.yml or build_starter.yml, search for android_unity output' - required: false - download_linux_run: - description: 'run id for sdk_build.yml or build_starter.yml, search for linux_unity output' - required: false - download_macos_run: - description: 'run id for sdk_build.yml or build_starter.yml, search for macos_unity output' - required: false - download_windows_run: - description: 'run id for sdk_build.yml or build_starter.yml, search for windows_unity output' - required: false - env: # Use SHA256 for hashing files. @@ -98,42 +57,23 @@ jobs: id: decide_input shell: bash run: | - if [[ "${{ inputs.triggered_by_callable }}" == "true" ]]; then - # Triggered by callable - echo "::set-output name=use_new_build::'1'" - echo "::set-output name=workflow_conclusion::in_progress" - echo "::set-output name=skipIntegrationTests::${{ inputs.skipIntegrationTests }}" - echo "::set-output name=create_new_branch::${{ inputs.create_new_branch }}" - echo "::set-output name=release_label::${{ inputs.release_label }}" - echo "::set-output name=working_branch::${{ inputs.working_branch }}" - echo "::set-output name=download_android_run::${{ inputs.build_run_id }}" - echo "::set-output name=download_ios_run::${{ inputs.build_run_id }}" - echo "::set-output name=download_linux_run::${{ inputs.build_run_id }}" - echo "::set-output name=download_macos_run::${{ inputs.build_run_id }}" - echo "::set-output name=download_windows_run::${{ inputs.build_run_id }}" - echo "::set-output name=platforms::${{ inputs.platforms }}" - echo "::set-output name=apis::${{ inputs.apis }}" - else - echo "::set-output name=use_new_build::${{ github.event.inputs.use_new_build }}" - echo "::set-output name=workflow_conclusion::success" - echo "::set-output name=skipIntegrationTests::${{ github.event.inputs.skipIntegrationTests }}" - echo "::set-output name=create_new_branch::${{ github.event.inputs.create_new_branch }}" - echo "::set-output name=release_label::${{ github.event.inputs.release_label }}" - echo "::set-output name=working_branch::${{ github.event.inputs.working_branch }}" - echo "::set-output name=download_android_run::${{ github.event.inputs.download_android_run }}" - echo "::set-output name=download_ios_run::${{ github.event.inputs.download_ios_run }}" - echo "::set-output name=download_linux_run::${{ github.event.inputs.download_linux_run }}" - echo "::set-output name=download_macos_run::${{ github.event.inputs.download_macos_run }}" - echo "::set-output name=download_windows_run::${{ github.event.inputs.download_windows_run }}" - echo "::set-output name=platforms::Android,iOS,Windows,macOS,Linux,Playmode" - echo "::set-output name=apis::analytics,auth,crashlytics,database,dynamic_links,firestore,functions,installations,messaging,remote_config,storage" - fi + # Triggered by callable + echo "::set-output name=workflow_conclusion::in_progress" + echo "::set-output name=skipIntegrationTests::${{ inputs.skipIntegrationTests }}" + echo "::set-output name=create_new_branch::${{ inputs.create_new_branch }}" + echo "::set-output name=release_label::${{ inputs.release_label }}" + echo "::set-output name=working_branch::${{ inputs.working_branch }}" + echo "::set-output name=download_android_run::${{ inputs.build_run_id }}" + echo "::set-output name=download_ios_run::${{ inputs.build_run_id }}" + echo "::set-output name=download_linux_run::${{ inputs.build_run_id }}" + echo "::set-output name=download_macos_run::${{ inputs.build_run_id }}" + echo "::set-output name=download_windows_run::${{ inputs.build_run_id }}" + echo "::set-output name=platforms::${{ inputs.platforms }}" + echo "::set-output name=apis::${{ inputs.apis }}" - name: Print inputs shell: bash run: | - echo triggered_by_callable: ${{ inputs.triggered_by_callable }} - echo use_new_build: ${{ steps.decide_input.outputs.use_new_build }} echo workflow_conclusion: ${{ steps.decide_input.outputs.workflow_conclusion }} echo skipIntegrationTests: ${{ steps.decide_input.outputs.skipIntegrationTests }} echo create_new_branch: ${{ steps.decide_input.outputs.create_new_branch }} @@ -196,111 +136,10 @@ jobs: git checkout ${{ steps.decide_input.outputs.working_branch }} echo "UPDATE_LOGFILE=update_log.txt" >> $GITHUB_ENV echo "NEW_BRANCH=${{ steps.decide_input.outputs.working_branch }}" >> $GITHUB_ENV - - - name: Fetch Android Artifacts (OLD) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='0') - with: - workflow: android.yml - run_id: ${{ steps.decide_input.outputs.download_android_run }} - name: android_unity - path: built_artifact - - - name: Fetch iOS Artifacts (OLD) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='0') - with: - workflow: ios.yml - run_id: ${{ steps.decide_input.outputs.download_ios_run }} - name: ios_unity - path: built_artifact - - - name: Fetch Linux Artifacts (OLD) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='0') - with: - workflow: sdk_build.yml - run_id: ${{ steps.decide_input.outputs.download_linux_run }} - name: linux_unity - path: built_artifact - - - name: Fetch MacOS Artifacts (OLD) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='0') - with: - workflow: sdk_build.yml - run_id: ${{ steps.decide_input.outputs.download_macos_run }} - name: macos_unity - path: built_artifact - - - name: Fetch Windows Artifacts (OLD) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='0') - with: - workflow: sdk_build.yml - run_id: ${{ steps.decide_input.outputs.download_windows_run }} - name: windows_unity - path: built_artifact - - - name: Fetch Android Artifacts (NEW) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='1') - with: - workflow: build_starter.yml - run_id: ${{ steps.decide_input.outputs.download_android_run }} - name: android_unity - path: built_artifact - - - name: Fetch iOS Artifacts (NEW) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='1') - with: - workflow: build_starter.yml - run_id: ${{ steps.decide_input.outputs.download_ios_run }} - name: ios_unity - path: built_artifact - - - name: Fetch Linux Artifacts (NEW) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='1') - with: - workflow: build_starter.yml - run_id: ${{ steps.decide_input.outputs.download_linux_run }} - name: linux_unity - path: built_artifact - - - name: Fetch MacOS Artifacts (NEW) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='1') - with: - workflow: build_starter.yml - run_id: ${{ steps.decide_input.outputs.download_macos_run }} - name: macos_unity - path: built_artifact - - - name: Fetch Windows Artifacts (NEW) - uses: dawidd6/action-download-artifact@v2 - continue-on-error: true - if: (inputs.triggered_by_callable==false) && (steps.decide_input.outputs.use_new_build=='1') - with: - workflow: build_starter.yml - run_id: ${{ steps.decide_input.outputs.download_windows_run }} - name: windows_unity - path: built_artifact # If called by build_start.xml, ignore name search, just grab all artifact exists - name: Fetch All in build_starter uses: actions/download-artifact@v3 - if: inputs.triggered_by_callable==true with: path: built_artifact @@ -461,7 +300,7 @@ jobs: python scripts/gha/trigger_workflow.py \ -t ${{ steps.generate-token.outputs.token }} \ -w integration_tests.yml \ - -p test_packaged_sdk ${{ github.run_id }} \ + -p packaged_sdk_run_id ${{ github.run_id }} \ -p platforms ${{ needs.package_sdks.outputs.platforms }} \ -p apis ${{ needs.package_sdks.outputs.apis }} \ -s 10 -A -v diff --git a/scripts/gha/print_matrix_configuration.py b/scripts/gha/print_matrix_configuration.py index d2dc91367..a72f5fd35 100644 --- a/scripts/gha/print_matrix_configuration.py +++ b/scripts/gha/print_matrix_configuration.py @@ -83,12 +83,12 @@ _WINDOWS: { "version": "2020.3.34f1", "packages": {"Default": ["Unity"], "Android": ["Android"], "iOS": ["Ios"], "Windows": None, "macOS": ["Mac-mono"], "Linux": ["Linux-mono"]}, - "ndk": "https://dl.google.com/android/repository/android-ndk-r21e-windows-x86_64.zip" + "ndk": "https://dl.google.com/android/repository/android-ndk-r19-windows-x86_64.zip" }, _MACOS: { "version": "2020.3.34f1", "packages": {"Default": ["Unity"], "Android": ["Android"], "iOS": ["Ios"], "Windows": ["Windows-mono"], "macOS": None, "Linux": ["Linux-mono"]}, - "ndk": "https://dl.google.com/android/repository/android-ndk-r21e-darwin-x86_64.zip" + "ndk": "https://dl.google.com/android/repository/android-ndk-r19-darwin-x86_64.zip" }, _LINUX: { "version": "2020.3.29f1", @@ -99,12 +99,12 @@ _WINDOWS: { "version": "2019.4.39f1", "packages": {"Default": ["Unity"], "Android": ["Android"], "iOS": ["Ios"], "Windows": None, "macOS": ["Mac-mono"], "Linux": ["Linux-mono"]}, - "ndk": "https://dl.google.com/android/repository/android-ndk-r21e-windows-x86_64.zip" + "ndk": "https://dl.google.com/android/repository/android-ndk-r19-windows-x86_64.zip" }, _MACOS: { "version": "2019.4.39f1", "packages": {"Default": ["Unity"], "Android": ["Android"], "iOS": ["Ios"], "Windows": ["Windows-mono"], "macOS": None, "Linux": ["Linux-mono"]}, - "ndk": "https://dl.google.com/android/repository/android-ndk-r21e-darwin-x86_64.zip" + "ndk": "https://dl.google.com/android/repository/android-ndk-r19-darwin-x86_64.zip" }, _LINUX: { "version": "2019.4.40f1", @@ -115,12 +115,12 @@ _WINDOWS: { "version": "2018.4.36f1", "packages": {"Default": ["Unity"], "Android": ["Android"], "iOS": ["Ios"], "Windows": ["Windows-il2cpp"], "macOS": ["Mac-mono"], "Linux": ["Linux"]}, - "ndk": "https://dl.google.com/android/repository/android-ndk-r21e-windows-x86_64.zip" + "ndk": "https://dl.google.com/android/repository/android-ndk-r16b-windows-x86_64.zip" }, _MACOS: { "version": "2018.4.36f1", "packages": {"Default": ["Unity"], "Android": ["Android"], "iOS": ["Ios"], "Windows": ["Windows-mono"], "macOS": ["Mac-il2cpp"], "Linux": ["Linux"]}, - "ndk": "https://dl.google.com/android/repository/android-ndk-r21e-darwin-x86_64.zip" + "ndk": "https://dl.google.com/android/repository/android-ndk-r16b-darwin-x86_64.zip" }, _LINUX: { "version": "2018.3.0f2",