Delete the 16 KB plugin, state the API floor, release 1.4.0 - #258
Merged
Conversation
Closes #255. plugins/withAndroid16KBSupport.js is removed. It never affected 16 KB page support: the gradle property it filtered out is absent from the Expo template on both SDK 54, where the plugin was written, and SDK 57, so the filter removed nothing, and its only net effect was adding android.enableJetifier=true -- a Support Library rewriting flag unrelated to page size. Measured on both artifacts before deleting. Debug APK and release AAB, each built with and without the plugin: not one of 100 native libraries differs, and BundleConfig.pb is byte-identical. Both control builds also succeeded without Jetifier, so nothing here needed it. The app is 16 KB ready and stays that way: every 64-bit .so links with PT_LOAD alignment 16384 and the manifest carries extractNativeLibs="false". What actually answered the Play Store notice was the compileSdkVersion / targetSdkVersion / buildToolsVersion 35 bump in the same commit, 9d3668a. Those pins were dropped again in 5c24c26, and compliance survived only because Expo's own default had moved past 35 by then. Nothing in the repo said the requirement existed, so a lower compileSdkVersion would have dropped 16 KB support silently. expo-build-properties now pins compileSdkVersion and targetSdkVersion at 36, which is what Expo SDK 57 already resolves to, so the generated project is unchanged apart from Jetifier going away. __tests__/androidSdkFloor.test.ts is what notices if either slips below 35, and it fails when they do. Raising them on an SDK upgrade is expected; lowering them is the thing that must not pass quietly. Version goes to 1.4.0 in package.json and app.json, which are kept in step by hand. eas.json sets appVersionSource remote with autoIncrement, so EAS owns versionCode. 1.4.0 rather than 1.3.1 because this is not only fixes: the CSV export's birth_control notes column changed from "Time Taken: X Notes: Y" to "Time: X, Notes: Y" when the two export formats were reconciled, and a patch release would imply there is nothing to notice. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Closes #255.
The plugin goes
plugins/withAndroid16KBSupport.jsnever affected 16 KB page support. The gradle property its filter removed —android.bundle.enableUncompressedNativeLibs— is absent from the Expo template on both SDK 54, where the plugin was written, and SDK 57. So the filter removed nothing, and the plugin's only net effect was addingandroid.enableJetifier=true, a Support Library rewriting flag unrelated to page size.Measured on both artifacts before deleting — debug APK and release AAB, each built with and without it:
Both control builds also succeeded without Jetifier, so nothing in the dependency tree needed it.
The app is 16 KB ready and stays that way: every 64-bit
.solinks withPT_LOADalignment 16384, and the bundle manifest carriesextractNativeLibs="false"so those libraries are mapped rather than extracted.The API floor becomes explicit
@adulbrich recalled this originated in a Play Console notice, which turned out to be the key to the whole thing. What answered that notice was the
compileSdkVersion/targetSdkVersion/buildToolsVersion35 bump in the same commit (9d3668a) — build against API 35 and AGP and the NDK do the alignment for you. The plugin rode along.Those pins were then dropped in
5c24c26, and compliance survived only because Expo's own default had moved past 35 by then. Nothing in the repo said the requirement existed, so anything setting a lowercompileSdkVersionwould have dropped 16 KB support with no signal — and the plugin would not have caught it, having never touched page size.expo-build-propertiesnow pinscompileSdkVersionandtargetSdkVersionat 36, which is what Expo SDK 57 already resolves to. Verified by prebuild: the generated project is unchanged apart from Jetifier going away.__tests__/androidSdkFloor.test.tsis what notices if either slips below 35. Confirmed it fails when they do:Raising the pins on an SDK upgrade is expected. Lowering them is the thing that must not pass quietly.
Version 1.4.0
package.jsonandapp.jsonboth go to 1.4.0; they are kept in step by hand.eas.jsonsetsappVersionSource: "remote"withautoIncrement, so EAS ownsversionCode— the last store build wasversionCode 12 / 1.3.0.1.4.0 rather than 1.3.1 because this is not only fixes. Reconciling the two export formats changed the CSV's
birth_control.*.notescolumn fromTime Taken: X Notes: YtoTime: X, Notes: Y, and a patch release would imply there is nothing to notice. Everything else since 1.3.0 is internal work plus nine user-visible defect fixes — stale calendar filters, the day-tap prediction refresh, the flow ring's timezone window, pregnancy weeks past full term, the notes marker, CSV quote escaping, PDF month ordering on non-English locales, and the first-launch migration race.Verification
npm test,npm run typecheck,npm run lintall pass. 407 tests.Not smoke-tested on a device for this change: the plugin's removal is covered by the two artifact comparisons above, and the SDK pins were verified through prebuild rather than inferred. If you are publishing from this, a release build through EAS is the real check.