Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 206 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
# This is a basic workflow to help you get started with Actions

name: build

# Controls when the workflow will run
on:
push:
branches:
- master
- ytdl-ci
pull_request:
branches: [master]



# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
vanilla:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y autoconf pkg-config libtool ninja-build python3-pip \
python3-setuptools unzip openssl ca-certificates nasm
sudo pip3 install meson
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: remove old ndk
run: sdkmanager --uninstall "ndk;21.4.7075529"
#rm -rf sdkmanager /usr/local/lib/android/sdk/ndk-bundle
- name: Install NDK
#run: sdkmanager --list
run: sdkmanager "ndk;23.2.8568313"
- name: download-deps
working-directory: ./buildscripts
run: |
export mpvarchoverride=armv7l
export ISGIT=yes
chmod +x github-prepare.sh
./github-prepare.sh
- name: build-apk
working-directory: ./buildscripts
run: |
./buildall.sh -n
- name: relocate apks
run: |
mkdir -p app/build/outputs/apk/release
cp "./app/build/outputs/apk/default/release/app-default-release-unsigned.apk" app/build/outputs/apk/release/mpv-default.apk
cp "./app/build/outputs/apk/api29/release/app-api29-release-unsigned.apk" app/build/outputs/apk/release/mpv-api29.apk
cp "./app/build/outputs/apk/api29/debug/app-api29-debug.apk" app/build/outputs/apk/release/mpv-api29-debug.apk
cp "./app/build/outputs/apk/default/debug/app-default-debug.apk" app/build/outputs/apk/release/mpv-default-debug.apk
- name: Sign APK
uses: r0adkll/sign-android-release@v1
# ID used to access action output
id: sign_app
with:
releaseDirectory: app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
# keyPassword: ${{ secrets.KEY_PASSWORD }}
- name : upload APKs
uses: actions/upload-artifact@v2
with:
name: Vanilla-Build
path: |
app/build/outputs/apk/release/mpv-default-signed.apk
app/build/outputs/apk/release/mpv-api29-signed.apk
app/build/outputs/apk/release/mpv-default-debug-signed.apk
app/build/outputs/apk/release/mpv-api29-debug-signed.apk


x86_64:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y autoconf coreutils pkg-config libtool ninja-build python3-pip \
python3-setuptools unzip openssl ca-certificates nasm
sudo pip3 install meson
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: remove old ndk
run: sdkmanager --uninstall "ndk;21.4.7075529"
rm -rf sdkmanager /usr/local/lib/android/sdk/ndk-bundle
- name: Install NDK
run: sdkmanager "ndk;23.2.8568313"
- name: download-deps
working-directory: ./buildscripts
run: |
export mpvarchoverride=x86_64
export ISGIT=yes
chmod +x github-prepare.sh
./github-prepare.sh x86_64
- name: build-apk
working-directory: ./buildscripts
run: |
./buildall.sh -n
- name: relocate apks
run: |
mkdir -p app/build/outputs/apk/release
cp "./app/build/outputs/apk/default/release/app-default-release-unsigned.apk" app/build/outputs/apk/release/mpv-default.apk
cp "./app/build/outputs/apk/api29/release/app-api29-release-unsigned.apk" app/build/outputs/apk/release/mpv-api29.apk
cp "./app/build/outputs/apk/api29/debug/app-api29-debug.apk" app/build/outputs/apk/release/mpv-api29-debug.apk
cp "./app/build/outputs/apk/default/debug/app-default-debug.apk" app/build/outputs/apk/release/mpv-default-debug.apk
- name: Sign APK
uses: r0adkll/sign-android-release@v1
# ID used to access action output
id: sign_app
with:
releaseDirectory: app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
- name : upload APKs
uses: actions/upload-artifact@v2
with:
name: x86_64-Build
path: |
app/build/outputs/apk/release/mpv-default-signed.apk
app/build/outputs/apk/release/mpv-api29-signed.apk
app/build/outputs/apk/release/mpv-default-debug-signed.apk
app/build/outputs/apk/release/mpv-api29-debug-signed.apk
Arm86:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y autoconf pkg-config libtool ninja-build python3-pip \
python3-setuptools unzip openssl ca-certificates nasm
sudo pip3 install meson
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: remove old ndk
run: sdkmanager --uninstall "ndk;21.4.7075529"
rm -rf sdkmanager /usr/local/lib/android/sdk/ndk-bundle
- name: Install NDK
run: sdkmanager "ndk;23.2.8568313"
- name: download-deps
working-directory: ./buildscripts
run: |
export mpvarchoverride=arm64
export ISGIT=yes
chmod +x github-prepare.sh
./github-prepare.sh arm64
- name: build-apk
working-directory: ./buildscripts
run: |
./buildall.sh -n
- name: relocate apks
run: |
mkdir -p app/build/outputs/apk/release
cp "./app/build/outputs/apk/default/release/app-default-release-unsigned.apk" app/build/outputs/apk/release/mpv-default.apk
cp "./app/build/outputs/apk/api29/release/app-api29-release-unsigned.apk" app/build/outputs/apk/release/mpv-api29.apk
cp "./app/build/outputs/apk/api29/debug/app-api29-debug.apk" app/build/outputs/apk/release/mpv-api29-debug.apk
cp "./app/build/outputs/apk/default/debug/app-default-debug.apk" app/build/outputs/apk/release/mpv-default-debug.apk
- name: Sign APK
uses: r0adkll/sign-android-release@v1
# ID used to access action output
id: sign_app
with:
releaseDirectory: app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
- name : upload APKs
uses: actions/upload-artifact@v2
with:
name: Arm-Build
path: |
app/build/outputs/apk/release/mpv-default-signed.apk
app/build/outputs/apk/release/mpv-api29-signed.apk
app/build/outputs/apk/release/mpv-default-debug-signed.apk
app/build/outputs/apk/release/mpv-api29-debug-signed.apk
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
.gdb_history
bin
gen
Dockerfile
libs
obj
.gradle
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/jni/Android.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
LOCAL_PATH:= $(call my-dir)

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
PREFIX = $(PREFIX32)
endif
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
PREFIX = $(PREFIX64)
endif
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/jni/Application.mk
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
ifneq ($(PREFIX32),)
APP_ABI := armeabi-v7a
endif
ifneq ($(PREFIX64),)
APP_ABI += arm64-v8a
endif
Expand Down
7 changes: 7 additions & 0 deletions buildscripts/buildall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@ cleanbuild=0
nodeps=0
clang=1
target=mpv-android

if [ -z $mpvarchoverride ]
then
arch=armv7l
else
arch=$mpvarchoverride
fi

getdeps () {
varname="dep_${1//-/_}[*]"
Expand Down Expand Up @@ -118,6 +124,7 @@ usage () {
echo "--clean Clean build dirs before compiling"
echo "--gcc Use gcc compiler (unsupported!)"
echo "--arch <arch> Build for specified architecture (default: $arch; supported: armv7l, arm64, x86_64)"
echo "--no32 <arch> Build only for specified architecture (supported: armv7l, arm64, x86_64)"
exit 0
}

Expand Down
36 changes: 36 additions & 0 deletions buildscripts/github-prepare.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/bash -e

. ./include/depinfo.sh
export WGET="wget"

echo "==> Fetching mpv"
mkdir -p deps/mpv
$WGET https://github.com/mpv-player/mpv/archive/master.tar.gz -O master.tgz
tar -xzf master.tgz -C deps/mpv --strip-components=1 && rm master.tgz

echo "==> Trying to fetch existing prefix"
mkdir -p build_prefix

echo "==> Fetching deps"
./include/download-deps.sh


if [ "$1" == "arm64" ]; then
./buildall.sh --arch arm64 mpv
elif [ "$1" == "x86_64" ]; then
./buildall.sh --arch x86_64 mpv
fi

# build everything mpv depends on (but not mpv itself)
for x in ${dep_mpv[@]}; do
echo "==> Building $x"
./buildall.sh $x
done

echo "==> Building mpv"
./buildall.sh -n mpv || {
# show logfile if configure failed
[ ! -f deps/mpv/_build/config.h ] && cat deps/mpv/_build/config.log
exit 1
}
exit 0
13 changes: 10 additions & 3 deletions buildscripts/include/path.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ if [ -n "$ndk_triple" ]; then
unset PKG_CONFIG_PATH
fi

toolchain=$(echo "$DIR/sdk/android-ndk-r24/toolchains/llvm/prebuilt/"*)
export PATH="$toolchain/bin:$DIR/sdk/android-ndk-r24:$DIR/sdk/bin:$PATH"
export ANDROID_HOME="$DIR/sdk/android-sdk-$os"
if [ "$ISGIT" == "yes" ]; then
SDK=/usr/local/lib/android/sdk
else
SDK=/opt/android-sdk
fi

NDK=$SDK/ndk/23.2.8568313

toolchain=$(echo "$NDK/toolchains/llvm/prebuilt/"*)
export PATH="$toolchain/bin:$NDK:$SDK/bin:$PATH"
3 changes: 2 additions & 1 deletion buildscripts/scripts/mpv-android.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ nativeprefix () {
fi
}

prefix32=$(nativeprefix "armv7l")
prefix64=$(nativeprefix "arm64")
prefix_x64=$(nativeprefix "x86_64")
prefix_x86=$(nativeprefix "x86")

PREFIX=$BUILD/prefix/armv7l PREFIX64=$prefix64 PREFIX_X64=$prefix_x64 PREFIX_X86=$prefix_x86 \
PREFIX=$BUILD/prefix/armv7l PREFIX64=$prefix64 PREFIX32=$prefix32 PREFIX_X64=$prefix_x64 PREFIX_X86=$prefix_x86 \
ndk-build -C app/src/main -j$cores
./gradlew assembleDebug assembleRelease

Expand Down