Wednesday, April 30, 2025

psa for lsposed users

icymi, lsposed is EOL and dead. the original maintainers haven't done anything with it in a good minute. many people recommend the mywalkb lsposed_mod fork, however it has many issues and features tend to be broken. my personal choice is JingMatrix's lsposed fork which fixes a lot of issues and has overall better support

Tuesday, April 29, 2025

horrifying encounter with google support agent

this is written from the POV of someone with debilitating social anxiety. to my broken-ass brain, this was the most horrifying situation i had been in within the last 24 hours. /hj

i headed into those google one support chats which are purportedly able to assist human-to-human with any question about any google service. that...was a grave misunderstanding. turns out these probably minimum wage-paid guys are really only there to assist in subscriptions and payment for google one itself. why they advertise otherwise? i don't know. maybe i'm in the wrong place. fuck if i know, i'm an idiot, you see.

so i fumble out an explanation with shaking hands (WHY am i afraid of this poor support agent?) and get met with the "I'm here to assist with Google One subscription-related issues." that was the moment my soul left my body. i had spent the past 10 minutes trying to explain a random issue on a google product barely used since the 2000s, and on that note, with a feature that had literally been unmaintained since 2008, probably.

he had no idea what i was talking about. I had no idea what i was talking about. no one had any idea what was going on. my shitty communication skills resulted in a dumbfounded support agent and a dying-inside me, both staring at our screens in sheer confusion.

i panicked and left the chat. this is my daily struggle of mundane tasks. so i sit here...a moron, writing in my handcrafted echo chamber about an insignificant 10 minute experience that will, for some ungodly reason, probably haunt me for the rest of my life.

cool.

Monday, April 28, 2025

pixelifier - fixing aosp

i've developed a simple magisk module. it's called pixelifier. it's a neat little module to make your AOSP-based phone nicer.

features

  • google sans (& text) fonts - properly implemented! roboto is kept intact.
  • fixed clock font with variable weight supported
  • pixel UI sound effects and ringtones included
  • round adaptive icons globally, system-wide
  • lowercase button labels within system applications and system UI

 the module is available on github for download. you can download it from the releases page.

one ui 7 from the pov of a z flip5 user

one ui 7 had some of the biggest hype for a one ui release in a long, long time. partly (mostly) because they took so damn long to release it. android 15 released publicly around september 2024. one ui 7 didn't start rolling out until APRIL 2025.

two hundred and twenty days behind android 15's general release. tack on another 4 days because us Z5 series users wouldn't get it until april 15, 4 days later. one could defend samsung for delaying one ui 7 to "iron out the bugs," but one ui always has bugs. it has never been stable. hell, android 15 itself was pretty buggy on release. one ui 7 would be buggy no matter what.

as for me, i'm pretty sure my device still hasn't gotten it yet. i've got NO updates OTA and no odin-flashable firmware have surfaced. i have the SM-F731U1 XAA model. i ended up flashing the same model, but XAR for the CSC instead no issues for me so far, it works fine on t-mobile/tello's network as far as i can tell.

i'll be posting more as i use this phone more throughout the day, probably.

update: it wiped my face unlock data. woohoo!

Friday, April 25, 2025

using heytap app market globally

something i've been curious about for a bit is the oppo heytap app market. it's part of oppo cloud/heytap services, and is documented as being china-only. though, in recent times it has expanded to a limited extent. notably, to india.

the standard APK you'll find when looking for "heytap app market APK" on google or wherever will typically be said chinese version. shockingly, the app is in chinese.

the version for india, however, is primarily in english. you can discern an india version by checking if the version name is suffixed with _IN. off the bat, it looks mostly like the chinese version.

thing is, it shouldn't.

plenty of bugs are here. search doesn't work, many apps that should be on app market lead to 404 errors (even some featured apps do!) and an abnormally small selection of featured apps in some tabs.

the reason for this is actually quite simple, and it's that your phone is just set to the wrong region. you must have your phone's entire region set to india...which is a shitty requirement and considering you're changing a global, system-wide setting, is bound to cause random, weird issues. your date format is changed, forced to 24-hr (though you can change this back) and some apps prompt to change the region.

you can't even correct the date format. clearly, this is a terrible solution.

though it's not all terrible. once you switch regions, the whole app basically changes.

here's the IN region layout.

search works, and the whole layout changes too. you can access the full library too.

perhaps i might crack open the APK and try to patch it to always request IN region from the server, but knowing oppo, they probably have some crappy anti-tamper software inside this thing to prevent exactly what i'm trying to do.

or maybe they don't, sometimes they lazy out in random places.


Thursday, April 24, 2025

pixel 7(a/pro) supports 32 bit ABI apps

for some ungodly reason, the tensor G2 chip used in pixel devices shipped out around 2022-2023 include a bizarre manual block of armeabi and armeabi-v7a arch executables. pm will refuse to install them, and zygote itself does not support running them.

so why?

frankly, i don't know. preparation for armv9-a? maybe.

the problem with this is the simple fact that the tensor G2 isn't even armv9-a. it's arm64=v8a like most chips had been for the preceding 7-ish years. in consequence, the 32-bit executable block is entirely artificial. the chip can run 32-bit arm instructions natively. google just sucks.

if you want to enable it, check this xda thread (or this github repo if xda is dead) for how. it's basically a patched up version of magisk that fixes up your vendor prop.

inner machinations

the workings from what i read are quite simple. according to this diff, it just checks /vendor/build.prop to see if the in-use zygote (ro.zygote) is zygote64 (64-bit only zygote) and swaps it to zygote64_32. then it checks the if list of compatible ABIs (ro.vendor.product.cpu.abilist) only contains arm64-v8a, then changes it to arm64-v8a,armeabi-v7a,armeabi. lastly, it checks for a blank abilist32 (ro.vendor.product.cpu.abilist32) and sets it to armeabi-v7a,armeabi.

in short, these changes are made:

ro.zygote=zygote64_32

ro.vendor.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi

ro.vendor.product.cpu.abilist32=armeabi-v7a,armeabi

theoretically, one could patch their vendor.img manually and forgo the janky magisk method, and that should enable a way enable 32-bit ABIs on newer android versions, as the magisk version is quite old and unmaintained.

of course, you could just fork magisk and add the necessary patches again....but why?

android.com stuff

quick post

android.com has a sitemap at /sitemap.xml full of probably juicy old content if you like seeing ancient pages.

oneplus frustrations and the "my-" partitions

why in the fucking world did oppo split the system partition into ELEVEN WHOLE PARTITIONS full of random bloatware??

they're not symlink'd into /system, so they're unmodifiable by magisk modules. TWRP doesn't even detect them as valid mounts, and they're erofs formatted to prevent remounting. if you want to gawk at the full list, here you go. i've added what i (think) they're for in parenthesis next to the name.

/mnt/vendor/:

  • my_product (contains base gms apps)
  • my_engineering (fuck if i know)
  • my_stock (contains oppo/oneplus/heytap apps, some of which aren't even used depending on region)
  • my_region (carrier stuff)
  • my_bigball (US/EUR app substitutes, i.e. google dialer, which replaces oppo dialtacts)
  • my_manifest (no clue)
  • my_heytap (probably oppo cloud related resources, this is empty for me because i'm american)
  • my_preload (carrier and ad bloat)
  • my_company (literally no idea, it's structured like a system partition but has nothing inside)
  • my_carrier (more carrier configurations)
  • oplusreserve (configs of some sort??)

WHAT THE ACTUAL FUCK??? why are there SO MANY??? some of these are quite literally empty and useless. others contain apps and data never even used somehow. none of this makes sense?? whoever's idea this was is an evildoer beyond human comprehension. i take this personally. (/j)

DSUs as a simple solution to dualbooting on android

around android 10's release, google introduced a neat new feature called dynamic partitions. a year later, they would go on to further iterate on it, introducing dynamic system updates,

DSUs are basically second OSes. or at least, the user-facing implementation is. android stores a system.img and userdata.img file in the FS at /data/gsi/dsu, which android then proceeds to load as the userdata and system partitions on boot when the DSU reboot is called.

however, it has limitations. on anything other than a pixel, the bootloader must be unlocked before loading even the default google-compiled GSIs offered in developer options. on pixels, the official GSI builds can be loaded while locked, but that's about it. custom ROMs always need an unlocked bootloader, just as they would when you actually try to flash them.

the dev options menu for installing a DSU is, for lack of better words, utter complete shit. the data partition is made the smallest it can possibly be, making it essentially useless once booted. luckily, there's several ways to load a DSU, including through a command-line interface and a handy open source app designed to let you set up a DSU right on your device, given you're at least rooted.

actually using the DSU

with the explanation out of the way, this is their practical functionality. expect no features to work fine out of the box. GSIs are iffy and that's just their nature. they're founded on duct tape, futile prayers and the hope for a nice OEM that gives a half-decent vendor partition. this system is called treble. by now, most manufacturers support it, given it's a GMS certification requirement and has been since at least 2018.

some manufacturers are known for doing a pretty decent job on treble compatibility. google comes to mind, and oneplus isn't that bad. my single (now dead) motorola phone was also quite fine on a GSI. it mostly depends OEM to OEM, and device to device. i like mystic GSI because they offer OEM skins as GSIs, encouraging my unhinged ass to make some cursed devices.

i recommend picking a mystic GSI image with the same chipset as the target device you intend to install it on. the hyperOS image works on both my oneplus 12 and razr 50 ultra (rip), though the op12 has gfx accel issues that make the OS laggy and glitchy. pixel images caused an EDL brick on my op12, so i guess don't do that. i recovered with a force reboot, though.

the oxygenos/coloros images seem to be genuinely fucked. i can't even install them on actual oneplus hardware. oneui images get to the boot screen, even play the boot animation...then they crash. they probably are mostly compatible with xiaomi devices, as i see the dev telegram group full of ximi pics.

is this viable for daily use? NO. i couldn't get radios working in even the google-compiled GSI with my oneplus 12. but it's a cool novelty feature. a solution to a problem nearly no one has, but a welcome one by the people who do have it.