Sign APK with AGP
This commit is contained in:
@@ -42,27 +42,21 @@ jobs:
|
|||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: ./gradlew assembleRelease -Pinclude-telemetry -Penable-updater
|
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:
|
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
|
- name: Rename APK
|
||||||
run: |
|
run: |
|
||||||
set -e
|
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-universal-release.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-arm64-v8a-release.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-armeabi-v7a-release.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-release.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-x86_64-release.apk mihon-x86_64-${{ needs.get_tag.outputs.tag }}.apk
|
||||||
|
|
||||||
- name: Upload APK
|
- name: Upload APK
|
||||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
@@ -98,23 +92,17 @@ jobs:
|
|||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: ./gradlew assembleFoss -Penable-updater
|
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:
|
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
|
- name: Rename APK
|
||||||
run: |
|
run: |
|
||||||
set -e
|
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
|
- name: Upload APK
|
||||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ build
|
|||||||
/captures
|
/captures
|
||||||
|
|
||||||
# Configuration files
|
# Configuration files
|
||||||
|
keystore.properties
|
||||||
local.properties
|
local.properties
|
||||||
|
|
||||||
# macOS specific files
|
# macOS specific files
|
||||||
|
|||||||
+34
-3
@@ -3,6 +3,9 @@ import mihon.gradle.getBuildTime
|
|||||||
import mihon.gradle.getLatestCommitCount
|
import mihon.gradle.getLatestCommitCount
|
||||||
import mihon.gradle.getLatestCommitSha
|
import mihon.gradle.getLatestCommitSha
|
||||||
import mihon.gradle.tasks.ReplaceShortcutsPlaceholderTask
|
import mihon.gradle.tasks.ReplaceShortcutsPlaceholderTask
|
||||||
|
import java.io.FileInputStream
|
||||||
|
import java.util.Properties
|
||||||
|
import kotlin.io.encoding.Base64
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
alias(mihonx.plugins.android.application)
|
alias(mihonx.plugins.android.application)
|
||||||
@@ -20,6 +23,8 @@ if (Config.includeTelemetry) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val keystorePropertiesFile = rootProject.file("keystore.properties")
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "eu.kanade.tachiyomi"
|
namespace = "eu.kanade.tachiyomi"
|
||||||
|
|
||||||
@@ -38,6 +43,33 @@ android {
|
|||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
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 {
|
buildTypes {
|
||||||
val debug by getting {
|
val debug by getting {
|
||||||
applicationIdSuffix = ".dev"
|
applicationIdSuffix = ".dev"
|
||||||
@@ -48,6 +80,8 @@ android {
|
|||||||
isMinifyEnabled = Config.enableCodeShrink
|
isMinifyEnabled = Config.enableCodeShrink
|
||||||
isShrinkResources = Config.enableCodeShrink
|
isShrinkResources = Config.enableCodeShrink
|
||||||
|
|
||||||
|
signingConfig = debug.signingConfig
|
||||||
|
|
||||||
proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro")
|
proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro")
|
||||||
|
|
||||||
buildConfigField("String", "BUILD_TIME", "\"${getBuildTime(useLatestCommitTime = true)}\"")
|
buildConfigField("String", "BUILD_TIME", "\"${getBuildTime(useLatestCommitTime = true)}\"")
|
||||||
@@ -68,7 +102,6 @@ android {
|
|||||||
applicationIdSuffix = ".debug"
|
applicationIdSuffix = ".debug"
|
||||||
|
|
||||||
versionNameSuffix = debug.versionNameSuffix
|
versionNameSuffix = debug.versionNameSuffix
|
||||||
signingConfig = debug.signingConfig
|
|
||||||
|
|
||||||
matchingFallbacks.addAll(commonMatchingFallbacks)
|
matchingFallbacks.addAll(commonMatchingFallbacks)
|
||||||
|
|
||||||
@@ -82,8 +115,6 @@ android {
|
|||||||
versionNameSuffix = "-benchmark"
|
versionNameSuffix = "-benchmark"
|
||||||
applicationIdSuffix = ".benchmark"
|
applicationIdSuffix = ".benchmark"
|
||||||
|
|
||||||
signingConfig = debug.signingConfig
|
|
||||||
|
|
||||||
matchingFallbacks.addAll(commonMatchingFallbacks)
|
matchingFallbacks.addAll(commonMatchingFallbacks)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user