Repository navigation
fix: install boot animation at the product image root - #108
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Diagnosis
The force-published shiba Magisk OTA from run 36007288494 definitely exercised the previous custom-animation path, but the build log contains the clue to why it still does not show:
Adding Directory filesystem entry: /productThe helper had already unpacked
product.imgas its own standalone filesystem. AFSR represents that image from filesystem root/, while Android mounts the completed image at/product. The previous adapter installed/product/media/bootanimation.zipinside product.img, creating a nestedproductdirectory. At runtime that corresponds to/product/product/media/bootanimation.zip, not the path Android probes.This also fits the on-device observations:
ro.product.bootanim.fileis unset, so Android uses the standard product filename;/apex/com.android.bootanimationis not present on the running shiba, so there is no evidence that APEX precedence is masking the product animation.The earlier APEX-bypass experiment has therefore been removed. This PR does not patch the bootanimation executable.
Fix
Keep the existing soft-fork adapter and use the correct per-partition filesystem path:
product.img;/media/bootanimation.zipand/media/bootanimation-dark.zipinside the product filesystem;/product/media/bootanimation.zipand/product/media/bootanimation-dark.zipafter the partition is mounted;/productdirectory inside product.img.Finished-OTA verification
After patching, extract the finished OTA's product.img, AVB-unpack it, AFSR-unpack it, and require:
fs_tree/media/bootanimation.zipexists and exactly matches the deterministic runtime payload;fs_tree/media/bootanimation-dark.zipexists and exactly matches it.A verification failure deletes the candidate OTA and blocks publication.
Selection identity
The boot-animation selection fingerprint includes the adapter contract version
product-image-root-stored-v4, so older broken artifacts with the same source animation cannot satisfy existing-build preflight.Why this is less brittle
This does not modify GrapheneOS/AOSP executable code, search order, properties, or APEX handling. It uses Android's existing standard product boot-animation path and treats the product partition as the mount-root filesystem it is.