commit 25caf52dfe4faea8e925fdf48c39fbbb3f04495f
parent dadf4dc00ed3d55ca1fdd6251341b13c8997cda7
Author: auth <64337177+authorisation@users.noreply.github.com>
Date:   Tue, 30 May 2023 19:47:23 +0200

add: release CI


Diffstat:
A.github/workflows/release.yml | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapp/build.gradle | 58++++++++--------------------------------------------------
2 files changed, 82 insertions(+), 50 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml @@ -0,0 +1,74 @@ +name: Release CI +on: + workflow_dispatch: +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Clean Gradle Cache + run: ./gradlew clean + + - name: Build Release APK + run: ./gradlew assembleRelease + + - name: Sign armv7 APK + id: sign_armv7_app + uses: kevin-david/zipalign-sign-android-release@v1.1 + with: + releaseDirectory: app/build/outputs/apk/armv7/release/ + signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }} + alias: ${{ secrets.KEYSTORE_ALIAS }} + keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} + keyPassword: ${{ secrets.KEYSTORE_KEY_PASSWORD }} + + - name: Upload armv7 artifact + uses: actions/upload-artifact@v3.1.2 + with: + name: app-armv7-release + path: ${{ steps.sign_armv7_app.outputs.signedReleaseFile }} + + - name: Sign armv8 APK + id: sign_armv8_app + uses: kevin-david/zipalign-sign-android-release@v1.1 + with: + releaseDirectory: app/build/outputs/apk/armv8/release/ + signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }} + alias: ${{ secrets.KEYSTORE_ALIAS }} + keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} + keyPassword: ${{ secrets.KEYSTORE_KEY_PASSWORD }} + + - name: Upload armv8 artifact + uses: actions/upload-artifact@v3.1.2 + with: + name: app-armv8-release + path: ${{ steps.sign_armv8_app.outputs.signedReleaseFile }} + + - name: Generate Version + run: | + ./gradlew getVersion + + - name: Set Version to Environment + id: version-env + run: echo "version=$(cat app/build/version.txt)" >> $GITHUB_ENV + + - name: Publish APK + uses: marvinpinto/action-automatic-releases@latest + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + prerelease: false + files: | + ${{ steps.sign_armv7_app.outputs.signedReleaseFile }} + ${{ steps.sign_armv8_app.outputs.signedReleaseFile }} + automatic_release_tag: v${{ env.version }} diff --git a/app/build.gradle b/app/build.gradle @@ -6,8 +6,7 @@ plugins { } def appVersionName = "0.1.1" -def appVersionCode = 1 -def lspatchReleaseUrl = "https://api.github.com/repos/LSPosed/LSPatch/releases/latest" +def appVersionCode = 3 android { compileSdk 33 @@ -56,12 +55,6 @@ android { } dimension "release" } - prod { - ndk { - abiFilter("none") - } - dimension "release" - } } kotlinOptions { @@ -71,48 +64,6 @@ android { } afterEvaluate { - getTasks().getByPath(":app:assembleProdDebug").doLast { - def apkReleaseFile = android.applicationVariants.find { it.buildType.name == "debug" && it.flavorName == "prod" }.outputs[0].outputFile - - //download the target apk - println "Downloading target apk" - def targetApkFile = new File("${buildDir}/${apkReleaseFile.name}") - try { - def targetApkUrl = project.property("targetApkUrl") - targetApkFile.withOutputStream { out -> - new URL(targetApkUrl).withInputStream { input -> - out << input - } - } - } catch (Throwable ignored) { - println "No target apk url provided" - return - } - - //download the latest lspatch jar - def connection = new URL(lspatchReleaseUrl).openConnection() - def json = new JsonSlurper().parseText(connection.getInputStream().getText()) - def downloadUrl = json.assets[0].browser_download_url - println "Downloading LSPatch from ${downloadUrl}" - - def lspatchJarfile = new File("${buildDir}/lspatch.jar") - lspatchJarfile.withOutputStream { out -> - new URL(downloadUrl).withInputStream { input -> - out << input - } - } - - println "Executing LSPatch" - exec { - commandLine "java", "-jar", lspatchJarfile.absolutePath, - targetApkFile.absolutePath, - "--force", "-l", "2", "-m", - apkReleaseFile.absolutePath, - "-o", - "${buildDir}/outputs/apk/lspatch/debug/" - } - } - //auto install for debug purpose getTasks().getByPath(":app:assembleArmv8Debug").doLast { def apkDebugFile = android.applicationVariants.find { it.buildType.name == "debug" && it.flavorName == "armv8" }.outputs[0].outputFile @@ -136,6 +87,13 @@ afterEvaluate { } } +task getVersion { + doLast { + def version = new File('app/build/version.txt') + version.text = android.defaultConfig.versionName + } +} + dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1' implementation 'org.jetbrains.kotlin:kotlin-reflect:1.8.21'