Dex Modification Modes #102
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: | |
push: | |
branches: [ master ] | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
build: | |
name: Build | |
runs-on: 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@v4 | |
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@main | |
with: | |
repository: libxposed/api | |
path: libxposed/api | |
ref: 54582730315ba4a3d7cfaf9baf9d23c419e07006 | |
- name: Checkout libxposed/service | |
uses: actions/checkout@main | |
with: | |
repository: libxposed/service | |
path: libxposed/service | |
- name: Setup Java | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '21' | |
distribution: 'temurin' | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-home-cache-cleanup: true | |
- name: Setup ninja | |
uses: seanmiddleditch/gha-setup-ninja@master | |
with: | |
version: 1.12.0 | |
- name: Remove Android's cmake | |
shell: bash | |
run: rm -rf $ANDROID_HOME/cmake | |
- name: Build dependencies with Gradle | |
working-directory: libxposed | |
run: | | |
cd api | |
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties | |
./gradlew :api:publishApiPublicationToMavenLocal | |
cd ../service | |
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties | |
./gradlew :interface:publishInterfacePublicationToMavenLocal | |
- name: Set short commit id | |
run: echo "commit=$(echo ${{ github.sha }} | cut -c-7)" > $GITHUB_ENV | |
- name: Build core with Gradle | |
run: | | |
{ | |
echo 'org.gradle.parallel=true' | |
echo 'org.gradle.jvmargs=-Xmx2048m' | |
echo 'android.native.buildOutput=verbose' | |
} >> gradle.properties | |
./gradlew buildAll | |
- name: Upload Debug artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: lspatch-debug-${{ env.commit }} | |
path: out/debug/* | |
- name: Upload Release artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: lspatch-release-${{ env.commit }} | |
path: out/release/* | |
- name: Upload mappings | |
uses: actions/upload-artifact@v4 | |
with: | |
name: mappings-${{ env.commit }} | |
path: | | |
patch-loader/build/outputs/mapping | |
manager/build/outputs/mapping | |
- name: Upload symbols | |
uses: actions/upload-artifact@v4 | |
with: | |
name: symbols-${{ env.commit }} | |
path: | | |
patch-loader/build/symbols | |
- name: Post to channel | |
if: ${{ github.event_name != 'pull_request' && success() && github.ref == 'refs/heads/master' }} && false | |
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 |