name: "Native build" description: "Performs native builds" inputs: cache: description: "Whether to use the cache or not" required: true runs: using: "composite" steps: - name: Load ffmpeg module cache id: cache_ffmpeg_module if: ${{ inputs.cache }} uses: actions/cache/restore@v4 with: path: | app/libs key: ${{ runner.os }}-ffmpeg-${{ hashFiles('**/libs.versions.toml', '**/scripts/ffmpeg/build_ffmpeg_decoder.sh') }} - name: Build ffmpeg decoder id: ffmpeg-decoder if: steps.cache_ffmpeg_module.outputs.cache-hit != 'true' shell: bash run: | cd scripts/ffmpeg ./build_ffmpeg_decoder.sh "${{ env.ANDROID_SDK_ROOT }}/ndk/${{ env.NDK_VERSION }}" - name: Save ffmpeg module cache id: cache_ffmpeg_module_save uses: actions/cache/save@v4 with: path: | app/libs key: ${{ steps.cache_ffmpeg_module.outputs.cache-primary-key }} - name: Load libmpv module cache id: cache_libmpv_module if: ${{ inputs.cache }} uses: actions/cache/restore@v4 with: path: | app/src/main/libs key: ${{ runner.os }}-libmpv-${{ hashFiles('**/scripts/mpv/*.sh', '**/scripts/mpv/include/*', '**/scripts/mpv/scripts/*', 'app/src/main/jni/*') }} - name: Install dependencies if: steps.cache_libmpv_module.outputs.cache-hit != 'true' shell: bash run: | python -m pip install --upgrade pip pip install jsonschema jinja2 sudo apt update sudo apt install -y build-essential autoconf pkg-config libtool ninja-build unzip wget meson - name: Get libmpv dependencies if: steps.cache_libmpv_module.outputs.cache-hit != 'true' shell: bash run: | cd scripts/mpv ./get_dependencies.sh - name: Build libmpv dependencies if: steps.cache_libmpv_module.outputs.cache-hit != 'true' shell: bash run: | cd scripts/mpv ./buildall.sh --clean --arch arm64 mpv ./buildall.sh mpv cd ../.. env PREFIX32="$(realpath scripts/mpv/prefix/armv7l)" PREFIX64="$(realpath scripts/mpv/prefix/arm64)" ndk-build -C app/src/main -j - name: Setup jniLibs shell: bash run: | cd app/src/main mkdir -p jniLibs cp -r libs/* jniLibs #ln -s libs jniLibs - name: Save libmpv module cache id: cache_libmpv_module_save uses: actions/cache/save@v4 with: path: | app/src/main/libs key: ${{ steps.cache_libmpv_module.outputs.cache-primary-key }}