Skip to content

Conversation

Simbiat
Copy link
Contributor

@Simbiat Simbiat commented Sep 21, 2025

Description:

Split from #8096 this adds Smartisan OS

Review

Copy link
Collaborator

@liviuconcioiu liviuconcioiu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove the README.md since this might cause merging conflicts, when multiple PRs are merged. (same for the other PRs)

Also, can you sort the OS versions in descending order?

@Simbiat
Copy link
Contributor Author

Simbiat commented Sep 22, 2025

Done

Comment on lines +623 to +642
- regex: 'SM70[15]'
version: '1.5'
- regex: 'SM801'
version: '2.5'
- regex: 'SM919'
version: '3.0'
- regex: 'YQ60[1357]'
version: '2.0'
- regex: 'DE106[ /;\)]'
version: '6.0'
- regex: 'OE106[ /;\)]'
version: '6.0'
- regex: 'OC10[56][ /;\)]'
version: '6.0'
- regex: 'DT2002C[ /;\)]'
version: '6.0'
- regex: 'DT190[12]A[ /;\)]'
version: '6.0'
- regex: 'Smartisan U3 Pro'
version: '3.0'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those regexes are looking like device fragments, rather than OS fragments. Do those devices not allow updating the OS, are they really fixed to one specific version? 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No idea, I never had one of those. I linked versions based on https://en.wikipedia.org/wiki/Smartisan

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm. Looks like they have listed the latest compatible versions, so it might not be the initial version the device was shipped with. Not sure if that would be detectable taking the reported android version into account 🤔
As Smartisan is a custom android rom I'm also wondering if it can be installed on other devices or if those smartisan devices allow installing other android roms...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean, theoretically all of custom ROMs can be installed on all devices, the question is how difficult it is to do. And whether it matters much for our purposes, I guess. Yes, this does not mean the library can accurately detect OS for these devices, and it won't detect this OS for other devices (yet), but that's arguably true for other niche items as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. That might be a more general decision I guess. We currently haven't maintained any OS based on device fragments. @liviuconcioiu @sanchezzzhak What is your opinion on that?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think is best to only detect OS name in this case, since devices allow upgrades.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so should I remove versions from everywhere?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Smartisan OS is a custom shell (user interface) developed by Smartisan Technology (founded by Luo Yonghao), which is layered on top of the Android operating system. Smartisan OS is not a separate OS, but a heavily customized Android shell, similar to MIUI, EMUI or ColorOS.

Compare list:

Smartisan OS base Android
Smartisan OS 1.0 Android 4.2 (Jelly Bean)
Smartisan OS 2.0 Android 4.4 (KitKat)
Smartisan OS 3.0 Android 5.1 / 6.0 (Lollipop / Marshmallow)
Smartisan OS 3.1–3.6 Android 6.0 – 7.1 (Marshmallow / Nougat)
Smartisan OS 4.0–4.2 Android 7.1 – 8.1 (Nougat / Oreo)
Smartisan OS 5.0–5.1 Android 8.1 – 9 (Oreo / Pie)
Smartisan OS 6.0–6.6 Android 9 – 10 (Pie / Android 10)
Smartisan OS 7.0–7.2 Android 10 – 11
Smartisan OS 8.0–8.2 Android 11 – 12
Smartisan OS 9.0+ Android 12 – 13 (on some devices, for example, on new models under the Nut brand, such as the Nut R2/R3)

OTHER

🔹 Official UI Skins from Smartphone Manufacturers

Manufacturer UI Name Based on Android Key Features
Samsung One UI (formerly TouchWiz, Samsung Experience) Android 9+ Clean, user-friendly interface; deep integration with Samsung ecosystem; DeX support; Knox security
Xiaomi / Redmi / POCO HyperOS (since 2023) / formerly MIUI Android 10–14 Rich customization, themes, historically included ads; frequent updates
Huawei HarmonyOS (on newer devices) / formerly EMUI EMUI — based on Android; HarmonyOS — proprietary OS with Android compatibility EMUI — feature-rich but lacks Google services post-2019; HarmonyOS — transition to an independent platform
OPPO ColorOS Android 10–14 Vibrant design, smooth animations, gaming-focused features
vivo OriginOS (China) / Funtouch OS (Global) Android 10–14 OriginOS — minimalist, innovative UI with “atomic” widgets
Realme Realme UI Android 10–14 Based on ColorOS but with a simplified design targeting younger users
OnePlus OxygenOS (Global) / ColorOS (China since 2021) Android 10–14 Previously known for near-stock Android; now closer to ColorOS
Motorola My UX (formerly near-stock Android) Android 11–14 Minimalist, close to stock Android, with useful additions (e.g., gesture controls)
Sony Nearly stock Android + proprietary apps Android 10–14 Very close to AOSP, minimal modifications
Google Stock Android (on Pixel devices) Pure Android The most “original” Android experience with exclusive Pixel features (e.g., Call Screen, Magic Eraser)
Nothing Nothing OS Android 12–14 Unique transparent design elements and Glyph Interface
ZTE / Nubia MyOS (formerly MiFavor UI) Android 10–14 Gaming-oriented features (especially on Nubia devices)
ASUS ZenUI → now nearly stock Android Android 10–14 Previously bloated; now streamlined and minimal
Lenovo / Motorola See Motorola above Lenovo (non-Motorola) uses ZUI in China

If we plan to add Smartisan OS, I would change the structure of the versions section to mapping

Example:

- regex: 'Smartisan[_ ]|(SM(?:70[15]|801|919)|YQ60[1357]|DT2002C|DE106|DT190[12]A|O[CE]106|OC105)[ /;\)]'
  name: 'Smartisan OS'
  versions:
      - regex: 'Android 4.2'
         version: '1'
      - regex: 'Android 10'
        version: '7.2'

The only thing we've added to the OS by model is FireOS.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know that it's not a separate OS, but to me it looks like all Android "skins" are still considered "ROMs", which implies that they are different versions of the OS, similar to how different Linux distros are different versions of Linux (even if we forget that Android is one, too). Otherwise these would be launchers. The scope of changes may be small, I agree, but still.

So question is more broad: should custom ROMs be treated as separate OSs or not, thus implying that information for other devices may need updating as well? IMHO - yes, but do not enforce it because of difficulty of detection and maintenance. If it is known that a certain device (or a set of devices) had a certain version of the OS with relative "uniqueness" - add it to the library. If not - identify it as generic Android.

For Smartisan OS specifically, I think it would mean that we use regex to match both model and Android version where possible, and match only Android version where it's a 1-to-1 match (so most likely oldest versions and maybe the latest one).

If that's fine I can update this PR, and can try to do a separate PR for ROMs from the list above and from https://en.wikipedia.org/wiki/List_of_custom_Android_distributions (where possible, and not too time-consuming).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants