name: Android CI on: push: pull_request: workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Checkout libxposed/api uses: actions/checkout@v4 with: repository: libxposed/api ref: 64e29bd657ef4d2540b34402f5a988778f29e676 path: libxposed/api fetch-depth: 0 - name: set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: gradle - name: Write key if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' run: | if [ ! -z "${{ secrets.SIGNING_KEY }}" ]; then echo storePassword='${{ secrets.KEY_STORE_PASSWORD }}' >> local.properties echo keyAlias='${{ secrets.ALIAS }}' >> local.properties echo keyPassword='${{ secrets.KEY_PASSWORD }}' >> local.properties echo storeFile='key.jks' >> local.properties echo ${{ secrets.SIGNING_KEY }} | base64 --decode > key.jks fi - name: Build with Gradle run: | # gradle properties mkdir -p ~/.gradle echo 'org.gradle.caching=true' >> ~/.gradle/gradle.properties echo 'org.gradle.parallel=true' >> ~/.gradle/gradle.properties echo 'org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -XX:+UseParallelGC' >> ~/.gradle/gradle.properties echo 'android.native.buildOutput=verbose' >> ~/.gradle/gradle.properties # build dependencies cd libxposed/api && ./gradlew publishToMavenLocal && cd ../.. # build DisableFlagSecure chmod +x gradlew ./gradlew assembleRelease assembleDebug - name: Upload artifact uses: actions/upload-artifact@v4 with: name: Signed app bundle path: app/build/outputs/apk