Keep optimized versions compatible with upgrade and update parsing
All checks were successful
review/code-gpt Build-only change (new optimized build type, own package, baseline seed, version parser test) read by firstmate; release and debug unchanged; the optimized APK was installed and run on the real box (sign-in, picker, Home, Movies work under R8; 0.4 s cold start, 14x lower p99 frame time than debug); version-suffix defect found on the box and fixed in this head
All checks were successful
review/code-gpt Build-only change (new optimized build type, own package, baseline seed, version parser test) read by firstmate; release and debug unchanged; the optimized APK was installed and run on the real box (sign-in, picker, Home, Movies work under R8; 0.4 s cold start, 14x lower p99 frame time than debug); version-suffix defect found on the box and fixed in this head
This commit is contained in:
parent
59f4a06815
commit
5306f8ddc4
3 changed files with 19 additions and 5 deletions
|
|
@ -138,7 +138,6 @@ configure<ApplicationExtension> {
|
|||
initWith(getByName("release"))
|
||||
signingConfig = signingConfigs.getByName("debug")
|
||||
applicationIdSuffix = ".opt"
|
||||
versionNameSuffix = "-opt"
|
||||
matchingFallbacks += "release"
|
||||
}
|
||||
}
|
||||
|
|
@ -240,6 +239,11 @@ androidComponents {
|
|||
"Wholphin-${variant.flavorName}-${variant.buildType}-${output.versionName.get()}-${output.versionCode.get()}$abi.apk"
|
||||
output.outputFileName = outputFileName
|
||||
}
|
||||
if (variant.name == "defaultOptimized") {
|
||||
tasks.withType<Test>().configureEach {
|
||||
systemProperty("wolfskin.optimizedVersionName", variant.outputs.first().versionName.get())
|
||||
}
|
||||
}
|
||||
if (variant.name == "defaultDebug") {
|
||||
val packagedApks = variant.artifacts.get(SingleArtifact.APK)
|
||||
val artifactLoader = variant.artifacts.getBuiltArtifactsLoader()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.github.damontecres.wholphin.test
|
||||
|
||||
import com.github.damontecres.wholphin.BuildConfig
|
||||
import com.github.damontecres.wholphin.util.Version
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
|
|
@ -18,6 +19,12 @@ class VersionCompareTests {
|
|||
val V_0_1_1_5 = Version.fromString("v0.1.1-5-gabc1234")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun optimizedVersionRemainsCompatibleWithUpgradeAndUpdateChecks() {
|
||||
val optimizedVersion = Version.fromString(requireNotNull(System.getProperty("wolfskin.optimizedVersionName")))
|
||||
Assert.assertEquals(Version.fromString(BuildConfig.VERSION_NAME), optimizedVersion)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIsAtLeast() {
|
||||
Assert.assertTrue(V_0_2_0.isAtLeast(V_0_2_0))
|
||||
|
|
|
|||
|
|
@ -32,8 +32,9 @@ task without changing upstream's test configuration.
|
|||
The `optimized` build type inherits `release`: R8 optimization/minification,
|
||||
resource shrinking, non-debuggable code, dependency consumer keep rules and
|
||||
dependency baseline profiles. It changes only signing (the Android debug key),
|
||||
package (`org.justinvisser.wolfskin.tv.opt`), launcher label (`Wolfskin (Opt)`)
|
||||
and version-name suffix (`-opt`). The launcher icon/banner are unchanged.
|
||||
package (`org.justinvisser.wolfskin.tv.opt`) and launcher label (`Wolfskin (Opt)`).
|
||||
The launcher icon/banner and release-compatible version name are unchanged:
|
||||
the shared upgrade/updater parser rejects extra suffixes such as `-opt`.
|
||||
`make apk` remains the clean, release-key-signed production build; neither its
|
||||
signing flow nor the existing debug build changes.
|
||||
|
||||
|
|
@ -98,8 +99,10 @@ consumer rules rather than adding blanket keeps. JVM tests do not prove
|
|||
minified Hilt/Room/serialization/JNI runtime safety; exercise sign-in, real
|
||||
Conductarr reads, artwork, database reopen and each player on the comparison box.
|
||||
`help --task :app:testDefaultOptimizedUnitTest` confirms that this non-debug
|
||||
variant has no JVM unit-test task, just like release. Build logic is checked
|
||||
through actual APK assembly and static artifact inspection, not mock unit tests.
|
||||
variant has no JVM unit-test task, just like release. The existing debug JVM
|
||||
`VersionCompareTests` receives the actual optimized version name from the variant
|
||||
API and checks it with the same `Version.fromString` used by upgrade/update handling.
|
||||
Build logic is otherwise checked through actual APK assembly and static inspection.
|
||||
|
||||
|
||||
## Upstream v1.1.0 integration
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue