Skip to content

Commit 0dba4f0

Browse files
authored
add google play support (#82)
1 parent 2016aa4 commit 0dba4f0

4 files changed

Lines changed: 95 additions & 9 deletions

File tree

.github/workflows/build.yml

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,15 @@ jobs:
1212
config:
1313
- name: Release
1414
lower: release
15+
flavor: standard
1516

1617
- name: Debug
1718
lower: debug
19+
flavor: standard
20+
21+
- name: Release
22+
lower: release
23+
flavor: googlePlay
1824

1925
runs-on: ubuntu-latest
2026

@@ -34,45 +40,77 @@ jobs:
3440
- name: Fix gradle permissions
3541
run: chmod +x ./gradlew
3642

37-
- name: Build project
43+
- name: Build project (standard)
44+
if: ${{ matrix.config.flavor == 'standard' }}
45+
run: |
46+
./gradlew app:assembleStandard${{ matrix.config.name }} \
47+
-Pandroid.injected.signing.store.file="$HOME/release.keystore" \
48+
-Pandroid.injected.signing.store.password="${{secrets.KEYSTORE_PASSWORD}}" \
49+
-Pandroid.injected.signing.key.alias="${{secrets.KEY_ALIAS}}" \
50+
-Pandroid.injected.signing.key.password="${{secrets.KEY_PASSWORD}}"
51+
52+
- name: Build project (Google Play)
53+
if: ${{ matrix.config.flavor == 'googlePlay' }}
3854
run: |
39-
./gradlew app:assemble${{ matrix.config.name }} \
55+
./gradlew app:bundleGooglePlayRelease -PdisableAbiSplits \
4056
-Pandroid.injected.signing.store.file="$HOME/release.keystore" \
4157
-Pandroid.injected.signing.store.password="${{secrets.KEYSTORE_PASSWORD}}" \
4258
-Pandroid.injected.signing.key.alias="${{secrets.KEY_ALIAS}}" \
4359
-Pandroid.injected.signing.key.password="${{secrets.KEY_PASSWORD}}"
4460
4561
- name: Rename universal apk
4662
id: rename_apk_universal
63+
if: ${{ matrix.config.flavor == 'standard' }}
4764
run: |
4865
SHORT_SHA=${GITHUB_SHA::7}
49-
APK_PATH=${{github.workspace}}/app/build/outputs/apk/${{ matrix.config.lower }}/app-universal-${{ matrix.config.lower }}.apk
66+
APK_PATH=${{github.workspace}}/app/build/outputs/apk/standard/${{ matrix.config.lower }}/app-standard-universal-${{ matrix.config.lower }}.apk
5067
OUT_PATH=${{github.workspace}}/geode-launcher-${{ matrix.config.lower }}-$SHORT_SHA.apk
5168
mv $APK_PATH $OUT_PATH
5269
echo "path=$OUT_PATH" >> $GITHUB_OUTPUT
5370
5471
- name: Rename apk
5572
id: rename_apk
73+
if: ${{ matrix.config.flavor == 'standard' }}
5674
run: |
5775
SHORT_SHA=${GITHUB_SHA::7}
58-
APK_PATH=${{github.workspace}}/app/build/outputs/apk/${{ matrix.config.lower }}/app-armeabi-v7a-${{ matrix.config.lower }}.apk
76+
APK_PATH=${{github.workspace}}/app/build/outputs/apk/standard/${{ matrix.config.lower }}/app-standard-armeabi-v7a-${{ matrix.config.lower }}.apk
5977
OUT_PATH=${{github.workspace}}/geode-launcher-${{ matrix.config.lower }}-android32-$SHORT_SHA.apk
6078
mv $APK_PATH $OUT_PATH
6179
echo "path=$OUT_PATH" >> $GITHUB_OUTPUT
6280
6381
- name: Rename mappings
6482
id: rename_mappings
65-
if: ${{ matrix.config.lower == 'release' }}
83+
if: ${{ matrix.config.flavor == 'standard' && matrix.config.lower == 'release' }}
6684
run: |
6785
SHORT_SHA=${GITHUB_SHA::7}
68-
MAPPING_PATH=${{github.workspace}}/app/build/outputs/mapping/${{ matrix.config.lower }}/mapping.txt
86+
MAPPING_PATH=${{github.workspace}}/app/build/outputs/mapping/standardRelease/mapping.txt
87+
OUT_PATH=${{github.workspace}}/mapping-${{ matrix.config.lower }}-$SHORT_SHA.txt
88+
mv $MAPPING_PATH $OUT_PATH
89+
echo "path=$OUT_PATH" >> $GITHUB_OUTPUT
90+
91+
- name: Rename AAB
92+
id: rename_aab
93+
if: ${{ matrix.config.flavor == 'googlePlay' }}
94+
run: |
95+
SHORT_SHA=${GITHUB_SHA::7}
96+
AAB_PATH=${{github.workspace}}/app/build/outputs/bundle/googlePlayRelease/app-googlePlay-release.aab
97+
OUT_PATH=${{github.workspace}}/geode-launcher-${{ matrix.config.lower }}-$SHORT_SHA.aab
98+
mv $AAB_PATH $OUT_PATH
99+
echo "path=$OUT_PATH" >> $GITHUB_OUTPUT
100+
101+
- name: Rename AAB mappings
102+
id: rename_aab_mappings
103+
if: ${{ matrix.config.flavor == 'googlePlay' }}
104+
run: |
105+
SHORT_SHA=${GITHUB_SHA::7}
106+
MAPPING_PATH=${{github.workspace}}/app/build/outputs/mapping/googlePlayRelease/mapping.txt
69107
OUT_PATH=${{github.workspace}}/mapping-${{ matrix.config.lower }}-$SHORT_SHA.txt
70108
mv $MAPPING_PATH $OUT_PATH
71109
echo "path=$OUT_PATH" >> $GITHUB_OUTPUT
72110
73111
- name: Upload release build
74112
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
75-
if: ${{ matrix.config.lower == 'release' }}
113+
if: ${{ matrix.config.flavor == 'standard' && matrix.config.lower == 'release' }}
76114
with:
77115
name: geode-launcher-${{ matrix.config.lower }}
78116
path: |
@@ -82,9 +120,18 @@ jobs:
82120
83121
- name: Upload debug build
84122
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
85-
if: ${{ matrix.config.lower == 'debug' }}
123+
if: ${{ matrix.config.flavor == 'standard' && matrix.config.lower == 'debug' }}
86124
with:
87125
name: geode-launcher-${{ matrix.config.lower }}
88126
path: |
89127
${{ steps.rename_apk_universal.outputs.path }}
90128
${{ steps.rename_apk.outputs.path }}
129+
130+
- name: Upload Google Play build
131+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
132+
if: ${{ matrix.config.flavor == 'googlePlay' }}
133+
with:
134+
name: geode-launcher-google-play
135+
path: |
136+
${{ steps.rename_aab.outputs.path }}
137+
${{ steps.rename_aab_mappings.outputs.path }}

app/build.gradle.kts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ android {
3939

4040
splits {
4141
abi {
42-
isEnable = true
42+
isEnable = !project.hasProperty("disableAbiSplits")
4343
reset()
4444

4545
//noinspection ChromeOsAbiSupport. i'm sorry!
@@ -49,6 +49,21 @@ android {
4949
}
5050
}
5151

52+
flavorDimensions += "distribution"
53+
54+
productFlavors {
55+
create("standard") {
56+
dimension = "distribution"
57+
isDefault = true
58+
buildConfigField("boolean", "GOOGLE_PLAY_BUILD", "false")
59+
}
60+
61+
create("googlePlay") {
62+
dimension = "distribution"
63+
buildConfigField("boolean", "GOOGLE_PLAY_BUILD", "true")
64+
}
65+
}
66+
5267
buildTypes {
5368
release {
5469
isMinifyEnabled = true
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools">
4+
5+
<uses-permission
6+
android:name="android.permission.REQUEST_INSTALL_PACKAGES"
7+
tools:node="remove" />
8+
9+
</manifest>

app/src/main/java/com/geode/launcher/updater/ReleaseManager.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,11 @@ class ReleaseManager private constructor(
331331
}
332332

333333
private suspend fun getLatestLauncherUpdate(): DownloadableLauncherRelease? {
334+
if (BuildConfig.GOOGLE_PLAY_BUILD) {
335+
// don't check for updates on Google Play builds
336+
return null
337+
}
338+
334339
return try {
335340
releaseRepository.getLatestLauncherRelease()
336341
} catch (e: Exception) {
@@ -340,6 +345,8 @@ class ReleaseManager private constructor(
340345
}
341346

342347
suspend fun checkLauncherUpdate() {
348+
if (BuildConfig.GOOGLE_PLAY_BUILD) return
349+
343350
val launcherRelease = getLatestLauncherUpdate() ?: return
344351

345352
// unconditionally track it, we're not using it for checks and it might be good to have
@@ -356,6 +363,8 @@ class ReleaseManager private constructor(
356363
}
357364

358365
fun checkCachedLauncherUpdate() {
366+
if (BuildConfig.GOOGLE_PLAY_BUILD) return
367+
359368
val lastUpdate = PreferenceUtils.get(applicationContext)
360369
.getString(PreferenceUtils.Key.LAST_LAUNCHER_UPDATE) ?: return
361370

@@ -365,6 +374,12 @@ class ReleaseManager private constructor(
365374
}
366375

367376
suspend fun downloadLatestLauncherUpdate(): Result<File> {
377+
if (BuildConfig.GOOGLE_PLAY_BUILD) {
378+
return Result.failure(UnsupportedOperationException(
379+
"Launcher updates are not supported on Google Play builds"
380+
))
381+
}
382+
368383
val update = _availableLauncherUpdateDetails.value
369384
?: getLatestLauncherUpdate()
370385
?: return Result.failure(FileNotFoundException())

0 commit comments

Comments
 (0)