This repository has been archived by the owner on Dec 13, 2023. It is now read-only.
Fix crash and sync #354
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Android CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ master ] | |
pull_request: | |
jobs: | |
build: | |
name: Build on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
if: ${{ !startsWith(github.event.head_commit.message, '[skip ci]') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest ] | |
env: | |
CCACHE_COMPILERCHECK: '%compiler% -dumpmachine; %compiler% -dumpversion' | |
CCACHE_NOHASHDIR: 'true' | |
CCACHE_HARDLINK: 'true' | |
CCACHE_BASEDIR: '${{ github.workspace }}' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: Write key | |
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/master' | |
run: | | |
if [ ! -z "${{ secrets.KEY_STORE }}" ]; then | |
echo androidStorePassword='${{ secrets.KEY_STORE_PASSWORD }}' >> gradle.properties | |
echo androidKeyAlias='${{ secrets.ALIAS }}' >> gradle.properties | |
echo androidKeyPassword='${{ secrets.KEY_PASSWORD }}' >> gradle.properties | |
echo androidStoreFile='key.jks' >> gradle.properties | |
echo ${{ secrets.KEY_STORE }} | base64 --decode > key.jks | |
fi | |
- name: Checkout libxposed/api | |
uses: actions/checkout@v3 | |
with: | |
repository: libxposed/api | |
path: libxposed/api | |
- name: Checkout libxposed/service | |
uses: actions/checkout@v3 | |
with: | |
repository: libxposed/service | |
path: libxposed/service | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
with: | |
gradle-home-cache-cleanup: true | |
- name: Set up ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
max-size: 2G | |
key: ${{ runner.os }} | |
restore-keys: ${{ runner.os }} | |
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
- name: Build dependencies | |
working-directory: libxposed | |
run: | | |
cd api | |
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties | |
./gradlew :api:publishApiPublicationToMavenLocal | |
cd .. | |
cd service | |
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties | |
./gradlew :interface:publishInterfacePublicationToMavenLocal | |
- name: Build with Gradle | |
run: | | |
echo 'org.gradle.caching=true' >> gradle.properties | |
echo 'org.gradle.parallel=true' >> gradle.properties | |
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties | |
echo 'android.native.buildOutput=verbose' >> gradle.properties | |
./gradlew buildAll | |
- name: Upload Debug artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: lspatch-debug | |
path: out/debug/* | |
- name: Upload Release artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: lspatch-release | |
path: out/release/* | |
- name: Upload mappings | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mappings | |
path: | | |
patch-loader/build/outputs/mapping | |
manager/build/outputs/mapping | |
- name: Upload symbols | |
uses: actions/upload-artifact@v3 | |
with: | |
name: symbols | |
path: | | |
patch-loader/build/symbols | |
- name: Post to channel | |
if: ${{ github.event_name != 'pull_request' && success() && github.ref == 'refs/heads/master' }} | |
env: | |
CHANNEL_ID: ${{ secrets.CHANNEL_ID }} | |
DISCUSSION_ID: ${{ secrets.DISCUSSION_ID }} | |
TOPIC_ID: ${{ secrets.TOPIC_ID }} | |
BOT_TOKEN: ${{ secrets.BOT_TOKEN }} | |
COMMIT_MESSAGE: ${{ github.event.head_commit.message }} | |
COMMIT_URL: ${{ github.event.head_commit.url }} | |
run: | | |
if [ ! -z "${{ secrets.BOT_TOKEN }}" ]; then | |
export jarRelease=$(find out/release -name "*.jar") | |
export managerRelease=$(find out/release -name "*.apk") | |
export jarDebug=$(find out/debug -name "*.jar") | |
export managerDebug=$(find out/debug -name "*.apk") | |
ESCAPED=`python3 -c 'import json,os,urllib.parse; msg = json.dumps(os.environ["COMMIT_MESSAGE"]); print(urllib.parse.quote(msg if len(msg) <= 1024 else json.dumps(os.environ["COMMIT_URL"])))'` | |
curl -v "https://api.telegram.org/bot${BOT_TOKEN}/sendMediaGroup?chat_id=${CHANNEL_ID}&media=%5B%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FjarRelease%22%7D%2C%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FmanagerRelease%22%7D%2C%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FjarDebug%22%7D%2C%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FmanagerDebug%22%2C%22caption%22:${ESCAPED}%7D%5D" -F jarRelease="@$jarRelease" -F managerRelease="@$managerRelease" -F jarDebug="@$jarDebug" -F managerDebug="@$managerDebug" | |
curl -v "https://api.telegram.org/bot${BOT_TOKEN}/sendMediaGroup?chat_id=${DISCUSSION_ID}&message_thread_id=${TOPIC_ID}&media=%5B%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FjarRelease%22%7D%2C%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FmanagerRelease%22%7D%2C%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FjarDebug%22%7D%2C%7B%22type%22%3A%22document%22%2C%20%22media%22%3A%22attach%3A%2F%2FmanagerDebug%22%2C%22caption%22:${ESCAPED}%7D%5D" -F jarRelease="@$jarRelease" -F managerRelease="@$managerRelease" -F jarDebug="@$jarDebug" -F managerDebug="@$managerDebug" | |
fi |