diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 64a67372e..ea341b14b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,27 +42,21 @@ jobs: - name: Build run: ./gradlew assembleRelease -Pinclude-telemetry -Penable-updater - - - name: Sign APK - uses: r0adkll/sign-android-release@a391126403df92c6a0a3988a829dd47f79b89ed7 - with: - releaseDirectory: app/build/outputs/apk/release - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} env: - BUILD_TOOLS_VERSION: '35.0.1' + storeFileBase64: ${{ secrets.SIGNING_KEY }} + storePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyAlias: ${{ secrets.ALIAS }} + keyPassword: ${{ secrets.KEY_PASSWORD }} - name: Rename APK run: | set -e - mv app/build/outputs/apk/release/app-universal-release-unsigned-signed.apk mihon-${{ needs.get_tag.outputs.tag }}.apk - mv app/build/outputs/apk/release/app-arm64-v8a-release-unsigned-signed.apk mihon-arm64-v8a-${{ needs.get_tag.outputs.tag }}.apk - mv app/build/outputs/apk/release/app-armeabi-v7a-release-unsigned-signed.apk mihon-armeabi-v7a-${{ needs.get_tag.outputs.tag }}.apk - mv app/build/outputs/apk/release/app-x86-release-unsigned-signed.apk mihon-x86-${{ needs.get_tag.outputs.tag }}.apk - mv app/build/outputs/apk/release/app-x86_64-release-unsigned-signed.apk mihon-x86_64-${{ needs.get_tag.outputs.tag }}.apk + mv app/build/outputs/apk/release/app-universal-release.apk mihon-${{ needs.get_tag.outputs.tag }}.apk + mv app/build/outputs/apk/release/app-arm64-v8a-release.apk mihon-arm64-v8a-${{ needs.get_tag.outputs.tag }}.apk + mv app/build/outputs/apk/release/app-armeabi-v7a-release.apk mihon-armeabi-v7a-${{ needs.get_tag.outputs.tag }}.apk + mv app/build/outputs/apk/release/app-x86-release.apk mihon-x86-${{ needs.get_tag.outputs.tag }}.apk + mv app/build/outputs/apk/release/app-x86_64-release.apk mihon-x86_64-${{ needs.get_tag.outputs.tag }}.apk - name: Upload APK uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 @@ -98,23 +92,17 @@ jobs: - name: Build run: ./gradlew assembleFoss -Penable-updater - - - name: Sign APK - uses: r0adkll/sign-android-release@a391126403df92c6a0a3988a829dd47f79b89ed7 - with: - releaseDirectory: app/build/outputs/apk/foss - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} env: - BUILD_TOOLS_VERSION: '35.0.1' + storeFileBase64: ${{ secrets.SIGNING_KEY }} + storePassword: ${{ secrets.KEY_STORE_PASSWORD }} + keyAlias: ${{ secrets.ALIAS }} + keyPassword: ${{ secrets.KEY_PASSWORD }} - name: Rename APK run: | set -e - mv app/build/outputs/apk/foss/app-universal-foss-unsigned-signed.apk mihon-${{ needs.get_tag.outputs.tag }}-foss.apk + mv app/build/outputs/apk/foss/app-universal-foss.apk mihon-${{ needs.get_tag.outputs.tag }}-foss.apk - name: Upload APK uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.gitignore b/.gitignore index 54bb02815..79aff85dd 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ build /captures # Configuration files +keystore.properties local.properties # macOS specific files diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 83387bb3e..818a7f825 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,6 +3,9 @@ import mihon.gradle.getBuildTime import mihon.gradle.getLatestCommitCount import mihon.gradle.getLatestCommitSha import mihon.gradle.tasks.ReplaceShortcutsPlaceholderTask +import java.io.FileInputStream +import java.util.Properties +import kotlin.io.encoding.Base64 plugins { alias(mihonx.plugins.android.application) @@ -20,6 +23,8 @@ if (Config.includeTelemetry) { } } +val keystorePropertiesFile = rootProject.file("keystore.properties") + android { namespace = "eu.kanade.tachiyomi" @@ -38,6 +43,33 @@ android { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } + if (System.getenv("GITHUB_ACTIONS").toBoolean() && System.getenv("GITHUB_REPOSITORY_OWNER") == "mihonapp") { + val tempStoreFile = file(System.getenv("RUNNER_TEMP")).resolve("antsy.keystore") + + val storeFileBytes = System.getenv("storeFileBase64").let(Base64::decode) + tempStoreFile.outputStream().use { it.write(storeFileBytes) } + + signingConfigs { + named("debug") { + storeFile = tempStoreFile + storePassword = System.getenv("storePassword") + keyAlias = System.getenv("keyAlias") + keyPassword = System.getenv("keyPassword") + } + } + } else if (keystorePropertiesFile.exists()) { + val keystoreProperties = FileInputStream(keystorePropertiesFile).use { Properties().apply { load(it) } } + + signingConfigs { + named("debug") { + storeFile = file(keystoreProperties.getProperty("storeFile")) + storePassword = keystoreProperties.getProperty("storePassword") + keyAlias = keystoreProperties.getProperty("keyAlias") + keyPassword = keystoreProperties.getProperty("keyPassword") + } + } + } + buildTypes { val debug by getting { applicationIdSuffix = ".dev" @@ -48,6 +80,8 @@ android { isMinifyEnabled = Config.enableCodeShrink isShrinkResources = Config.enableCodeShrink + signingConfig = debug.signingConfig + proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro") buildConfigField("String", "BUILD_TIME", "\"${getBuildTime(useLatestCommitTime = true)}\"") @@ -68,7 +102,6 @@ android { applicationIdSuffix = ".debug" versionNameSuffix = debug.versionNameSuffix - signingConfig = debug.signingConfig matchingFallbacks.addAll(commonMatchingFallbacks) @@ -82,8 +115,6 @@ android { versionNameSuffix = "-benchmark" applicationIdSuffix = ".benchmark" - signingConfig = debug.signingConfig - matchingFallbacks.addAll(commonMatchingFallbacks) } }