How To Change An App To System App
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
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.
- #2
- #3
Yes and unfortunately the result was exactly the sameHave you tried copying it to /system/app ?
- #4
- #5
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 ?If DM-Verity & AVB are enabled these locks must get disabled before trying to operate on /system partition
- #6
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
- #8
Apps developed as system app / system privileged app can access System APIs whereas common user app cannot.I wonder what's the difference between a system app and a common app.
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 locksExample 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.
- #10
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.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.
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
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.
- #12
- #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
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 appI 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.
- #15
I don't get it, you probable forgot to post something in your messageStart 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.
- #16
It doesn't? How can you tell? Maybe I've been missing something all this time. Maybe I only think App Systemizer works.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
- #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
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?
- #19
Now how we can make an app as a system App.
- Have source code
- Have .apk Only
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
This means to compile the ROM yourself?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.
Step 1 Create a folder inside packages/apps/
- Have source code
- Have .apk Only
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.
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