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"))
|
initWith(getByName("release"))
|
||||||
signingConfig = signingConfigs.getByName("debug")
|
signingConfig = signingConfigs.getByName("debug")
|
||||||
applicationIdSuffix = ".opt"
|
applicationIdSuffix = ".opt"
|
||||||
versionNameSuffix = "-opt"
|
|
||||||
matchingFallbacks += "release"
|
matchingFallbacks += "release"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -240,6 +239,11 @@ androidComponents {
|
||||||
"Wholphin-${variant.flavorName}-${variant.buildType}-${output.versionName.get()}-${output.versionCode.get()}$abi.apk"
|
"Wholphin-${variant.flavorName}-${variant.buildType}-${output.versionName.get()}-${output.versionCode.get()}$abi.apk"
|
||||||
output.outputFileName = outputFileName
|
output.outputFileName = outputFileName
|
||||||
}
|
}
|
||||||
|
if (variant.name == "defaultOptimized") {
|
||||||
|
tasks.withType<Test>().configureEach {
|
||||||
|
systemProperty("wolfskin.optimizedVersionName", variant.outputs.first().versionName.get())
|
||||||
|
}
|
||||||
|
}
|
||||||
if (variant.name == "defaultDebug") {
|
if (variant.name == "defaultDebug") {
|
||||||
val packagedApks = variant.artifacts.get(SingleArtifact.APK)
|
val packagedApks = variant.artifacts.get(SingleArtifact.APK)
|
||||||
val artifactLoader = variant.artifacts.getBuiltArtifactsLoader()
|
val artifactLoader = variant.artifacts.getBuiltArtifactsLoader()
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.github.damontecres.wholphin.test
|
package com.github.damontecres.wholphin.test
|
||||||
|
|
||||||
|
import com.github.damontecres.wholphin.BuildConfig
|
||||||
import com.github.damontecres.wholphin.util.Version
|
import com.github.damontecres.wholphin.util.Version
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
@ -18,6 +19,12 @@ class VersionCompareTests {
|
||||||
val V_0_1_1_5 = Version.fromString("v0.1.1-5-gabc1234")
|
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
|
@Test
|
||||||
fun testIsAtLeast() {
|
fun testIsAtLeast() {
|
||||||
Assert.assertTrue(V_0_2_0.isAtLeast(V_0_2_0))
|
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,
|
The `optimized` build type inherits `release`: R8 optimization/minification,
|
||||||
resource shrinking, non-debuggable code, dependency consumer keep rules and
|
resource shrinking, non-debuggable code, dependency consumer keep rules and
|
||||||
dependency baseline profiles. It changes only signing (the Android debug key),
|
dependency baseline profiles. It changes only signing (the Android debug key),
|
||||||
package (`org.justinvisser.wolfskin.tv.opt`), launcher label (`Wolfskin (Opt)`)
|
package (`org.justinvisser.wolfskin.tv.opt`) and launcher label (`Wolfskin (Opt)`).
|
||||||
and version-name suffix (`-opt`). The launcher icon/banner are unchanged.
|
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
|
`make apk` remains the clean, release-key-signed production build; neither its
|
||||||
signing flow nor the existing debug build changes.
|
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
|
minified Hilt/Room/serialization/JNI runtime safety; exercise sign-in, real
|
||||||
Conductarr reads, artwork, database reopen and each player on the comparison box.
|
Conductarr reads, artwork, database reopen and each player on the comparison box.
|
||||||
`help --task :app:testDefaultOptimizedUnitTest` confirms that this non-debug
|
`help --task :app:testDefaultOptimizedUnitTest` confirms that this non-debug
|
||||||
variant has no JVM unit-test task, just like release. Build logic is checked
|
variant has no JVM unit-test task, just like release. The existing debug JVM
|
||||||
through actual APK assembly and static artifact inspection, not mock unit tests.
|
`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
|
## Upstream v1.1.0 integration
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue