Update the dependencies, and fix what a build was complaining about - #841
Merged
Conversation
The fmt and commons-lang submodules move to the tip of their upstream branches, core-splashscreen to 1.2.0, navigation3 to 1.1.5 and material3 to 1.5.0-alpha25, which is everything in the catalog that was behind. Both libxposed submodules stay where they are, since their only new commit is the API 102 RFC and that belongs with the API work. In CI, ninja moves to 1.13.2 and crowdin.yml's floating action refs are pinned to majors like everywhere else. The NDK pin moves from 29.0.13113456, which is r29 beta 1, to r29 stable at 29.0.14206865. Its clang 21 rejects the lsplant x86 build over duplicate `<emmintrin.h>` definitions arriving through two module fragments, so phmap's SSE2 group scan is switched off for every native module. The rest removes the seventy or so lines a build printed when nothing was wrong. `:hiddenapi:stubs` no longer overrides its Java version to 8. Thirty-three Kotlin deprecations in the manager are migrated: ListItem's headline becomes a trailing content lambda, TabRow becomes PrimaryTabRow, rememberModalBottomSheetState becomes rememberBottomSheetState, and eight icons move to their auto-mirrored versions; two reads that have no replacement are suppressed in place. Vendored and generated Java, along with `:legacy`, compile with javac's notes off, and lsplant's string literal operator template warning is silenced at its target. The `by extra` delegate and AGP's `srcDirs`, both deprecated, are rewritten, and the apksign plugin is replaced by the signing configuration it was applying, since its last release still calls the deprecated `Project.getProperties`. Tested with a clean `./gradlew zipAll` over debug and release, which now prints only its task list. The resulting release zip is installed and running on a Pixel 6 on Android 17. Signing was checked both ways: with a keystore, the manager APK and the certificate compiled into `SignInfo.kt` match; without one, both fall back to the debug key as before. Lint is untouched. It already fails at HEAD with 556 errors, 462 of them missing translations, and no workflow runs it; that backlog needs its own change. Supersedes #824 and #835.
The manager and the daemon both set a minimum of API 27 and both called methods that arrived later, which on 8.1 is a NoSuchMethodError rather than a lint opinion. Every site is now gated on the release that introduced the call, each checked against the platform's own api-versions.xml. `PackageInfo.getLongVersionCode` is API 28, and the int field it replaces was deprecated in the same release, so one of the two is always wrong on a supported device. RepoRepository already carried a private compat helper; it becomes a shared extension, and the app list, both module lists and the store's installed-version check go through it instead of reading the long form unguarded. Reading the old field loses nothing below 28, since a package installed there has no version code major to drop. `FileObserver(List<File>, int)` is API 29, so below that the dex2oat watcher is one observer per node built from the single-path constructor those replaced, and stopping it has to reach both. `LocalServerSocket` only implements `Closeable` from 28, so its socket is closed by hand; the client socket has implemented it since 17 and keeps `use`. Two constants are now spelled out rather than referenced, because on 27 they do not exist to reference: `Telephony.Sms.Intents.SECRET_CODE_ACTION` became public in 28, and `Intent.EXTRA_PACKAGES` in 34. Both carry the same string there — 8.1 broadcasts the secret code action from its hidden `TelephonyIntents` constant, and our own daemon writes the package key as a literal. Lastly `dispatchPackageLoaded` takes the `@RequiresApi(Q)` its callback already declares, so a future caller cannot forget the guard the current one has. Lint reports no NewApi or InlinedApi finding on either variant now, down from twelve.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The fmt and commons-lang submodules move to the tip of their upstream branches, core-splashscreen to 1.2.0, navigation3 to 1.1.5 and material3 to 1.5.0-alpha25, which is everything in the catalog that was behind. Both libxposed submodules stay where they are, since their only new commit is the API 102 RFC and that belongs with the API work. In CI, ninja moves to 1.13.2 and crowdin.yml's floating action refs are pinned to majors like everywhere else.
The NDK pin moves from 29.0.13113456, which is r29 beta 1, to r29 stable at 29.0.14206865. Its clang 21 rejects the lsplant x86 build over duplicate
<emmintrin.h>definitions arriving through two module fragments, so phmap's SSE2 group scan is switched off for every native module.The rest of the first commit removes the seventy or so lines a build printed when nothing was wrong.
:hiddenapi:stubsno longer overrides its Java version to 8. Thirty-three Kotlin deprecations in the manager are migrated: ListItem's headline becomes a trailing content lambda, TabRow becomes PrimaryTabRow, rememberModalBottomSheetState becomes rememberBottomSheetState, and eight icons move to their auto-mirrored versions; two reads that have no replacement are suppressed in place. Vendored and generated Java, along with:legacy, compile with javac's notes off, and lsplant's string literal operator template warning is silenced at its target. Theby extradelegate and AGP'ssrcDirs, both deprecated, are rewritten, and the apksign plugin is replaced by the signing configuration it was applying, since its last release still calls the deprecatedProject.getProperties.The second commit answers what lint was saying underneath that. The manager and the daemon both set a minimum of API 27 and both called methods that arrived later, which on 8.1 is a NoSuchMethodError rather than an opinion:
getLongVersionCodeis API 28,FileObserver's multi-file constructor is 29, andLocalServerSocketonly implementsCloseablefrom 28. Each is now gated on the release that introduced it, checked against the platform's own api-versions.xml, and two constants newer than the minimum are spelled out rather than referenced. NewApi and InlinedApi findings go from twelve to none, on both variants.Tested with a clean
zipAllover debug and release, which now prints only its task list, and the release zip is installed on a Pixel 6 on Android 17. Signing was checked both ways, since the plugin is gone: with a keystore, the manager APK and the certificate compiled intoSignInfo.ktmatch; without one, both fall back to the debug key as before.