banner



How To Change An App To System App

You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an alternative browser.

What is the right way to turn an app into a system app under Android Oreo and above ?

  • Thread starter Lisadev
  • Start date
  • #1
I have tried several methods to turn an app into a system app but even if in some case I managed to install the app inside /system/priv-app the app was not running as a system app as I could figure out by checking running the command "adb shell ps".
So please could someone tell me if I missed something or if there is some limitation link to Lineage or may be Magisk or TWRP to have an app runing as a system app ?

I have tried with Lineage 15.1 (Oreo) and magisk 21.2 the phone is a Samsung S5 using TWRP 3.5.0_9-0 as system Recovery
First method was to
1 making a copy of the app folder to the internal storage
2 renaming that copied Folder with a short name without dot (like renaming com.example.myapp folder to Myapp Folder)
3 renaming the apk from base.apk to Myapp.apk
4 uninstalling the app
5 under TWRP recovery mode mount the system partiton and copying the Myapp folder to system/priv-app directory
6 chmod 755 Myapp Folder
7 chmod 644 Myapp.apk
8 wipe Dalvilk Cache and rebooting

Steps 2 and 3 might be useless it was just because I noticed the Priv-app directory used these naming Scheme for apps inside this folder
I tried this method also under Lineage 17.1 and Magisk 21.4 but then the phone was not able to reboot until I delete the newly created folder inside Priv-app

I also tried another method using Magisk Systemize (Terminal) module but the result was the same (the app was running but not as a system app)

As I have never seen that it was mentionned in any posted method explaning how to turn an app into a system app, the installed app was not signed with the platform key and the manifest was not including android:sharedUserId="android.uid.system"

Thanks in advance to those that will try to help.

Jellybean4578
  • #2
Have you tried copying it to /system/app ?
  • #3
Have you tried copying it to /system/app ?
Yes and unfortunately the result was exactly the same
jwoegerbauer
  • #4
If DM-Verity & AVB are enabled these locks must get disabled before trying to operate on /system partition
  • #5
If DM-Verity & AVB are enabled these locks must get disabled before trying to operate on /system partition
Thanks but I don't think I have these enabled as I can mount write on the system partition, how do you check whether they are enabled or not ?
jwoegerbauer
  • #6
Newer Android versions have these locks by default enabled - they are set within file vbmeta.img : If enabled then phone's bootloader always loads device's Stock ROM, not any modded ROM where it doesn't matter whether partitions temporarily got mounted - by you - as RW or not.
Long story short: You've to unlock phone's bootloader, if not done yet, then disable the locks

Example code:

                                  adb devices adb reboot fastboot fastboot devices fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img                                
  • #7
I wonder what's the difference between a system app and a common app. :D
jwoegerbauer
  • #8
I wonder what's the difference between a system app and a common app. :D
Apps developed as system app / system privileged app can access System APIs whereas common user app cannot.

Simply installing a common user app as system app / system privleged app makes NO SENSE at all.

  • #9
Newer Android versions have these locks by default enabled - they are set within file vbmeta.img : If enabled then phone's bootloader always loads device's Stock ROM, not any modded ROM where it doesn't matter whether partitions temporarily got mounted - by you - as RW or not.
Long story short: You've to unlock phone's bootloader, if not done yet, then disable the locks

Example code:

                                    adb devices adb reboot fastboot fastboot devices fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img                                  

Thanks but correct me if I'm wrong I could not have installed LineageOS TWRP and Magisk if Dm-verify was active so I don't think it is the issue here. I'm still looking forward what is preventing the app to run as a system app when it is installed in system/priv-app. The app is then running but as a standard app.
jwoegerbauer
  • #10
I'm still looking forward what is preventing the app to run as a system app when it is installed in system/priv-app. The app is then running but as a standard app.
Must admit I don't understand your problem: an app either runs or runs not where it doesn't matter where it's located. That's also true if an app has root rights granted.
IMO only thing of interest is what Android app's permissions are granted. A permission SYSTEM / ALLOW_ALL what I think you expect to be there doesn't exist. See also here:
  • #11
I ran into problems with a couple of methods as well. People said they would work, but they were no good. But do you know what has worked for me, reliably and consistently?

App Systemizer.

Just search for App Systemizer through Magisk. Download and install, then reboot. Now, open up a terminal with superuser privileges. Yeah, gotta use a terminal for this one. Open terminal and enter the command su (in case you didn't know how to get superuser privileges through a terminal). Once you've done that, enter the command systemize and then follow the prompts.

I had problems with other methods. This was the one that worked. Give it a try.

nihitthakkar
  • #12
Start command prompt on your computer to navigate where the APK file is located. Enable USB debugging on your device and connect it to the computer via USB cable. Your phone will automatically rebooted and your app will now be saved as a system app.
  • #13
Must admit I don't understand your problem: an app either runs or runs not where it doesn't matter where it's located. That's also true if an app has root rights granted.
IMO only thing of interest is what Android app's permissions are granted. A permission SYSTEM / ALLOW_ALL what I think you expect to be there doesn't exist. See also here:

Fore instance there is some permissions like REBOOT that require a system app you will not be able to reboot through PowerManager otherwise even if I know you can rebbot by other means on a rooted phone using some su command.
  • #14
I ran into problems with a couple of methods as well. People said they would work, but they were no good. But do you know what has worked for me, reliably and consistently?

App Systemizer.

Just search for App Systemizer through Magisk. Download and install, then reboot. Now, open up a terminal with superuser privileges. Yeah, gotta use a terminal for this one. Open terminal and enter the command su (in case you didn't know how to get superuser privileges through a terminal). Once you've done that, enter the command systemize and then follow the prompts.

I had problems with other methods. This was the one that worked. Give it a try.

Yes thanks but if you read my first post you will see that I have tried Systemizer and it works in the sense that the app in installed inside system/priv-app folder and is able to run but it does not run as a system app
  • #15
Start command prompt on your computer to navigate where the APK file is located. Enable USB debugging on your device and connect it to the computer via USB cable. Your phone will automatically rebooted and your app will now be saved as a system app.
I don't get it, you probable forgot to post something in your message
  • #16
Yes thanks but if you read my first post you will see that I have tried Systemizer and it works in the sense that the app in installed inside system/priv-app folder and is able to run but it does not run as a system app
It doesn't? How can you tell? Maybe I've been missing something all this time. Maybe I only think App Systemizer works.
  • #17
Não entendi, provavelmente você se esqueceu de postar algo em sua mensagem

Hello Friend! This question is a mystery to me. A while ago I created a thread explaining how to turn the Cerberus app into a system app and still survive a factory reset. I can guarantee you that my method worked until about 4 months ago.

This is the thread:


For some reason now I also can't make an apk stay in Priv-app after reboot.

Even after I successfully flash vbmeta.img as described in the link below, I can't get it to work.


The question that everybody wants to hear. Did any methods work for you?
  • #18
At the time of posting this (9th oct, 2021), this method works in my Android 10 (dunno 11, but most prob.)

Used Magisk root

1) First step, make /system writable (google made it read-only) by applying instruction from this thread - https://forum.xda-developers.com/t/script-android-10-universal-mount-system-read-write-r-w.4247311/
This will make sure that folders moved into /system/app or /system/priv-app are permanent across reboots.

2) Install Lucky Patcher (search google to download)

3) Go to Magisk manager and install Lucky Patcher Module for moving apps to system.

4) Normally install the app you are aiming for. Grant it all necessary permissions by going to apps settings. (don't skip this particular step. Skipping it can make permissions not able to grant later on)

5) Go to Lucky Patcher and select the app, select tools option and then select move to /system/priv-app. Tick the use Magisk module checkbox

( No, not done yet. Remember, module only mounts the app, not truly move it to /system/priv-app )

6) Turn off the Lucky Patcher Module in Magisk and reboot. You will notice app has disappeared from system (expected behaviour)(don't skip this step)

7) Open a terminal app.
Type-
su mount -o remount,rw /
After success (may need to reboot),
open a root file manager, go to folder /data/adb/modules/luckypatcher_apps/system

Here, you would find the real apk folder for /system/priv-app as well as the permission configuration for /system/etc/permissions

Copy both folders to respective /system directories.

(we use Lucky Patcher here since it generates correct files with the right permissions, but of course, App Systemizer may also be used, but the steps change and I don't use it, so continue)

8) Go to /data/data folder and delete the app data folder for the app that was moved to /system/priv-app (prevents bugs if any)

9) Reboot phone. Now the app you wanted is fully system privileged with it actually existing in /system/priv-app (can check with TWRP's file manager).
There is no modules like App Systemizer or Lucky Patcher module mounting it. Done.

10) As an aside, just delete the /data/adb/modules/luckypatcher_apps/system folder. Like this, no problem will arise even if you enable this module again for whatever reason.

That's it, all done. Survival across reboots is already a sure thing. Now try to Factory Reset if you want to test if it survives across resets.

*Note - Of course, just make a Nandroid and internal SD backup in case.
Who doesn't want a "Save Game" option in life?

Last edited:
  • #19
System App is not easily uninstalled by user, so it is a type of must have app as a android OS for a specific vendor(HTC, MOTO, Samsung).

Now how we can make an app as a system App.

  1. Have source code
  2. Have .apk Only
Step 1 Create a folder inside packages/apps/
First create a folder for your app ( Let say MyTestApp) inside packages/apps/ of your android AOSP downloaded source code.
Then create a Android.mk file inside the folder(MyTestApp).
Step 2 open Android.mk file and add folowing code Snippet and save this mk file.
Step 3 put your app name in build/target/product/ folder
open core.mk file from build/target/product/ folder and add your app name(MyTestApp) in
PRODUCT_PACKAGES tag at the bottom MyTestApp.

Now step by step procedure for .apk file

Step 1 will be same like above
only change is that in place of src, res folder just put your .apk file.

step 2 open Android.mk file and add folowing code Snippet.
Step 3 will be same as above mention for Android source code (a)
This is all about how to make an android app as a system App.

  • #20
System App is not easily uninstalled by user, so it is a type of must have app as a android OS for a specific vendor(HTC, MOTO, Samsung).

Now how we can make an app as a system App.

  1. Have source code
  2. Have .apk Only
Step 1 Create a folder inside packages/apps/
First create a folder for your app ( Let say MyTestApp) inside packages/apps/ of your android AOSP downloaded source code.
Then create a Android.mk file inside the folder(MyTestApp).
Step 2 open Android.mk file and add folowing code Snippet and save this mk file.
Step 3 put your app name in build/target/product/ folder
open core.mk file from build/target/product/ folder and add your app name(MyTestApp) in
PRODUCT_PACKAGES tag at the bottom MyTestApp.

Now step by step procedure for .apk file

Step 1

will be same like above
only change is that in place of src, res folder just put your .apk file.

step 2 open Android.mk file and add folowing code Snippet.
Step 3 will be same as above mention for Android source code (a)
This is all about how to make an android app as a system App.

This means to compile the ROM yourself?

Similar threads

How To Change An App To System App

Source: https://forum.xda-developers.com/t/what-is-the-right-way-to-turn-an-app-into-a-system-app-under-android-oreo-and-above.4229763/

Posted by: hallplover.blogspot.com

0 Response to "How To Change An App To System App"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel