Skip to content

Commit 9d32293

Browse files
committed
Improve GitHub update experience for APK flavors
1 parent e87c31c commit 9d32293

11 files changed

Lines changed: 646 additions & 46 deletions

File tree

.github/workflows/build-release-apk.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ jobs:
9595
echo "Missing one or more NewPipe Material release signing secrets" >&2
9696
exit 1
9797
fi
98-
./gradlew clean assembleFullRelease assembleFdroidRelease --stacktrace
98+
./gradlew clean assembleFullRelease assembleFdroidRelease --stacktrace -DskipFormatKtlint
9999
100100
- name: Verify release APK identities
101101
run: |
@@ -129,8 +129,8 @@ jobs:
129129
exit 1
130130
fi
131131
132-
FULL_APK_NAME="NewPipeMaterial_v${VERSION_NAME}_full.apk"
133-
FDROID_APK_NAME="NewPipeMaterial_v${VERSION_NAME}_fdroid.apk"
132+
FULL_APK_NAME="NewPipe_Material-${VERSION_NAME}-full.apk"
133+
FDROID_APK_NAME="NewPipe_Material-${VERSION_NAME}-fdroid.apk"
134134
FULL_APK_PATH="app/build/outputs/apk/full/release/${FULL_APK_NAME}"
135135
FDROID_APK_PATH="app/build/outputs/apk/fdroid/release/${FDROID_APK_NAME}"
136136
CHANGELOG_PATH="fastlane/metadata/android/en-US/changelogs/${VERSION_CODE}.txt"
@@ -158,7 +158,7 @@ jobs:
158158
if: ${{ github.event_name == 'workflow_dispatch' && (inputs.release_target == 'artifacts' || inputs.release_target == 'all') }}
159159
uses: actions/upload-artifact@v7
160160
with:
161-
name: newpipe-material-signed-release-apks
161+
name: newpipe-material-signed-release-apks-${{ steps.release_info.outputs.version_name }}
162162
path: |
163163
${{ steps.release_info.outputs.full_apk_path }}
164164
${{ steps.release_info.outputs.fdroid_apk_path }}

app/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,14 @@ configure<ApplicationExtension> {
9494
create("full") {
9595
dimension = "distribution"
9696
buildConfigField("boolean", "CAST_ENABLED", "true")
97+
buildConfigField("String", "DISTRIBUTION_FLAVOR", "\"full\"")
98+
manifestPlaceholders["distributionFlavor"] = "full"
9799
}
98100
create("fdroid") {
99101
dimension = "distribution"
100102
buildConfigField("boolean", "CAST_ENABLED", "false")
103+
buildConfigField("String", "DISTRIBUTION_FLAVOR", "\"fdroid\"")
104+
manifestPlaceholders["distributionFlavor"] = "fdroid"
101105
}
102106
}
103107

app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
1212
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
1313
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
14-
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
14+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
15+
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
1516

1617
<!-- We need to be able to open links in the browser on API 30+ -->
1718
<queries>
@@ -155,6 +156,10 @@
155156
android:exported="false"
156157
android:label="@string/recaptcha" />
157158

159+
<meta-data
160+
android:name="org.schabi.newpipe.DISTRIBUTION_FLAVOR"
161+
android:value="${distributionFlavor}" />
162+
158163
<provider
159164
android:name="androidx.core.content.FileProvider"
160165
android:authorities="${applicationId}.provider"

app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ class NewVersionWorker(
3434
)
3535

3636
private fun handleUpdateCheckResult(result: UpdateCheckResult, isManual: Boolean) {
37-
if (!isManual && result.comparison == VersionComparison.NEWER) {
37+
if (
38+
!isManual &&
39+
result.comparison == VersionComparison.NEWER &&
40+
result.release.compatibleAsset != null
41+
) {
3842
showUpdateNotification(result.release, result.installedVersion)
3943
}
4044
}
@@ -66,7 +70,8 @@ class NewVersionWorker(
6670
applicationContext.getString(
6771
R.string.app_update_available_notification_text_material,
6872
release.version,
69-
installedVersion
73+
installedVersion,
74+
NewPipeMaterialUpdateRepository.installedDistributionFlavor()
7075
)
7176
)
7277

@@ -120,6 +125,10 @@ class NewVersionWorker(
120125
applicationContext.getString(R.string.latest_available_changelog_key),
121126
release.body
122127
)
128+
putString(
129+
applicationContext.getString(R.string.latest_available_asset_url_key),
130+
release.compatibleAsset?.browserDownloadUrl.orEmpty()
131+
)
123132
}
124133

125134
return UpdateCheckResult(release, installedVersion, comparison).also {
@@ -153,7 +162,14 @@ class NewVersionWorker(
153162
OUTPUT_COMPARISON to comparison.name,
154163
OUTPUT_LATEST_VERSION to release.version,
155164
OUTPUT_INSTALLED_VERSION to installedVersion,
156-
OUTPUT_RELEASE_URL to release.htmlUrl
165+
OUTPUT_RELEASE_URL to release.htmlUrl,
166+
OUTPUT_RELEASE_DATE to release.publishedAt,
167+
OUTPUT_RELEASE_BODY to release.body,
168+
OUTPUT_ASSET_NAME to release.compatibleAsset?.name.orEmpty(),
169+
OUTPUT_ASSET_URL to release.compatibleAsset?.browserDownloadUrl.orEmpty(),
170+
OUTPUT_ASSET_SIZE to (release.compatibleAsset?.size ?: -1L),
171+
OUTPUT_ASSET_IS_ZIP to (release.compatibleAsset?.isZip ?: false),
172+
OUTPUT_DISTRIBUTION_FLAVOR to NewPipeMaterialUpdateRepository.installedDistributionFlavor()
157173
)
158174
}
159175

@@ -164,6 +180,13 @@ class NewVersionWorker(
164180
const val OUTPUT_LATEST_VERSION = "latestVersion"
165181
const val OUTPUT_INSTALLED_VERSION = "installedVersion"
166182
const val OUTPUT_RELEASE_URL = "releaseUrl"
183+
const val OUTPUT_RELEASE_DATE = "releaseDate"
184+
const val OUTPUT_RELEASE_BODY = "releaseBody"
185+
const val OUTPUT_ASSET_NAME = "assetName"
186+
const val OUTPUT_ASSET_URL = "assetUrl"
187+
const val OUTPUT_ASSET_SIZE = "assetSize"
188+
const val OUTPUT_ASSET_IS_ZIP = "assetIsZip"
189+
const val OUTPUT_DISTRIBUTION_FLAVOR = "distributionFlavor"
167190

168191
/**
169192
* Start a worker which checks GitHub Releases for NewPipe Material updates.

0 commit comments

Comments
 (0)